與其他 MVC 框架一樣,Sails 的建構重點在於開發人員的幸福感和慣例優於配置的哲學。但 Node.js 將這個原則提升到新的層次。建立在 Sails 之上意味著您的應用程式完全以 JavaScript 編寫,也就是您和您的團隊已經在瀏覽器中使用的語言。由於您花費較少的時間在環境切換上,因此您能夠以更一致的風格編寫程式碼,這使得開發更有效率且更有趣。
Sails 捆綁了一個強大的 ORM,Waterline,它提供了一個簡單的資料存取層,無論您使用什麼資料庫,它都能正常運作。除了大量的社群專案外,官方支援的轉接器也適用於 MySQL、MongoDB、PostgreSQL、Redis 和本機磁碟。
Sails 為熟悉的關聯模型提供了一個新的視角,旨在使資料建模更實用。您可以執行所有您可能習慣的操作(一對多、多對多),但您也可以為每個模型分配多個命名的關聯(例如,一個蛋糕可能會有兩個人群集合:「擁有者」和「食用者」)。更好的是,您可以將不同的模型分配給不同的資料庫,並且您的關聯/聯結仍然可以運作——即使跨越 NoSQL 和關聯邊界。Sails 可以輕鬆地隱式/自動將 MySQL 表與 Mongo 集合聯結,反之亦然。
Sails 隨附藍圖,可協助您在不編寫任何程式碼的情況下快速啟動應用程式的後端。只需執行 sails generate api dentist
,您就會獲得一個 API,讓您可以搜尋、分頁、排序、篩選、建立、銷毀、更新和關聯牙醫。由於這些藍圖動作建立在與 Sails 相同的底層技術之上,因此它們也可以與 Websocket 和任何支援的資料庫開箱即用。
在過去,新增即時/"comet" 功能意味著維護兩個獨立的程式碼庫。但由於 Sails 中的請求直譯器為您翻譯傳入的 socket 訊息,它們會自動與 Sails 應用程式中的每個路由以及任何現有的 Express 路由/中介軟體相容。參數的正規化、工作階段和串流介面都已處理完畢。換句話說,您編寫的程式碼適用於 WebSocket 和 HTTP,而無需執行任何額外工作。
Sails 預設以策略的形式提供基本安全性和基於角色的存取控制 - 簡單、可重複使用的中介軟體功能,在您的控制器和動作之前執行。編寫策略鼓勵封裝,這可以顯著簡化您的業務邏輯並減少您需要編寫的程式碼總量。策略可與 Express/Connect 中介軟體互換,這意味著您可以插入流行的 npm 模組,例如 Passport。最後,與 Sails 中的大多數事物一樣,您的策略會自動適用於 WebSocket 和 HTTP。
雖然「一種語言/框架統治一切」的承諾確實很誘人,但它並不總是現實的。Sails 與任何前端策略相容;無論是 Angular、Backbone、iOS/ObjC、Android/Java、Windows Phone,還是其他尚未發明的東西。此外,輕鬆提供相同的 API 以供另一個 Web 服務或開發人員社群使用。
如果您正在為瀏覽器建構應用程式,那麼您很幸運。Sails 隨附 Grunt- 這意味著您的整個前端資源工作流程是完全可自訂的,並且支援所有已經存在的優秀 Grunt 模組。這包括支援 LESS、SASS、Stylus、CoffeeScript、JST、Jade、Handlebars、Dust 等更多。當您準備好投入生產環境時,您的資源會自動縮小和 gzip 壓縮。您甚至可以編譯您的靜態資源並將它們推送到 CDN(例如 CloudFront),以使您的應用程式載入速度更快。
偏好不同的工具鏈?了解關於產生器。