在我的项目中,其中一个模板的onRendered
方法有超过250行。代码变得越来越难以理解和不可维护(因为它的单片)并且我想将所有代码分割成函数来实现这样的事情:
Template.Products.onRendered(function () {
initCarousels();
const allProducts = Meteor.call('server/collections/products::getAll', product._id, (err, content) => {
...
});
const sortedProducts = sortProducts(allProducts);
updateCarousels(sortedProducts);
...
this.autorun( () => {
this.subscribe('products');
...
if (this.subscriptionsReady()) {
...
}
});
}
当然,我可以在onRendered
方法中定义函数,但是在onRendered
中声明它们并在同一个地方使用似乎并不是完美的方法 - 我正在搜索类似于移动函数模板甚至将它们移动到另一个文件。你能告诉我一个实现这个目标的方法吗?
答案 0 :(得分:2)
是的!您可以将代码移至 lib / 目录,并使用哪个将是客户端和服务器文件夹的兄弟。
Template.registerHelpers(function_name, function());
当服务器启动时,它将首先按字母顺序加载 lib / * .js 文件,以便您可以使用客户端中的文件。