JSPM与外部系统js文件绑定

JSPM bundling with external system js file

本文关键字:文件 绑定 js 系统 外部 JSPM      更新时间:2023-09-26

我正在从CDN加载angular2文件作为System js模块。

我有几个文件导入angular2的各种系统js模块。

现在,我想使用JSPM绑定我的本地javascript文件。当我写命令时

  "jspm bundle app/main build.js"

JSPM失败。由于JSPM正试图在我的项目中找到angular2文件夹。我知道它检查config.js中定义的映射的原因。但我想知道如何克服这个问题。由于我不想在我的本地项目中安装angular2文件,而且我绝对不想将angular 2文件从我的服务器提供给客户端的浏览器,所以我想使用CDN。

请帮忙。

如果您想同时构建和使用CDN(因为您使用SystemJS配置了一些从CDN加载的包),您可以构建所有CDN包。例如:

jspm bundle app/main.js - angular2 - whatever + somethingelse main-bundle.js --inject

否则,更简单的是,您可以将CDN链接直接放在index.html文件中,并仅对本地包使用SystemJS。

最后我找到了这样做的答案:

System Js的配置选项也会获取元信息。在这个元信息中,我们可以编写忽略SystemJ的模块的绑定。因此,假设我从cdn加载所有angular2模块,将它们导入本地模块,然后用systemJs或JSPM构建它,那么我必须在config.js(或在System.config的选项对象内)中编写以下内容:

meta: {
        'angular2/*': {
            build: false
        },
        'rxjs/add/operator/map' : {
            build : false
        }
    }

angular2开发人员应该将其放在config.js中,明确告诉systemJs在绑定本地模块时避免查找angular2模块和rxjs模块。这将为您提供从cdn加载angular2和rxjs的机会,因此不会将它们包含在config.js的映射选项中。