【问题标题】:Meteor optional template流星可选模板
【发布时间】:2019-01-11 20:58:58
【问题描述】:

所以我开始学习 Meteor 并试图弄清楚我应该如何正确格式化模板。这就是我设置项目的方式:

  • A/view.html - 模板 A 的 html 文件
  • A/script.js - 导入 A/view.html。可能是参与交互的“控制者”
  • B/view.html - 模板 B 的 html 文件
  • B/script.js - 导入 A/view.html。可能是参与交互的“控制者”
  • routes.js - 路由文件,包括模板 A 和 B 的所有 script.js

所以我有两个问题:

  • 首先,我想将 A 作为基础模板,这意味着它将具有样式和 javascript 标签以及“样式”和“脚本”可选块,以防子模板想要添加额外的文件。 我该怎么做?我已经尝试过正常的方法:

    • 在每个子模板中创建 2 个名为 stylesscripts 的块。这不起作用,因为 routes.js 导入所有内容,meteor 抱怨有 2 个模板具有相同的名称
    • 使用 Template.dynamic。这项工作,但我必须在“样式”和“脚本”块中声明要渲染的模板,在我看来,当项目变大时,这有点不整洁。
  • 第二个问题,正如我所描述的,我目前正在处理我的路线,将块本地化(?)到当前文件的最佳方法是什么?。是否有可能在 2 个不同的子模板中有 2 个称为“脚本”的块并且流星不抱怨?

谢谢大家:)

【问题讨论】:

    标签: javascript meteor meteor-blaze spacebars


    【解决方案1】:

    我不是 100% 确定您所说的“块”是什么意思,但我假设您希望 A 成为其他所有内容都适合的模板,然后让其他页面进入它?

    如果是这样,听起来您会想要使用动态模板,并让 A 成为布局。

    这是一个布局示例,它从我的一个项目中导入其他模板(它实际上导入了两个常量模板(loginNavbar 和 modalWindow)以及动态模板,具体取决于我对它的调用。您可以添加尽可能多的样式和其他你想要布局本身的东西):

    <template name="loginLayout">
        <div class="loginNavbarTemplateDiv">
            {{> loginNavbar}}
        </div>
        <div class="loginContentTemplateDiv">
            {{> Template.dynamic template=content}}
        </div>
    
        {{> modalWindow}}
    </template>
    

    那么我的 routes.js 看起来像这样(使用登录或注册的内部内容渲染外部 loginLayout):

    FlowRouter.route('/login', {
        name: 'login',
        action: function() {
            BlazeLayout.render("loginLayout", { content: 'login' });
        }
    });
    
    FlowRouter.route('/register', {
        name: 'register',
        action: function() {
            BlazeLayout.render("loginLayout", { content: 'register' });
        }
    });
    

    总的来说,我不会有两个命名相同的模板,如果你正确地构建你的文件/应用程序,它应该不会太凌乱。

    如果这有帮助,请告诉我,如果您有任何其他问题,我很乐意提供帮助。

    -

    如果您想了解更多,这里有一个很棒的动态模板教程:

    https://themeteorchef.com/tutorials/using-dynamic-templates

    以及如何构建 Meteor 应用程序文件的指南(帮助很多并使一切变得更好):

    https://guide.meteor.com/structure.html

    【讨论】:

    • @Tree Nguyen - 有什么进展或消息吗?
    猜你喜欢
    • 2015-01-10
    • 2015-05-07
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多