W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
很多時候是在 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.
在 Node.js 環(huán)境下開發(fā),有時候邏輯比較復(fù)雜,有各種條件判斷,或者有一些異步操作,這些都會增加代碼的縮進。
為了不至于讓縮進占用了太多的列寬,建議使用 2 個空格作為縮進。
ES6 中有大量的語法糖可以簡化我們的代碼,讓代碼更加簡潔高效。 Node.js 最新版本已經(jīng)較好的支持了 ES6 的語法,即使有些語法不支持,也可以通過 Babel 編譯來支持。 所以是時候使用 ES6 語法來開發(fā)項目了。
使用 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
基類。
雖然現(xiàn)在的 Node.js 版本已經(jīng)支持了很多 ES6 的特性,但這些特性現(xiàn)在還只是實現(xiàn)了,V8 里還沒有對這些特性進行優(yōu)化。如:*/yield
等功能。
所以建議使用 Babel 來編譯,一方面可以使用 ES6 和 ES7 幾乎所有的特性,另一方面編譯后的性能也比默認支持的要高。
*/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 編譯來運行。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: