【发布时间】:2016-07-29 12:47:10
【问题描述】:
在处理大量Aurelia 应用程序时,我们需要在这些应用程序之间共享代码。
要共享的代码不是我们(实际上是我们的客户)希望开源的。所以我们正在考虑创建私有 jspm 包,这样我们就可以在需要时轻松地重用我们的模块。这个想法的灵感来自blogpost
Jspm does support linking packages as well 这是我们在开发过程中真正希望使用的东西,因为要重用的代码还不够稳定。
链接 jspm 包的工作流
所以我们预期的工作流程是使用ES2016 代码创建不同数量的项目/模块,并从这些项目创建 jspm 包。然后这些包将被安装并链接到我们的应用程序中。
转译
据我们所知,在将 jspm 包安装到项目之前需要对其进行转译。因此,如果有任何更改,我们总是需要转译代码。
根据systemjs/babel-plugin documentation,version 0.17 将支持动态转译(此时处于测试阶段)。目前我们正在使用jspm 版本0.16.32,它不支持使用babel 6 进行动态转译。
不知何故,这个工作流程感觉过度设计,因此我们考虑在我们的应用程序中进行动态转译,尽管我们担心会降低性能。
您将如何在不同的 Aurelia 应用程序之间共享 es2016 代码?
有没有不使用jspm包实现代码复用的方法?
【问题讨论】:
-
你所说的一切对我来说都是有道理的。我认为即时转译可能对性能不利。是的,每次你更新模块时,你也必须在其他项目中更新它。在后端或前端开发中,工作流程是相同的。要使用新版本,您必须下载新的 dll/包,并祈祷不要出现任何重大更改。即使是理论上永远不会更改的链接 API,您也必须指定版本(通常通过 url 或 http 标头)。
-
简而言之,恕我直言,您现在想要实现的目标并非易事。即使你实现了,它也可能有一些副作用。
-
“是的,每次你更新模块时,你都必须在其他项目中更新它”:使用
gulp bump-release或类似的东西结合jspm update,我们有版本控制。这样我们就可以控制每个项目的更新过程,我们不必为重大更改祈祷;-) 归根结底,我们谈论的是我们自己开发的包,所以重大更改是我们最不关心的; -)
标签: ecmascript-6 babeljs aurelia jspm babel-6