• 移除在 ESM 模式生成的严格模式

    起源

    项目升级构建方式,以前的代码采用 AMD 风格组织代码,并使用 r.js 完成打包优化工作。后续成员选择采用 ES6 的风格编写代码,然后 webpack + babel 完成打包构建。迁移工作并不如想象中那么容易,终于完成各种配置,测试时候发现问题:抛出一个语法错误。错误很快被定位,属于历史代码的不规范写法,之所以现在暴露出来是因为新的构建方式会加入 "use strict"

    严格模式

    在编写代码的过程中,我们使用 strict mode 是一种很好的方式,严格模式会将 JavaScript 陷阱直接变成明显的错误,比如未声明导致的全局变量,可以让我们开发过程中就发现错误。

    众所周知,JavaScript 这门语言之前存在大量不好的设计,使用严格模式意味着在采用一种限制性更高的方式编写代码,同时更 “安全”。但这里所谓的安全在生产环境又可能是另外一回事,尤其是对于那些上了年纪的历史代码,我们更倾向于在生产环境去除严格模式。

    ES2015+

    现在大部分人已经在使用更强大,更具有表现力的 ES2015+ 编写代码。可能还会使用到 babel 来转化成用于生产环境运行的代码,在使用 preset es2015 时,会自动加入 “use strict”

    babel 的处理方式是将 ES2015 模块转换成 CommonJS 格式的,然后再统一处理,即 transform-es2015-modules-commonjs,这个插件位于 preset es2015 中,并且依赖于 transform-strict-mode

    也许你会想去掉严格模式

    也许你会想去掉严格模式,毕竟对于一些历史代码,很难预测加入严格模式会导致什么异常。

      ...


  • 编写现代 JavaScript 代码

    原文作者:Sébastien Castiel

    原文链接:Writing modern JavaScript code

    说点什么:这是一篇很朴素的文章,讲的道理都懂,但实际上,在工作中遇到类似的情形却未必如此,编写可维护,可阅读,更安全的代码是我们应有的责任。

    是不是还认为 JavaScript 是一门用于在光标悬浮时改变页面元素的语言?这些日子已经不复存在,每一种语言都在随着时间推移而发展,我们使用语言的方式同样也在发展。看一下你一两年前写的代码:会感到羞愧吗?如果是的话,这篇文章应该很适合你。

    这里会列出一些所谓的最佳实践,目的是让你的 JavaScript 代码更容易编写,阅读和维护。

    使用可格式化代码的 linter

    第一个建议是使用 linter 工具,可以帮助你检查在不同文件是否遵守一致的规则,尤其是当不同开发人员在同一个项目上工作:缩进,括号中的空格,替换 =====

    但更重要的是,尽可能使用 linter 工具自动修复代码。ESLint 就做得很好(带有 --fix 选项),而且与所有主流 IDE 完美集成,可以在保存时自动修复文件。

    还可以使用 Prettier,不过这款工具更注重格式化而不是静态检查,但处理后的结果基本相同。

    下一步将介绍与 linter 工具一起使用的规则:

    为你的 linter 定制现代化的规则

    如果不知道你的代码需要什么样的规则,可以参考:


  • ELSE 技术周刊(2017.06.02期)

    业界动态

    Node 8 Released

    Node 8 已经发布,带来一系列重大变化和更新,同时 NPM 也更新到 5.0.0。

    What are the differences between the lockfiles of Yarn and npm 5?

    NPM 5 重新设计 shrinkwrap,命名为锁包,跟 Yarn 的锁文件有什么区别呢?

    TIOBE Index for May 2017

    值得关注的是 Go 的排名,从前一年的第 42 名上升到第 16 名!

    技术纵横


  • JavaScript 模块化现状

    原文作者:Johannes Ewald @Jhnnns

    原文链接:The state of JavaScript modules

    已获原作者授权翻译及发布

    ESM, CJS, UMD, AMD — 到底应该选择哪一个?

    最近 在 twitter 上有很多关于 ES Module 现状的讨论,尤其是在 Node.js 上,他们计划引入新的文件扩展名 *.mjs。人们有足够理由对此感到 担忧和不确定,因为这个话题异常复杂,接下来会尽力阐述清楚问题。

    来自远古的恐惧

    大多数前端开发者应该还记得 Javascript 依赖管理的黑暗时期。那个时候,你需要把一个库复制粘贴到 vendor 文件夹,然后作为一个全局变量引入,要自己去按次序组合所有东西,可能还要管理命名空间。

    在过去的那些年,我们能深刻体会到公共模块格式化和中央模块管理的价值。

    在今天,不管是发布还是使用一个库都要容易得多,只需要使用 npm publishnpm install...


  • JS/React 开发者的 Atom 终极配置

    原文作者:Elad Ossadon

    原文链接:The Ultimate Atom Editor Setup (+for JS/React)

    根据多年以来不断完善 Sublime Text 配置的经验,决定这次给 Atom 也来一个大改造。这个过程花费了好几个月的时间,但成果还是很卓有成效的,我现在非常满意这份配置。

    这份清单将分为实用工具和 React 专用,并涉及到快捷键绑定。

    实用工具

    atom-beautify

    可以在 Atom 中 美化 HTML,CSS,JavaScript,PHP,Python,Ruby,Java,C,C ++,C#,Objective-C,CoffeeScript,TypeScript,Coldfusion,SQL等。

    快捷键:⌃+⌥+B

    prettier-atom

    使用 Prettier 来格式化 JavaScript 代码,配有强大的 ESlint 集成。

    快捷键:⌃+⌥+F

    atom-transpose

    Atom...