javascript - Express,在静态文件中展开变量

标签 javascript node.js express ejs

我在 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 文件的请求,并使用模板引擎来编译内容。

请注意,我在这里使用了一个简单的字符串变量,但您可以从磁盘读取文件然后编译它。

干杯

关于javascript - Express,在静态文件中展开变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19740784/

相关文章:

node.js - passport.use jwt 传递角色参数

javascript - Sequelize Model.prototype.(customFunction) 不工作

javascript - 使用 Joi,验证 bool 值是否为真

javascript - 移动背景图像?

javascript - 浏览器密码自动填充的 DOM 事件?

node.js - 快速 IPv6 CIDR 到数字或类似值

node.js - 暴露用户唯一的 MongoDB _id 是否存在安全风险?

javascript - 对 Passport 的 Ajax 调用不运行身份验证中间件

javascript - 与调用 JQuery 自定义函数感到困惑

javascript - Nodejs Plotlyjs 单独工作但不能一起工作