我正在構建一個小節點應用程序,並使用Express與Jade和手寫筆來呈現一些基本的HTMl頁面。節點應用程序變量傳遞到手寫筆文件
我很好奇,如果有一種方法可以讓我將一些變量傳遞到從Node生成的.styl文件中?我很清楚,我可以在.styl文件中定義變量,但我需要更加動態。具體而言,我正在尋找一種簡單的方法來在db中存儲一些顏色,讓節點獲取這些值,然後將這些值插入到.styl文件中,以便在頁面呈現時傳遞這些變量。似乎應該這樣做 - 但我缺乏細節。任何幫助表示讚賞。謝謝!
我正在構建一個小節點應用程序,並使用Express與Jade和手寫筆來呈現一些基本的HTMl頁面。節點應用程序變量傳遞到手寫筆文件
我很好奇,如果有一種方法可以讓我將一些變量傳遞到從Node生成的.styl文件中?我很清楚,我可以在.styl文件中定義變量,但我需要更加動態。具體而言,我正在尋找一種簡單的方法來在db中存儲一些顏色,讓節點獲取這些值,然後將這些值插入到.styl文件中,以便在頁面呈現時傳遞這些變量。似乎應該這樣做 - 但我缺乏細節。任何幫助表示讚賞。謝謝!
您可以使用Stylus API的define()函數設置Stylus變量並使JS功能可用。
感謝@ebohlman,因爲他的建議接近我最終實現的目標。
基本上我試圖找出如何做到這一點的連接中間件的頂部,這裏是我想出了:
時做app.configure我使用的自定義編譯編譯功能(鍵「編譯「),像這樣:
app.use(require('stylus')
.middleware({
src: app.root + '/app/public',
compile: compile
})
);
然後我創建了幾個功能:
var stylus = require('stylus');
var mylib = function(style){
style.define('themeColor1', function(){
//call to the db that returns a color
color = 'blue';
color = color ? color : 'orange';
return new stylus.nodes.Literal(color);
});
};
var compile = function(str, path) {
return stylus(str)
.use(mylib);
};
那麼.styl文件裏我做的:
background-color themeColor1();
themeColor1函數中的三元運算符允許輕鬆進行默認設置和覆蓋。我花了一些時間來根據例子找出API,但似乎這可能是其他人希望知道如何去做的解決方案。如果有人有這種做法的任何垮臺,請讓我知道。
文字似乎效果最好。 –
您是否知道如何在不創建函數的情況下將節點上的變量傳遞給觸筆。我在這裏看到了.define()的答案,但它似乎爲我工作。 – qodeninja
我發現'Literal'沒有按預期工作,我不得不使用'Ident' –