【问题标题】:Importing Templates in Meteor During Routing with Iron Router在使用 Iron Router 路由期间在 Meteor 中导入模板
【发布时间】:2017-02-21 18:57:54
【问题描述】:

Meteor 的好处之一是您只需要在需要渲染内容时加载内容,例如如果您在 /imports/ui/client 中有一个模板文件,除非您将其导入某处,否则它不会被加载。但是,在使用 Iron Router 时,我无法确定只有在需要通过适当的路由呈现模板时才应该如何包含模板。我尝试过的一种方法是在路由函数中声明导入:

Router.route('/', function () {
  import '/imports/ui/client/home.js';
  this.render('home');
});

这成功加载了模板文件,尽管我在 Iron Router 文档中没有看到任何这样做的示例,并且我遇到了一些以前没有的 JavaScript 问题,因此我很怀疑这是正确/最好的方法。

在 Iron Router 中使用 Meteor 时,仅在需要模板时才包含模板的最佳方式是什么?

【问题讨论】:

  • 我在上面提到的一个 JavaScript 问题是,如果在上面示例中的 home.js 文件中包含带有 HTML 模板的导入语句,然后是一些 JavaScript,则 JavaScript 在 HTML 之前呈现模板已加载。 HTML 模板需要先渲染。

标签: templates meteor iron-router


【解决方案1】:
import '/imports/ui/client/home.js';

Router.route('/', function () {

  this.render('home');
});

这是大多数examples 中提到的“标准”方式,尽管我认为您的方式没有任何害处。

【讨论】:

  • 谢谢。但是,我不明白这是如何工作的。假设我在启动或根文件夹下的 routes.js 文件中定义此路由,则 home.js 中包含的模板将始终加载到应用程序中,而不是仅在呈现主页时加载。
  • 你能分享一个回购或样板吗?
【解决方案2】:

我是这样做的……

Router.route('/join', {
  name: 'join',
  onBeforeAction: function() {
    import '../../ui/pages/join/join.js';
    this.next();
  }
});

【讨论】:

    猜你喜欢
    • 2014-04-08
    • 2013-09-10
    • 2015-12-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    相关资源
    最近更新 更多