我知道我可以通过省略var来访问文件中的方法,但是什么是"最佳实践"项目目录结构,用于定义跨不同模板的模板事件使用的辅助方法。
例如,我有:
template1.js:
Template.template1.events({
'event': function () {
helper();
}
});
template2.js:
Template.template2.events({
'event': function () {
helper();
}
});
答案 0 :(得分:3)
Meteor的“使用全局数据跨文件共享代码”方法的一个问题是,当您查看使用函数的文件时,您不知道函数的定义位置。我更喜欢在每个文件中定义一个需要导出变量的全局变量。该变量与文件具有相同的名称,具有初始大写(或其他一些将其标识为“导出对象”的命名约定)。导出存储为该对象的属性。因此,您可以创建名为globalHelpers.js
的文件:
GlobalHelpers = {};
GlobalHelpers.helper = function () {
// ...
};
然后在GlobalHelpers.helper()
的其他文件中使用它。如果您稍后查看此代码,您就知道要查看globalHelpers.js
以找到helper
函数。
如果文件导出单个类或集合,则可以将该对象用作导出对象。因此things.js
代替Things = {}; Things.Things = new Mongo.Collection...
而不是Things = new Mongo.Collection...
。{/ 1}}。
您可能需要将文件放在lib
目录中,以便在其他文件之前加载。
请勿在{{1}}注册,除非您想直接通过Template.registerHelper
来电的模板进行调用。
答案 1 :(得分:0)
我建议在/client/scripts/globalHelpers.js
示例:
Template.registerHelper('foo',function(arg1,arg2){
return arg1 + arg2;
});
然后您可以在任何地方使用此功能,前缀为Blaze._globalHelpers.
:
var result = Blaze._globalHelpers.foo(param1, param2);