2.0 在架構和特性上都完全進行了重寫,是個顛覆式的版本,所以無法直接從 1.x
升級到 2.0
版本的。
2.0 默認使用按模塊進行項目結構劃分的,與 1.x 在目錄結構有一些差別。如果想 2.0 下使用類似 1.x 的項目結構,可以在創(chuàng)建項目的時候指定 --mode=normal
。如:
thinkjs new demo --mode=normal
1.x 里文件名使用駝峰的方式,如:Controller/indexController.js
。2.0 里嚴格遵循 Node.js 社區(qū)的規(guī)范,文件路徑使用小寫的方式,并且文件名去除了類型,如:controller/index.js
。
改變后文件名更加簡潔,且不會出現(xiàn)有的系統(tǒng)下區(qū)分大小寫的問題。
1.x 下開發(fā)環(huán)境需要開啟 debug
模式,線上需要關閉 debug 模式,但經(jīng)常會出現(xiàn)線上開啟了 debug 模式,導致出現(xiàn)內(nèi)存泄漏等問題。
2.0 廢棄了 debug
模式,而是提供了 development
,testing
和 production
3 種模式,分別在對應的環(huán)境下使用,創(chuàng)建項目時會創(chuàng)建對應的 3 個文件,這樣在不同的環(huán)境下就可以使用不同的文件來啟動項目了。
1.x 里提供了 C
函數(shù)來讀取配置,2.0 里廢除了該函數(shù),不同地方使用不同的方式來讀取配置。
Controller,Middleware 等含有 http
對象的地方使用 config
方法來讀取配置,其他等地方需要使用think.config
方法來讀取配置。
1.x 里提供了 D
和 M
函數(shù)來實例化模型,2.0 里廢除了這 2 個函數(shù),不同的地方使用不同的方式來實例化模型。
Controller,Model,Middleware 等地方使用 model
方法來實例化模型,其他等地方使用 think.model
方法來實例化模型。
1.x 里提供了 Controller
來創(chuàng)建控制器類,Model
來創(chuàng)建模型類,2.0 里廢除了這些函數(shù)。并提供了多種方式來創(chuàng)建類。
ES6 直接使用 class extends think.model.base
來創(chuàng)建一個模型類,非 ES6 下可以通過 think.model
來創(chuàng)建一個模型類,創(chuàng)建控制器類類似。
1.x 里直接提供了一些通用的全局函數(shù),如:md5
,mkdir
等,2.0 中將這些函數(shù)都移到了 think
對象上,如:think.md5
,think.mkdir
。
1.x 下 common/
下的文件會啟動被調(diào)用,2.0 中將該目錄名為 bootstrap
,并且要在 common
模塊下,如:src/common/bootstrap
。
2.0 將 Behavior 改為了 middleware,Driver 改為了 adapter。
1.x 版本下提供了簡單的腳本 ctrl.sh
來管理當前 Node.js 服務,2.0 里廢棄了該文件,建議使用 pm2
來管理,并且提供了 pm2 的配置文件 pm2.json
,線上通過 pm2 start pm2.json
即可啟動服務。
更多建議: