99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

ThinkJS 代碼規(guī)范

2021-09-17 10:22 更新

代碼規(guī)范

文件路徑必須小寫

很多時候是在 Windows 或者 Mac OSX 系統(tǒng)下開發(fā)項目,但一般都部署 Linux 系統(tǒng)下。

在 Windows 和 Mac 系統(tǒng)下,文件路徑是不區(qū)分大小寫的,而 Linux 下是區(qū)分大小寫的。這樣很容易出現(xiàn)文件大小寫的問題導(dǎo)致開發(fā)環(huán)境下是好的,但上線后卻報錯了。

為了避免這種情況的發(fā)生,文件路徑盡量都使用小寫字符。并且在服務(wù)啟動時,ThinkJS 會檢測項目下文件路徑,如果有大寫字母則會告警,如:

[2015-10-13 10:36:59] [WARNING] filepath `admin/controller/apiBase.js` has uppercases.

縮進使用 2 個空格

在 Node.js 環(huán)境下開發(fā),有時候邏輯比較復(fù)雜,有各種條件判斷,或者有一些異步操作,這些都會增加代碼的縮進。

為了不至于讓縮進占用了太多的列寬,建議使用 2 個空格作為縮進。

使用 ES6 語法開發(fā)

ES6 中有大量的語法糖可以簡化我們的代碼,讓代碼更加簡潔高效。 Node.js 最新版本已經(jīng)較好的支持了 ES6 的語法,即使有些語法不支持,也可以通過 Babel 編譯來支持。 所以是時候使用 ES6 語法來開發(fā)項目了。

不要使用 constrcutor 方法

使用 ES6 里的 class 來創(chuàng)建類的時候,可以使用 constrcutor 方法達到類實例化的時候自動調(diào)用。如:

export default class think.base {
  constructor(){
    ...
  }
}

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

為了統(tǒng)一處理,ThinkJS 提供了 init 方法來代替 constrcutor 方法,該方法不管是在 class 下還是動態(tài)創(chuàng)建類的情況下都可以做到類實例化的時候自動被調(diào)用。

export default class think.base {
  /**
   * 初始化方法,類實例化時自動被調(diào)用
   * @return {} []
   */
  init(){
    ...
  }
}

注: ThinkJS 里所有的類都會繼承 think.base 基類。

使用 Babel 編譯

雖然現(xiàn)在的 Node.js 版本已經(jīng)支持了很多 ES6 的特性,但這些特性現(xiàn)在還只是實現(xiàn)了,V8 里還沒有對這些特性進行優(yōu)化。如:*/yield 等功能。

所以建議使用 Babel 來編譯,一方面可以使用 ES6 和 ES7 幾乎所有的特性,另一方面編譯后的性能也比默認支持的要高。

使用 async/await 替代 */yield

*/yield 是 ES6 里提出一種解決異步執(zhí)行的方法,它只是一個過渡的方案,ES7 里便提出了 async/await 來代替它。

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

1、*/yield 調(diào)用后返回一個迭代器,需要借助第三方模塊來執(zhí)行。如:co

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

3、*/yield 調(diào)用另一個 */yield 時,需要使用 yield *,帶來不便。

4、目前 V8 對 */yield 還沒有做優(yōu)化,最好也通過 Babel 來編譯。

所以完全可以使用 ES7 里的 async/await 來代替 */yield,然后使用 Babel 編譯來運行。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號