Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在JDF项目中使用ES6新特性开发 #2

Open
loveky opened this issue Dec 19, 2015 · 2 comments
Open

在JDF项目中使用ES6新特性开发 #2

loveky opened this issue Dec 19, 2015 · 2 comments
Labels

Comments

@loveky
Copy link
Owner

loveky commented Dec 19, 2015

Note: 目前虽然JDF已经支持使用ES6开发脚本,但线上使用还在前期摸索阶段,请大家根据自己项目实际情况评估使用情况

最近利用业余时间给JDF增加了ES6代码的支持。背后的原理是在项目构建阶段利用Babel.babel文件转译成ES5代码。关于Babel的更多使用方法可以参考其官网的配置文档

下面开始正式介绍在利用ES6特性开发前的准备工作:

  • 升级JDF到最新版本(>= 1.8.2)
  • 进入JDF项目目录,安装基本的Babel presetplugin。关于presetplugin的更多说明请参考文档
npm install babel-preset-es2015
npm install babel-plugin-transform-es3-member-expression-literals
npm install babel-plugin-transform-es3-property-literals
  • 配置项目的.gitignore文件,忽略node_modules目录。在文件中添加以下内容:
**/node_modules/

至此,所有的准备工作就完成了。接下来就可以利用ES6的各种新特性开发了。需要注意的是所有包含了ES6特性的脚本文件扩展名必须.babel,否则JDF是不会对其进行编译的。

最后是一份简单的FAQ:

Q: ES6都有哪些新特性,有没有推荐的学习资料?
当然有,中文版的有阮一峰出品的ECMAScript 6入门
英文的有:

  • ES6 In Depth来自Mozilla团队博客的一系列文章,每篇讲解一个新特性。建议按时间顺序阅读。
  • Understanding ECMAScript 6来自Nicholas C. Zakas大神的一本ES6小书。

Q: 我想使用额外的Babel plugin或preset该怎样配置?
只需在package.json中指定需要额外引入的plugin或preset,例如:

    "babel": {
        "plugins": ["syntax-async-functions","transform-regenerator"],
        "presets": ["stage-0"]
    }

并在JDF项目的目录中安装相关npm package即可。

Q: .babel文件编译出来的代码我看不懂,出了问题如何调试呢?
我们看到的经过Babel转译后的JS是这样的:
此处输入图片的描述

这里包含了大量的Babel生成的代码,非常不利于调试。不过不用担心,JDF在本地开发模式中启用了sourceMap,你只需在Chrome开发者工具中的Sources Tab中在你要调试的JS文件目录下找到同名的.babel文件即可。相关JS中的报错信息,都会被映射到转译前的.babel文件的对应位置。

关于sourceMap的更多信息请参考这里

此处输入图片的描述

@keelii
Copy link

keelii commented Dec 19, 2015

本地调试用 sourcemap 还好,像咱这种服务器 combo 的方案,线上调试就不太好做,一大堆 sourcemap 到底要不要传到 cdn 呢。

@loveky
Copy link
Owner Author

loveky commented Dec 19, 2015

sourcemap肯定不能上cdn,这属于泄露源码了,虽然前端代码本来也什么秘密可言

其实是可以考虑上传到预发环境的 但是sourcemap是预生成的 而combo是在服务器上拼的 这块不是一一对应的

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants