如何在 HTML 中将 NPM 包用作普通的 javascript

Posted

技术标签:

【中文标题】如何在 HTML 中将 NPM 包用作普通的 javascript【英文标题】:How to use NPM package as normal javascript in HTML 【发布时间】:2020-04-06 14:08:17 【问题描述】:

我想在我的应用程序中使用 html2canvas JS 库。通过在我的 HTML 文件中直接加载 html2canvas.js 文件,我能够在我的应用程序中使用旧版本的 html2canvas。

但仅通过 npm 包支持较新的版本。

当我尝试在我的 HTML 文件中包含较新的 html2canvas.js 时,它显示

html2canvas 未定义

我曾尝试修改 html2canvas.js 文件,以便我可以直接在我的 HTML 文件中使用它,而无需使用任何其他包管理器或其他依赖项。

我从here 下载了html2canvas。我无法通过直接在 HTML 文件中加载这个文件来使用它。如下

<script type="text/javascript" src="js/html2canvas.js"></script>

【问题讨论】:

npm install ,您可以通过 node_modules 文件夹进行引用。打开它,找到你感兴趣的包,然后在脚本标签中运行目标文件。类似的东西:&lt;script type="text/javascript" src="node_modules/html2canvas/dist/html2canvas.js"&gt;&lt;/script&gt; 在撰写此问题时只是一个错字。实际上我的应用程序是静态 HTML 应用程序。我根本没有使用任何 npm、nodejs 的东西。我已经从给定的链接下载了 html2canvas,我想像以前一样直接在我的 HTML 中使用它(旧版本的 html2canvas) 您仍然可以将 npm 与静态 html 应用程序一起使用。见安东尼的回答。 也许这可以帮助https://wesbos.com/javascript-modules/ 我认为你使用这个文件的方式不太对;你见过这个吗? github.com/niklasvh/html2canvas/blob/master/examples/… 【参考方案1】:

npm 安装的包位于/node_modules/,前端不能直接使用。要使用这些模块,您需要使用 ES6 语法并使用以下代码导入它们:

// Just an example, you need to read the doc to see how to import
import html2cavas from "html2cavas"

但是,浏览器不能直接读取 ES6 语法。因此,您需要使用 Babel 将您的 ES6 代码转换为普通的 JS 代码。见https://hackernoon.com/use-es6-javascript-syntax-require-import-etc-in-your-front-end-project-5eefcef745c2

转译代码后,使用&lt;script&gt; 标签导入转译代码。

或者,您可以从 /node_modules/ 复制您需要的内容并将其复制到您的 js 文件夹中。不过不推荐。

【讨论】:

这个答案给了我很好的洞察力,如果有人想用一个例子来总结这篇文章,那就太好了。【参考方案2】:

您可以将 CDN 用于此类库。在这种情况下,请在此处查看:https://cdnjs.com/libraries/html2canvas

您应该在那里找到一个用于生产和常规开发的。 (https://cdnjs.cloudflare.com/ajax/libs/html2canvas/0.4.1/html2canvas.js) =>开发

<script>
  const htmlCanvas = require("htmlcanvas")
</script>

【讨论】:

如我在问题中提到的,支持旧版本。但是较新的版本不是这样工作的。 您好 Agrawal,您可以使用页面版本选择上的下拉菜单,但带有 cdn 的最新版本是 0.0.5,这可能不是您需要的。 CDN 并不是使用此类 JS 库的唯一方法。我正在使用从 html2canvas 官方发布页面下载的离线文件,即。 github.com/niklasvh/html2canvas/releases 如果它说“你可以”而不是“你通常会”,我会赞成这个,因为它取决于用例。 unpkg 将提供最新版本:unpkg.com/html2canvas

以上是关于如何在 HTML 中将 NPM 包用作普通的 javascript的主要内容,如果未能解决你的问题,请参考以下文章

我们可以在常规的非 Blazor HTML 页面中将 Blazor 组件用作 Web 组件吗?

您如何使用带有 require 和模块导出的 npm 包作为纯 JS 库

如何使用 npm 包依赖

如何使用 Brunch 编写多文件 NPM 包

如何从需要构建步骤的 github 安装 npm 包,例如分叉图书馆时?

在C ++项目中将clang用作库