【问题标题】:ES2016 code reuse between Aurelia applicationsAurelia 应用程序之间的 ES2016 代码重用
【发布时间】:2016-07-29 12:47:10
【问题描述】:

在处理大量Aurelia 应用程序时,我们需要在这些应用程序之间共享代码。

要共享的代码不是我们(实际上是我们的客户)希望开源的。所以我们正在考虑创建私有 jspm 包,这样我们就可以在需要时轻松地重用我们的模块。这个想法的灵感来自blogpost

Jspm does support linking packages as well 这是我们在开发过程中真正希望使用的东西,因为要重用的代码还不够稳定。

链接 jspm 包的工作流

所以我们预期的工作流程是使用ES2016 代码创建不同数量的项目/模块,并从这些项目创建 jspm 包。然后这些包将被安装并链接到我们的应用程序中。

转译

据我们所知,在将 jspm 包安装到项目之前需要对其进行转译。因此,如果有任何更改,我们总是需要转译代码。

根据systemjs/babel-plugin documentationversion 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


【解决方案1】:

我个人会将包发布到某种内部 npm 提要。设置内部提要以镜像公共 npm 提要,然后将 .npmrc 设置为指向私有提要。那么就

jspm install npm:my-private-package

【讨论】:

  • 也考虑过。为了反映公共提要,我们需要设置自己的沙发数据库,​​我认为在这种情况下不值得付出努力。
  • 有几个选项不涉及设置沙发数据库实例。如果您是小型组织,最简单且非常有用的是使用 sinopia。其他选项通常涉及使用myget.org 等服务或npmjs.com/private-modules 中的私有模块选项
  • Sinopia 看起来很有趣,tnx 分享@AshleyGrant
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-23
  • 1970-01-01
  • 2017-07-27
相关资源
最近更新 更多