最近我在我的Angular 2项目中使用了JSPM,并发现它非常简单和方便易用。不仅在添加新模块时,而且在创建生产使用的捆绑包时都是如此。
基本上就是这样:
jspm install npm:@angular/somepackage
而且package.json和system.js配置文件会自动更新。
当我想创建生产包时,我只需要这样做:
jspm bundle-sfx app/main app-bundle.min.js --minify
我只需像这样创建一个HTML标记来使用它:
<body>
<my-app>Loading...</my-app>
<script src="app-bundle.min.js"></script>
</body>
加载和运行速度快。我用它来开发小型和大型Angular 2应用程序。
开发设置也很令人满意-应用程序重新加载足够快,调试也进行得很好。还可以通过JSPM从NPM存储库中使用几乎任何模块。
在阅读外部文章时,我有印象人们正在转向将Angular 2应用程序迁移到webpack上。我自己没有转向webpack,因为我认为我的设置很好,而且webpack似乎需要更多的配置。
然而,我担心对JSPM的支持会逐渐消失,因为越来越多的人开始转向webpack。
因此,我应该因为这个原因切换到webpack吗?切换到webpack会给我带来一些未曾发现的好处吗?
我有一些非常简单的Angular 2快速启动模板,演示了我的设置,可以在这里找到:https://github.com/fintechneo/angular2-templates
希望能获得一些关于切换到webpack的好处的建议。
更新于2017-03-26
自发布此问题以来,我发现需要更快的生产构建加载时间。即使JSPM(或webpack)生成了优化的捆绑包,它仍然太大,并且需要在下载捆绑包后编译Angular 2模板。
因此,我找到了Ahead-of-Time编译器食谱(https://angular.io/docs/ts/latest/cookbook/aot-compiler.html),它可以生成小型捆绑包,在下载后立即启动。
不过,这需要使用npm安装所有angular模块的并行设置(而非jspm)。也许可以通过一些努力使用JSPM做到这一点,但我还没有研究过。JSPM和这个AoT食谱都使用rollup,所以最好将ngc编译器步骤与JSPM集成,但棘手的部分是要让TypeScript使用jspm_packages而不是node_modules。
上面提供的链接中更新了AoT,仍然在开发环境中使用JSPM。