2013-12-18 96 views
4

我有一個使用客戶端骨幹和服務器節點(Sails)的單頁網頁應用程序。在Sails JS中使用下劃線/ lodash作爲模板引擎

我目前在客戶端使用lodash.underscore作爲模板引擎,在服務器上使用kiwi。

我希望通過漸進式增強來實現pushstate。即客戶端和服務器將共享相同的模板文件。

這意味着他們需要使用相同的模板引擎;我決定用下劃線/ lodash去。

在Sails config \ views.js中,它意味着您可以使用下劃線作爲模板引擎。問題是我無法解決如何做到這一點。我已經包括在我的package.json,並設置

'engine': 'underscore' 

我再發射了,當我的應用程序得到一個錯誤 - 「在Function.app.engine需要回調函數」

如果我設定的發動機到'獼猴桃','玉','ejs'等,那麼它會工作。

任何想法是我做錯了什麼?

回答

0

我不知道我知道什麼你問,我有以下配置服務器端的觀點不過,我已經使用下劃線模板:

config/views設置我的引擎EJS:

engine: 'ejs', 

在我Gruntfile.js我設置:

var templateFilesToInject = [ 
    'linker/**/*.ejs' 
]; 
+0

服務器端視圖live/views和客戶端模板live in/assets/templates。我想避免重複代碼,所以希望從客戶端模板構建服務器端視圖。這將允許我啓用pushState。要做到這一點,我需要視圖和模板處於相同的「語言」,並使用相同的語法,他們目前不是。我似乎對這兩點都有問題 - 引用來自/ views的資產/模板並獲得標準語法 – redeye

0

Consolidate.js確實support Underscore as an engineversion 0.3.1和Lodash截止version 0.10.0

Sails.js supports all of the view engines compatible with Express via Consolidate,但包含Consolidate作爲直接依賴項的Sails的第一個版本是only 0.12.0-rc2。我不確定Sails在此之前如何管理其他模板引擎,但是documentation suggests that Underscore has been supported as a view engine since 0.10.0

您應該驗證您正在使用的Sails版本是否支持Underscore作爲視圖引擎,並且在嘗試使用它之前確保您npm i --save underscore