【发布时间】:2017-03-08 11:04:08
【问题描述】:
最近我在我的 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 存储库中的几乎任何模块也非常好。
当阅读那里的文章时,我得到的印象是人们正在转向 webpack 以用于 Angular 2 应用程序。我自己还没有迁移到 webpack,因为我认为我的设置工作正常,而且 webpack 似乎需要更多的配置。
但我担心对 JSPM 的支持会逐渐消失,因为似乎越来越多的人正在转向 webpack。
因此我应该切换到 webpack 吗?切换到 webpack 会不会给我带来一些我没有发现的好处?
我有一些非常简单的 Angular 2 快速入门模板来展示我的设置,可以在这里找到:https://github.com/fintechneo/angular2-templates
很高兴获得一些关于切换到 webpack 的好处的意见。
2017 年 3 月 26 日更新
自从发布此问题以来,我发现生产构建需要更快的加载时间。即使 JSPM(或 webpack)生成了优化的包,它仍然太大,需要在包下载后编译 angular2 模板。
所以我找到了 Ahead-of-Time 编译器说明书 (https://angular.io/docs/ts/latest/cookbook/aot-compiler.html) - 它制作了下载后立即启动的小包。
这需要一个并行设置,尽管所有的角度模块都是使用 npm(不是 jspm)安装的。可能也可以通过一些努力使用 JSPM,但我还没有研究过。 JSPM 和这本 AoT 食谱都使用汇总,因此它可以让 ngc 编译器步骤与 JSPM 集成,但棘手的部分是让 TypeScript 使用 jspm_packages 而不是 node_modules。
上面的设置链接已使用 AoT 进行了更新,开发环境仍然使用 JSPM。
【问题讨论】: