求问如何优雅的在微信小程序里使用 ES7?

2016-10-20 20:26:47 +08:00
 zhouquanbest

作为一个前端小白,周末开始试着写下坑爹的微信小程序,想用 ES7 来写,避免 callback hell 。

开始尝试用 babel 编译,然后发现没有 runtime ,需要 babel-polyfill 。于是用 babel-runtime-transform-runtime 来添加 async 和 generator 的转换。结果发现这货转换后在源码里就添加了俩 require 。由于微信小程序的 require 不支持 npm ,我又尝试用 webpack 来把他们打包在一起。最后又遇到了坑爹的 polyfill 里用到了大量微信小程序里没有的东西,比如 global 什么的。

看了些 github 上的轮子,大体是把缺的东西自己造一套,或者改下 babel 源码。感觉还是不太优雅,不知道各位前端菊苣有啥黑科技能解决这个问题。
因为不是太熟前端,各种搜也只想到了这些方案,都不是太如意。
还请赐教

(微信的朋友就不能让你们家 require 支持下搜索路径吗,只能用相对路径来写太不“工程化”了

14585 次点击
所在节点    JavaScript
25 条回复
bdbai
2016-10-20 20:38:42 +08:00
楼主可以试下 Promise ,不一定要用 async/await 。参考:
https://cnodejs.org/topic/57eb4e4bea2fa420446d4371#57ebf400ea2fa420446d43b5
xxxyyy
2016-10-20 20:47:02 +08:00
避免 callback hell ,用 promise 已经可以了。
zhuangzhuang1988
2016-10-20 20:58:08 +08:00
ts 上 babel 太乱。。
xieguanglei
2016-10-20 20:59:48 +08:00
promise 太丑, async/await 大法好
zhouquanbest
2016-10-20 21:18:39 +08:00
@bdbai 微信小程序里也是没 promise 的 需要 babel 添加
promise 肯定用 只是 es7 的 async 比起 es6 还要用 co 好太多
bdbai
2016-10-20 21:25:58 +08:00
@zhouquanbest 参考的帖子评论里有写引入 Bluebird 的方式。
我记得有人写过把 async/await 转换成 Promise 调用的 Babel 插件,不知道为什么官方没提。
yidinghe
2016-10-20 21:30:22 +08:00
怪不得人们说最喜欢折腾的就是前端。
4641585
2016-10-20 21:53:35 +08:00
@yidinghe 这次是刚需就别强行黑了吧。
zhouquanbest
2016-10-20 21:56:02 +08:00
微信小程序官方文档里说要自行引入 polyfill
我当时就懵逼了 这要怎么引入咧
bdbai
2016-10-20 22:01:11 +08:00
@zhouquanbest 语法层面的转换不需要 babel-polyfill ,单独引入 Bluebird 作 Promise 库就行。方法见链接评论。
poke707
2016-10-20 23:03:35 +08:00
ES7 和 ES2017 ,大家好像搞混了

ES7 是 ES2016 ,没有 async function
http://www.2ality.com/2016/01/ecmascript-2016.html
zhouquanbest
2016-10-21 00:04:42 +08:00
@poke707 es7/es2016 有 async 啊
我就是用 babel es2016 编译的 node 可用
https://huangxuan.me/2015/09/22/js-version/
zhouquanbest
2016-10-21 00:35:14 +08:00
@poke707
刚看了下 原来 async 最后没来的及进 es7 最终版
不过各种轮子已经默认把 async 塞进了 es7 里 用还是能用
crs0910
2016-10-21 01:04:50 +08:00
大声说出前端回调超过两层的场景
murmur
2016-10-21 07:54:47 +08:00
微信小程序本身就小程序 你还要构建那么深的逻辑 该电一下了
没有用户 跑在沙河里 不能做全家桶 一个纯展示 点点填填表的东西 至于那么复杂么
acthtml
2016-10-21 09:10:45 +08:00
现在做下来,微信小程序最大的障碍就是大小只有 1M 。
surgit
2016-10-21 09:23:35 +08:00
@xieguanglei 然后现在 async 还是返回 promise.
cycgit
2016-10-21 09:34:46 +08:00
前端小应用完全不用担心 callback 。 不会那么深的
xieguanglei
2016-10-21 09:38:00 +08:00
@surgit 工具爱怎么处理怎么处理,只要源码里别用 promise 就可以 ^^
Pastsong
2016-10-21 10:12:48 +08:00
关于前端为了用一个新语言特性在开发环境引入几十个依赖并且造了一个轮子的故事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/314248

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX