如何将Meteor项目分成模块

时间:2014-12-21 17:05:54

标签: meteor

My Meteor项目有两个部分:

  1. 主页:任何人都可以访问。
  2. 管理控制台:仅向管理员提供一些管理工具
  3. 在生产模式下运行此项目时:

    $ meteor --production
    

    Meteor将把所有客户端代码合并到一个大文件中,这使得" Admin Console"代码也传递给普通访客。

    有没有办法缩小"将javascript / css文件分成两个文件? 一个是普通访客,一个是管理员?

    我还将此项目打包到Android软件包中,"管理控制台"代码也存在于apk文件中,如何排除它们?

    感谢。

1 个答案:

答案 0 :(得分:0)

您可以使用meteor动态导入仅根据客户端使用的视图将代码下载到客户端。我还没有尝试过,但应该可以根据用户的角色动态加载文件。

类似的东西:

//must be called inside a meteor method or publish function
async function adminOnlyApi() {
  if(Roles.userIsInRole(Meteor.userId, ['admin']) {
    return await import('path/to/lib');
  }
  return {};
}

假设lib导出一个带有键'foo'和值'bar'的默认对象,当以admin身份登录时调用adminOnlyApi.foo应返回'bar',并在与任何其他用户登录时返回undefined ...