问题标签 [umd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
170 浏览

javascript - UMD:分配给 module.exports 是多余的吗?

我看到 JS 库使用这两种不同的实现。唯一的区别是 CommonJS 行。

它们在功能上是否相同?不需要将值分配给 module.exports 吗?

0 投票
1 回答
468 浏览

javascript - 控制 UMD javascript 模块的“公开的全局变量”

我正在创建一个小的 Javascript 前端框架。我决定针对 HTTP 2 优化它 -> 不捆绑。

我有异步依赖加载器,按需(在浏览器中)加载给定页面所需的所有资源。

但是有一个小问题。假设应用程序程序员想要使用 jQuery。我将带有 jQ​​uery 的脚本标签附加到正文中。

据我了解,托管在 cdn 上的所有库都使用 UMD。由于我既不使用 AMD、Common JS 也不使用 ES6 导入,它会将 jQuery 变量暴露给我的应用程序全局范围。

但我不想用该变量污染全局应用程序范围。相反,我希望能够重命名该变量,并可能将其添加到给定的命名空间。

可能吗?

我正在考虑的一种解决方案是使用 XHR 请求加载该脚本,在其上使用 eval() 并以某种方式将结果包装在我的框架代码中。但是我有点迷茫,不知道该怎么做。

感谢您的任何建议。

0 投票
1 回答
7551 浏览

javascript - 使用 ES6、Webpack 和 Babel 导入 UMD 样式模块

我发现了一些与此相关的 StackOverflow 问题,但没有一个匹配或解决我的问题。

我正在用 ES6 编写一个旨在用于浏览器和服务器的库。我发现了一些可以在服务器或浏览器上使用的 HTTP 请求库(popsicleaxios)。我已经在这两个地方成功地使用了这些库,但是在将它们导入我的源代码并使用输出的 webpacked 文件时遇到了一些问题。

我要导入axios库的 ES6 源文件是

我的 webpack 配置是

如您所见,我将 libraryTarget 设置为umd并将 umdNamedDefine 设置为true

而我.bablerc的是

我可以通过将我的库包含在script标签中来在浏览器中使用它,但是在使用 node.js 导入时我无法使用它。我得到一个XMLHttpRequest is not defined. axios 库表示它在浏览器上使用 XMLHttpRequest,在节点中运行时使用 http,但由于某种原因,它没有检测到它正在服务器上运行。我在一些 UML 库中遇到了这个问题,所以相信它不是特定的包。此外,由于我可以在节点 ES5 中使用这些库而无需运行 webpack 或 babel,因此我被认为是 webpack 的配置问题。

如何在 ES6 中导入这些 UMD 样式库并生成一个可以在服务器和浏览器上使用的带有 Webpack 和 Babel 的库?

0 投票
0 回答
298 浏览

webpack - Webpack umd 似乎破坏了 stacktrace-js 的功能

我们正在尝试将 stacktrace-js 与很棒的 logary-js(我的项目)一起使用,但是在通过 webpack 之后,它似乎不再起作用了。

这是 webpack 的配置https://github.com/logary/logary-js/blob/c7fdec752e5ce33843d458e9e6c590657005c60a/webpack.config.js

这是让我担心的输出(npm run build):

这个分支上,我尝试禁用 UglifyJs 无济于事。

npm run test给出这个输出(剪断):

所以看起来开发中的 webpack-mocha 集成工作得很好。但是,当我在发布后使​​用其他 JS 的 logary 时,我会从 stacktrace-js 获得以下输出:

用于 logary-js 的 stacktrace-js 丰富器

当它应该完成这些单元测试时(当我运行 mocha 时会这样做,但在我在浏览器中运行时不会这样做):

0 投票
2 回答
8045 浏览

typescript - Webpack UMD:关键依赖...无法静态提取

我正在尝试使用 webpack 构建一个 umd 库;无论我做什么都会收到警告:

D:/Code/Node/sample.io/source/index.ts 3:24 中的警告 关键依赖项:require 函数的使用方式不能静态提取依赖项

当我尝试require('./index.js')生成的 index.js 时,我得到:

错误:找不到模块“。”

为了完整起见,这里是我的所有文件:

webpack.config.js:

tsconfig.json:

包.json:

索引.ts:

  • node -v= v6.3.0
  • npm -v= 3.7.5

奇怪的是,我的一个朋友说这对他们来说没有错误。虽然他在node 4.2.6。如果我将模块更改为 commonjs,它可以正常工作而不会出现警告或错误。

0 投票
1 回答
2138 浏览

javascript - TypeScript UMD 的“模块”和“定义”都未定义

我使用“-m umd”转译我的 TypeScript,因为我的项目包括服务器、客户端和共享代码。但是,客户端代码在浏览器中不起作用。浏览器甚至没有显示任何错误,我找到的断点也没有命中,所以我不得不删除 js-ts 映射。然后,我能够调试它并发现问题。

以下是 UMD 生成的代码:

它不起作用,因为“模块”和“定义”都未定义。因此我的代码没有被执行,甚至没有任何异常。

怎么了?我怎样才能让它工作?

0 投票
0 回答
1292 浏览

webpack - Webpacking UMD 模块

我是 webpack 新手,所以如果我试图将 Webpack 用于它不适合的东西,我提前道歉。

我正在使用 webpack 发布我的第一个库。我的项目和节点(或 commonjs)环境中有大量 UMD 模块,我想保留目录结构,而在浏览器环境中,我想将所有模块捆绑到一个包中。我的问题是如何实现这一目标。当我的条目文件中有这样的东西时 -

我通过 webpack 传递上述文件,它不会将依赖项中的代码引入输出文件。如何使 webpack 自动将 AnalyticsBrowser.js 及其所有依赖项打包到一个包中?那可能吗?

注意 - 我删除了 UMD 包装器并用一个简单的 require 语句替换它们,webpack 能够将代码从它编译到输出中。所以我的问题是为什么它不能将 UMD 模块的依赖项编译到输出文件中。

0 投票
1 回答
597 浏览

javascript - jQuery 的 Webpack UMD 问题

我的库是用 webpack 构建的。libraryTarget 是 UMD。问题在于我的依赖项。例如我正在使用 jQuery。我的 webpack 配置如下所示:

在 AMD 环境中它可以工作。我可以毫无问题地要求:

但是,如果我想在非模块加载器环境中使用构建的文件,则会得到“$ 未定义”。当然解决方案是通过这种方式更改 webpack 配置:

比它在非模块加载器环境中工作。但是这次它不再在 AMD 环境中工作了,因为 requirejs 尝试加载jQuery.js而不是jquery.js

我该如何解决这个问题?

0 投票
1 回答
820 浏览

angular - Angular2,systemjs,无法使用 Rx.umd.js

在 Angular RC4 的最新版本中,Rxjs 可以在node_modulesornpmcdn.com目录中使用。

成功的 plunker 但不使用.umd.js

http://plnkr.co/edit/B33LOW?f=systemjs.config.js&p=preview

这是下载单个文件的网络选项卡屏幕截图。 在此处输入图像描述

当然,这个设置会下载很多单独的 RxJS 文件,因为它是单独读取文件,而不是.umd.js

但是,与其他 AngularJS 文件一样,当我尝试使用单个 umd.js 文件时,会发生以下错误。

在此处输入图像描述

plunker 尝试使用失败.umd.js,并且system.config.js

http://plnkr.co/edit/rVUNyz?p=preview&f=systemjs.config.js

systemjs.config.js

似乎“rxjs”根本没有使用“包”部分。rxjs我看不出使用in packages 部分 有什么区别。

只是为了使这个 plunker 工作,我必须将地图部分更改为以下内容bundles

我的问题是“有没有办法将 Rx.umd.js 与 Angular2 应用程序一起使用?”

0 投票
1 回答
58 浏览

javascript - 正确使用 UMD - Ramjet JS

完整代码:小提琴

我正在尝试学习 UMD,我花了一天时间尝试运行这个Ramjet JS。我不明白这里发生的这个错误:

才刚刚开始,一定是一个非常愚蠢的错误。

具体在该行:

  • (global.ramjet = factory());

谷歌浏览器控制台 说:

未捕获的类型错误:无法设置未定义的属性“ramjet”

(匿名函数)@ramjet.umd.js:4

(匿名函数)@ramjet.umd.js:1

非常感谢