当meteor中的addFiles时,为什么html文件必须在js文件之前

时间:2015-07-31 14:53:32

标签: meteor

我正在创建一个meteor包,非常简单,例如this

  api.addFiles(['errors.js', 'errors_list.html', 'errors_list.js'], 'client');

我注意到如果我将上面的代码更改为

  api.addFiles(['errors.js', 'errors_list.js', 'errors_list.html'], 'client');

Meteor说:Template is not defined

很难找出导致此错误的原因。为什么js文件不能在addFiles中的html文件之前去?

1 个答案:

答案 0 :(得分:0)

使用Spacebars(默认模板引擎)时,模板在HTML文件中定义:

<template name="fooTemplate">
  ...
</template>

然后,您可以从其他任何地方访问此模板,无论是HTML还是JS:

<!-- HTML file -->
{{> fooTemplate}}

//JS file
Template.fooTemplate

如果您在创建模板之前尝试进行此类访问,则会失败 Meteor包按顺序加载文件。这是您控制加载顺序的方法。

如果您在模板定义之前尝试使用模板,它会undefined并在您尝试访问模板时抛出异常(fooTemplate is undefined行)。

因此,与编程中的所有内容一样,始终先初始化,然后再使用
把你的HTML文件放在JS之前,你就可以了。