簡體   English   中英

在靜態文件中表達,擴展變量

[英]Express, expand variable in static file

我在nodejs平台上使用express並使用此指令提供我的javascript庫文件

app.use('/static', express.static(__dirname + '/static'))

現在,我希望能夠在這些靜態文件之一中編寫類似的內容

[..] var host = <%= host %> [..]

是否有可能在靜態提供的文件中擴展變量?

這是您可能需要改進的一個想法:

var ejs = require('ejs');

//Express.js setup
...

app.use('/public/js/myfile.js', function(req, res){
    var f = ejs.compile('var host = <%= hostname %>;');
    var fileContent = f({hostname: 'somevalue'});
    res.setHeader('Content-Type', 'application/javascript');
    res.setHeader('Content-Length', fileContent.length);
    res.send(fileContent);
});
app.use(express.static(path.join(__dirname, 'public')));

//Routes definition
...

我使用了ejs,因為那是您已經使用的。 因此,這個想法是要有一個中間件來捕獲對那些“動態” javascript文件的請求,並使用模板引擎來編譯內容。

請注意,我在這里使用了一個簡單的字符串變量,但是您可以從磁盤讀取文件,然后進行編譯。

干杯

您可以使用loDash的模板使用與快遞lodashinexpress

請在這里查看我的答案: https : //stackoverflow.com/a/19812753/2728686

使用Jade模板引擎,您可以提供靜態文件, 並將服務器端javascript變量發送到靜態HTML文件 (或任何jade模板),例如:

服務器端(server.js):

app.set('views', __dirname + '/views');
app.set('view engine', 'jade');

app.get('/', ensureAuthenticated, function(request, response){
    response.render('index', { data: {currentUser: request.user.id} });
});

app.use(express.static(__dirname + '/www'));

views / index.jade:

!!! 5
script(type='text/javascript')
    var local_data =!{JSON.stringify(data)}

include ../www/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM