【问题标题】:Is loading client side code on demand possible in latest version (0.9.x) of meteor?在流星的最新版本(0.9.x)中是否可以按需加载客户端代码?
【发布时间】:2014-09-19 16:55:30
【问题描述】:

我正在考虑使用 Meteor 来构建实时数据应用程序,因为 Meteor 本身做了很多实时更新和其他相关工作。唯一阻止我的是 Meteor 将所有文件(公共和服务器文件夹上的文件除外)下载到客户端。可以说,我正在开发一个包含这么多模块的非常大的应用程序。只有某些模块可供某些用户使用。因此,与其他模块相关的所有代码都将不必要地下载。初始页面加载也需要很长时间。可能还会有一些安全问题。

我尝试使用 IRLibloader 插件通过将 JS 文件放在公共文件夹中来加载它们。那么有没有办法配置 Meteor,它只下载所需的代码,然后在必要时下载其他模块的代码?如果不可能,请您指导我使用 Meteor 的其他良好做法。

提前谢谢你。

【问题讨论】:

    标签: meteor meteorite


    【解决方案1】:

    这是可能的。一个完整的解决方案是anti:modules 包。首先将其添加到应用程序中:

    meteor add anti:modules
    

    然后在您的项目中创建/layers 文件夹并将您的可选文件放在其子文件夹中:

    /
      layers
        fancyModule
          someFile.module.js
          anotherFile.module.js
          ...
    

    然后在你的代码中创建一个全局模块:

    theApp = Module('$global').as('myApp');
    

    并在必要时加载它:

    theApp.require('fancyModule', function () {
      console.log('fancyModule code loaded');
    });
    

    【讨论】:

    • 谢谢。这是一个很棒的包。看起来你是它的贡献者之一。您的路线图中是否有任何目标来支持 css 文件?
    • 是否可以在*.module.html 文件中定义模板?我在example.module.html 中定义了一个模板。在Router.map 中,我使用WaitOn 方法在导航到“/example”路由时加载示例模块。但我收到此“找不到名为“示例”的模板”错误。请帮忙。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2017-10-08
    • 1970-01-01
    • 2020-02-08
    相关资源
    最近更新 更多