【发布时间】:2025-12-21 15:25:07
【问题描述】:
我正在使用 Expressjs 开发这个 Web 应用程序,我觉得需要 Microsoft 的 Razor 视图引擎提供的功能。
Razor 允许从其他助手中调用助手。 在 Expressjs 中,当从视图中调用助手时,助手的范围不会扩展到助手本身。
有解决办法吗?我希望不必将助手作为参数传递给视图,或者必须要求助手的文件。
提前致谢
例子:
我有
app.helpers({ TextBoxHelper: require('./TextBox.js') });
app.helpers({ CharCounter : require('./CharCounter.js' ) });
在我的服务器中。在渲染视图时,我使用 jshtml 视图引擎并调用助手,我只需执行以下操作:
@TextBoxHelper() //I can do this because all helpers are present in this scope
当助手被调用时,它会退出视图范围,并且将无法访问那里的其他助手。
现在,我希望这个助手“TextBox”调用“CharCounter”。第二个助手应该由其他几个助手调用,所以,如果我可以从助手的“.js”文件中调用它,而不需要脚本,或者将它作为参数发送,那就太好了。
【问题讨论】:
-
您能举个例子说明您正在尝试做什么吗?另请注意,助手和 dynamicHelpers 在 3.x 中已被删除。
-
我在问题底部添加了一个示例 Pickels。当您说版本 3.x 时,您指的是 Express 吗? o.O
-
我的意思是 Express.js 3.x。在新版本中,您只有 res.locals。因此,如果您想要 3.x 中的助手,您只需为全局助手执行
app.locals.myHelper = function () { }或res.locals.myHelper = function () { }路由特定助手。