gpt4 book ai didi

javascript - 如何使用 express 3.x 在我的 node.js 中的 EJS 模板中包含 js 文件

转载 作者:搜寻专家 更新时间:2023-10-31 23:55:55 25 4
gpt4 key购买 nike

我看到的所有示例都使用 app.dynamicHelpers 来提供一种在我的 View 模板中访问我的 javascript 文件的方法。但是在 express 3.x 中没有明确的方法来做到这一点。 migration docs说“使用中间件”。我对“中间件”的概念比较陌生,不知道如何实现它。

我只想知道在我的 View 模板中包含 javascript 文件的最优雅的方式。

最佳答案

中间件是 Connect 的基础, Express 是建立在它之上的。简而言之,它允许您将传入 HTTP 请求和响应的多个处理程序链接在一起。您在 Express 应用程序中为每个 app.use() 提供的参数基本上是一个“中间件”,并且是具有以下签名的回调 function (request, response, next),其中 next 是链中要调用的下一个中间件回调。以下所有都是中间件(最后一个是 error handler,它有一个 4 参数签名):

app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(function(err, req, res, next){
// logic
next();
});

就从 Express 2 到 3.x 的迁移而言,迁移具体是:

app.dynamicHelpers() (use middleware + res.locals)

因此,举一个人为的例子,您之前可能在外部 js 文件中有一个辅助函数,并且要求将其用于您的 dynamicHelper :

//helpers.js
exports.dynamicHelpers = {
currentUser: function(req, res) {
return req.user;
}
};

// app.js
var helpers = require('./helpers').dynamicHelpers;

app.dynamicHelpers(helpers);

通过一些重组,您现在可以执行以下操作:

//locals.js
exports.setLocals = function(req, res, next){ //<- middleware function
res.locals.currentUser = req.user;
res.locals.otherVariable = ...;
next();
}

//app.js
var locals = require('./locals').setLocals;
...
app.use(locals);

这很好blog回顾 3.x 之前的 Express 中的中间件与 dynamicHelpers,但概念是相同的。唯一的区别是文章中使用的 res.local(name, value) 现在是 deprecated对于 res.locals.name = valueres.locals({ name: value })

关于javascript - 如何使用 express 3.x 在我的 node.js 中的 EJS 模板中包含 js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964391/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com