Pages

搜尋此網誌

2014年5月17日 星期六

sails 0.10 beta upgrade and intorduction

sails 0.10 beta upgrade and intorduction

最近接觸 node.js,對於慣 JAVA 的我算是另外一個世界,不過還好有 sails 的幫忙,對於摸過 grails 的我概念很像,又是類似 ruby on rails 的架構與開發的方式,雖然語言特性有點不同,基本概念算是相去不遠,如果你有類似 rails 的框架使用經驗,相信學習起來也不會太難。

這篇要介紹一下 sails 在新的版本 0.10 中有的新功能,地一件事就是要進行 sails upgrade。

upgrade sails from 0.9.x to 0.10.0

幾個步驟:

  1. npm i sails@beta -g
  2. npm i sails@beta -save
  3. npm i sails-mysql@beta -save
  4. npm i sails-mongo@beta -save

基本上 1、2 步驟就完成安裝,不過若是你有搭配其他 sails 相關套件,必須要重新指定 beta 版本,將來若改為正式版也是同樣的步驟

環境準備好之後,為了要能夠正常啟動,有幾個地方需要調整,特別是資料庫設定部分

config/connections.js

0.9.x 版中連線相關資訊為 config/apdater.js,在新版改為 config/connections.js,設定檔內容如下:

enter image description here

特別要注意元預設的設定檔 default 被移到另外一個檔案。

config/models.js

module.exports.models = {
    connection: "mysql"
}

基本上這樣設定好應該可以正常啟動 sails,透過 sails lift

再來在 code 的部份比較重要的調整為:

.done() -> .exec()

針對 model CRUD 部分的確定執行元為 .done(),如下:

Post.findOne(1).done(...)

改為

Post.findOne(1).exec(...)

主要是 sails 0.10 內建了 promise,用於 javaScript flow control 的套件,之後在簡單介紹使用範例。

另外在 sails 專案底下列檔案

  • config/400.js
  • config/403.js
  • config/404.js
  • config/500.js

被下列檔案取代

  • api/responses/badRequest.js
  • api/responses/forbidden.js
  • api/responses/notFound.js
  • api/responses/ok.js
  • api/responses/serverError.js

若要取得這些檔案,可以透過 0.10 sails new project,從新的專案中取得,記得要把被取代的檔案刪掉,不然在 sails 啟動會出現下列訊息警告

Deprecated:   `sails.config[500]`
Deprecated:   `sails.config[404]`

上面的 responses 其實也是新特性,定義在該資料夾底下的檔案,將會被掛載到 res 底下,如:

  • res.ok: 可取代 res.send
  • res.serverError: 當有錯誤時 redirect 到 error page

其他類推,當然可以在自定開發上需要的邏輯例如,當需要將處理完的資料轉為 xml,可以新增一個 api/responses/sendXml.js,可以想像為 after filter 的處理。

除了上述的差異之外,sails 0.10.x 新增了一個設定檔

globle

# Global Variable Configuration
# (sails.config.globals)
#
# Configure which global variables which will be exposed
# automatically by Sails.
#
# For more information on configuration, check out:
# http://links.sailsjs.org/docs/config/globals

module.exports.globals = {
    _: true,
    async: true,
    sails: true,
    services: true,
    models: true,
}

需要用到可在看詳細說明。

基本上調整完上述的內容就有一個可以正常啟動的 0.9.x 升級到 0.10.x 的 sails 專案了,有需要的參考看看。

張貼留言