WindowsMac 系统下,文件路径是不区分大小写的,而 Linux 下是区分大小写的。这样很容易出现文件大小写的问题导致开发环境下是好的,但上线后却报错了。

    为了避免这种情况的发生,文件路径尽量都使用小写字符。并且在服务启动时,ThinkJS 会检测项目下文件路径,如果有大写字母则会告警,如:

    缩进使用 2 个空格

    在 Node.js 环境下开发,有时候逻辑比较复杂,有各种条件判断,或者有一些异步操作,这些都会增加代码的缩进。

    为了不至于让缩进占用了太多的列宽,建议使用 2 个空格作为缩进。

    ES6 中有大量的语法糖可以简化我们的代码,让代码更加简洁高效。 Node.js 最新版本已经较好的支持了 ES6 的语法,即使有些语法不支持,也可以通过 Babel 编译来支持。 所以是时候使用 ES6 语法来开发项目了。

    不要使用 constrcutor 方法

    但如果不使用 ES6 里的 class,就没有 constrcutor 方法了。

    为了统一处理,ThinkJS 提供了 init 方法来代替 方法,该方法不管是在 class 下还是动态创建类的情况下都可以做到类实例化的时候自动被调用。

    :ThinkJS 里所有的类都会继承 think.base 基类。

    虽然现在的 Node.js 版本已经支持了很多 ES6 的特性,但这些特性现在还只是实现了,V8 里还没有对这些特性进行优化。如:*/yield 等功能。

    所以建议使用 Babel 来编译,一方面可以使用 ES6 和 ES7 几乎所有的特性,另一方面编译后的性能也比默认支持的要高。

    使用 async/await 替代 */yield

    相对 async/await*/yield 有以下的缺陷:

    1、 调用后返回一个迭代器,需要借助第三方模块来执行。如:co

    2、*/yield 无法和 Arrow Function 一起使用。

    3、/yield 调用另一个 /yield 时,需要使用 yield *,带来不便。

    4、目前 V8 对 */yield 还没有做优化,最好也通过 Babel 来编译。