Node.js 从helpers内部呼叫helpers
我正在使用Expressjs开发这个web应用程序,我觉得需要微软的Razor视图引擎提供的功能 Razor允许一个人从其他助手中呼叫助手。 在Expressjs中,当从视图调用帮助程序时,帮助程序的作用域不会扩展到帮助程序本身 这有解决办法吗?我希望不必将助手作为参数传递给视图,也不必需要助手的文件 提前谢谢 例如: 我有Node.js 从helpers内部呼叫helpers,node.js,helper,express,Node.js,Helper,Express,我正在使用Expressjs开发这个web应用程序,我觉得需要微软的Razor视图引擎提供的功能 Razor允许一个人从其他助手中呼叫助手。 在Expressjs中,当从视图调用帮助程序时,帮助程序的作用域不会扩展到帮助程序本身 这有解决办法吗?我希望不必将助手作为参数传递给视图,也不必需要助手的文件 提前谢谢 例如: 我有 app.helpers({ TextBoxHelper: require('./TextBox.js') }); app.helpers({ CharCounter :
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
调用帮助程序时,它将退出视图范围,并且将无法访问那里的其他帮助程序
现在,我想让这个助手文本框调用CharCounter。第二个帮助程序应该由其他几个帮助程序调用,因此,如果我可以从helpers.js文件调用它,而不需要脚本,或者将其作为参数发送,那就太好了。我将把所有帮助程序捆绑到一个对象中。这样你就可以使用这个。someHelper
如果这不是您想要的,您可以随时在Javascript中轻松更改它。您能举个例子说明您正在尝试做什么吗?还要注意的是,在3.x中,助手和动态工具被删除了。我在问题的底部添加了一个例子,Pickels。当你说3.x版时,你是指Express吗?o、 OI mean Express.js 3.x。在新版本中,您只有res.locals。因此,如果您想要3.x中的帮助程序,只需为全局帮助程序执行app.locals.myHelper=function{},或为res.locals.myHelper=function{}路由特定的帮助程序。从某种程度上说,这些帮助程序已经打包并可用于视图引擎。问题是,如果我在给定时间在其中一个助手内工作,我就无法访问其他助手。当然,我可以将helpers对象作为参数传递给我正在调用的helper,它可以访问它们。我只是想知道是否有一种更自然的方式来做这件事。
var helpers = {
first: function () {
console.log('first');
helpers.second();
},
second: function () {
console.log('second');
}
};
helpers.first();