【问题标题】:How to build a standalone / framework agnostic web component widget to use in any web app?如何构建一个独立/框架无关的 Web 组件小部件以在任何 Web 应用程序中使用?
【发布时间】:2016-08-10 16:19:26
【问题描述】:

我想构建一个复杂的 Web 组件:

  • 我可以在我的旧网站(或任何其他网站)中使用
  • 它可以在我的网站使用 Angular/Angular2/React/Jquery 等构建的情况下使用...
  • 我可以使用任何技术来构建它 Angular/Angular2/React 等...
  • 避免依赖和版本冲突(即我的组件是用 Angular 1.5.6 构建的,而实施网站有 Angular 1.4.7)

使用 NPM 模块可以解决这个问题吗(版本控制、依赖等)?

编辑:(示例)

例如,我会通过 npm 要求我的组件 它具有依赖项(需要)我选择的框架(即角度 1.5.6)

在这种情况下,我的组件代码不会使用来自 NPM 的依赖项(无论站点使用什么)?

【问题讨论】:

  • 要使其真正与框架无关,将您的组件制作为 Web 组件而不是 Angular 组件不是很明智吗?这样您就不必为使用您的组件的每个站点下载整个 Angular。 MDN 关于 Web 组件的文章在这里:developer.mozilla.org/en-US/docs/Web/Web_Components
  • 我不想依赖现有的站点技术。例如,我希望可以选择使用 angular2 编写新组件。请注意,如果网站将其框架更新为 angular2,我不希望出现一些版本控制问题。知道如何防止它们发生吗?
  • 这就是我想说的——如果您不希望它依赖于现有的站点技术并且您不希望出现冲突的版本控制问题,那当然是仅从 html/css/js 制作组件会更容易,没有框架? NPM 似乎无法在 package.json 文件中安装一个依赖项的多个版本,因此很难避免版本控制问题。 Vanilla Web 组件完全独立于网站,听起来就像您正在寻找的一样,即使需要额外的工作来使您的组件不使用 Angular。
  • 我已经编辑了这个问题。我正在尝试找到一种不使用 vanilla js 作为我的组件的方法。

标签: reactjs angular npm dependencies web-component


【解决方案1】:
  1. 您可以在旧站点上使用使用 Angular 构建的组件,但您必须先加载 Angular。您应该注意可能与其他目录发生名称冲突。
  2. 如果该站点已经使用 Angular 1.x 构建,则考虑到您的组件与该站点正在使用的 Angular 版本兼容,您可以只将您的组件混入其中。如果不是,我认为反应是可能的,因为它可以融入其中。
  3. 如果站点是使用 Angular 1.4.7 构建的,如您所说,您可能需要将组件降级以供 1.4.7 使用。这意味着如果您使用 angular.module(...).component 您将需要将其切换为指令。或者,如果可能,您可以将站点切换为使用 1.5。如果没有,您可以回去做出反应。
  4. 如果您想使用 Angular 2.0,您可以与 Angular 1.x 并排使用,但是,遗留应用程序需要使用 Angular 升级模块进行引导,使用 upgradeAdapter。这意味着您需要干扰应用程序,如果我理解正确的话,您不想这样做。

【讨论】:

  • 我在关于这个问题的原始问题中添加了一个示例。我试图不知道网站使用什么。 npm 能解决依赖/版本问题吗?
  • 在这里做类似的事情(这个问题与 github 存储库有关):stackoverflow.com/questions/65159018/…
猜你喜欢
  • 2021-11-26
  • 2011-10-16
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
相关资源
最近更新 更多