Node.js Web 開發框架:KrakenJS
kraken.js 由paypal 公司開源的一個用于快速開發基于Express.js框架應用的快速開發工具, 因為kraken 并沒有在Express.js基礎上更改多少東西,只是在原來的express基礎上補充了一些約定開發的規則, 讓開發根據便捷.
Kraken 基于 grunt 和 Express,相比而言,它提供了更加穩健的功能合集,支持本地化、環境配置、更加注重應用程序安全等。這里解釋下,Express 是 Node.js 的一個 MVC 開發框架,支持 jade 等多種模板,是目前 Node.js 上最流行的 Web 開發框架,通過提供一系列強大特性幫助開發者創建各種 Web 應用。
為什么要使用KrakenJS?
- 基于目前最流行的NodeJS Web框架Express,但結構更清晰合理,更加符合MVC開發思想。
- /config,存放應用程序和中間件配置
- /controllers,控制器
- /lib,存放開發者自定義的庫文件和其他代碼
- /locales,特定語言內容
- /models,模型
- /public,公共的網絡資源
- /public/templates,服務器和瀏覽器端模板
- /test,存放單元和功能測試用例等
- index.js,應用程序入口文件
</ul>
</li>
- json配置文件,方便生產環境與開發環境的快速切換。
-
針對web開發提供了方便的工具集和可獨立插件,且容易更換。
Lusca:安全模塊
Kappa:NPM代理插件,可實現npm私庫。
And so on…
kraken自帶的模板是LinkedIn維護的Dust,如果想換成更為簡單和常用的Jade,只需:a. 在package.json的dependencies中添加jade依賴,并
npm install
b. 在config/app.json中的view engine配置為jadejavascript "express":{ "view engine": "jade" }
c. 編寫對應jade模板即可,無須修改控制層(名字一致后綴改變)
- /config,存放應用程序和中間件配置
框架結構
Kraken 框架套件包括多個部分,Kraken.js 僅是該框架的主體部分。該框架還包括其他模塊(可獨立使用):
- lusca:支持 Express 的應用程序安全模塊
- makara:支持 Dust.js 的國際化(i18n)模塊
- Adaro:支持 Express 的一款 Dust.js 視圖渲染器
- Kappa:NPM 代理插件
除了上述可以獨立使用的模塊之外,Kraken 套件還包括了一系列的依賴和實用工具:
- Generator-kraken:Yeoman 生成器
- Enrouten:用于 Express 的路由(route)配置中間件(初始化與配置模塊)
- Kraken-devtools:Kraken 應用程序開發所需的工具合集
特點
通過前面的介紹,我們已經基本了解了 Kraken 究竟是怎么一回事兒,那 Kraken 到底具有哪些吸引開發者的特點呢?
1. 項目結構清晰
Kraken 將生成的項目的配置、內容和模板、路由邏輯(routing logic)放在了不同的位置,方便開發者對文件進行組織和管理。下面,我們詳細了解下 Kraken 所創建項目的基本結構:
- /config,存放應用程序和中間件配置
- /controllers,控制器
- /lib,存放開發者自定義的庫文件和其他代碼
- /locales,特定語言內容
- /models,模型
- /public,公共的網絡資源
- /public/templates,服務器和瀏覽器端模板
- /test,存放單元和功能測試用例等。
- index.js,應用程序入口文件
隨著項目的不斷成長,這種組織方式和策略對開發者來說會更加友好。
2. 良好平衡開發環境與生產環境
Kraken 的配置文件為 /config/app.json,它會在運行時加載文件中包含的鍵值對。全部的應用程序配置均存放在這一個文件中,大大方便了開發者。/config/middleware.json 則是自定義的中間件配置文件。
說起開發環境與生產環境,二者通常在端口號、主機名等方面的參數設置會有不同,Kraken 允許創建開發模式下使用的配置文件,如 /config/app.json 為生產環境下的配置,/config/app-development.json 則是開發環境下的配置,然后可以通過自定義環境變量(定義環境變量 NODE_ENV 為 production 或 development)來控制要加載哪個配置文件。如此一來,可以方便開發者在生產環境和開發環境進行快速切換!
3. 注重安全
通過 Lusca 模塊來為安全保駕護航,并遵循 OWASP 安全原則,同時也默認為全部調用啟用了幾個請求/響應頭文件:
- 跨站請求偽造(CSRF)標頭
- 內容安全策略(CPS)標頭
- 隱私優先項目平臺(P3P)標頭
- X-FRAME-OPTIONS 防止點擊劫持
4. 其他
同時,它還有下面幾個特點:
- 路由(route)與邏輯(logic)分離:方便程序運行失敗時快速鎖定問題。
- 模板(template)共用:Kraken 選用 Dust 作為模板語言,同時在服務器端和客戶端使用了同一個模板,如此一來,就可以做到代碼復用。
- 支持本地化: Kraken 可以在運行時基于請求上下文來加載內容包(content bundle),所以在模板渲染之前就可以通過添加上下文來給用戶提供相應的本地語言支持,大大增強了應用的友好性。
示例與文檔
關于 Kraken,官方給出了下面兩個示例,可以幫助大家學習和了解:
- 例一:本地化與國際化:給 Web 應用增加多語言支持,讓各地用戶能夠用當地語言來使用 Web 應用
- 例二:部署中間件:創建一個網頁計數器,為大家解釋在應用生命周期中如何部署中間件
Kraken 是一款開源項目(分發協議為 Apache License v2.0),大家都可以對該項目進行 Fork 和提交修改。它也提供了一份簡潔的使用文檔。項目源碼和文檔均可在 Github 頁面進行查看。