问题标签 [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 投票
3 回答
2386 浏览

webpack - 使用 webpack 从动态源输出 UMD 模块

我有一个项目结构,其中包含一个文件夹,我想在构建 webpack 配置时动态导入到 UMD 模块中,并使每个文件成为输出构建中的子模块。

例如,假设我的来源看起来像:

我希望 webpack 将这些源构建到一个模块中,这样我就可以将每个源都作为子模块来访问,就像这样;

我尝试遍历片段目录并使用文件名和路径创建一个对象,但我无法弄清楚哪个配置属性将指示 webpack 将它们捆绑到一个文件中并导出每个文件。这是我到目前为止所拥有的:

这会出错:Conflict: Multiple assets emit to the same filename ./lib/snippets.js

关于如何完成我正在寻找的任何想法?

0 投票
0 回答
276 浏览

javascript - 是否可以在不使用 CDK 的情况下使用 Angular Material?

我正在尝试使用UMD模块定义文件在ES5中使用Material the old school。

一切正常,直到我决定升级到版本 5。现在它说它找不到bidiundefined 并且当我调查这个问题时,我意识到这是因为新的CDKComponent Development Kit

现在我在一个地方找不到包含其所有部分的软件包 CDK UMD 文件,我真的不想将所有这些 a11y、i18n、bidi 等一一包括在内。

问题是,我查看 CDK 文件的次数越多,我就越意识到我什至可能根本不想要它们。没有他们我会很好。

有没有办法不加载它们并仍然使用材料?

0 投票
1 回答
373 浏览

javascript - 如何使用 Babel 将 jQuery 的 ECMA6 导入转换为 UMD 包装器?

我正在尝试使用 Babel 将 jQuery 的 ECMA6 导入转换为 UMD 包装器。

我的 ECMA6 来源如下所示:

和 Babel 将其转换为:

此代码在 Node.js 环境中运行良好,因为require('jquery')node_modules.

但是,在浏览器环境中global.jquery(相当于window.jquery)没有定义 - jquery 将自身导入为$or jQuery,而不是作为jquery.

是否有任何 Babel 设置可以解决此问题?

我现在的.babelrc

0 投票
1 回答
4805 浏览

typescript - 在 Typescript 项目中将 umd 全局变量与模块一起使用

我正在尝试让 Leaflet 库与我的 Typescript 项目配合得很好。

我的项目遵循 commonJs 模式(我的源文件中的导入\导出),但是当我使用 webpack 构建时,编译器从我的文件中给我以下错误,我尝试访问L传单模块公开的全局

'L' 指的是一个 UMD 全局,但当前文件是一个模块。考虑改为添加导入。

现在,如果我将传单导入到我的源文件中,我可以解决这个问题,如下所示:

但是我想知道是否可以在我的所有文件中全局访问 t 而不必在每个文件中导入。

我进行了一番挖掘,发现了一些解决方法,您可以像这样声明自己的全局变量:

全局.d.ts

我不确定这是否被推荐,感觉有点脏,webpack 配置是否有适当的方法来为 commonJs 项目提供 UMD 模块公开的全局变量,还是我在胡说八道?我承认我在试图理解模块类型及其可互换性之间的差异时感到困惑,所以放轻松!

0 投票
2 回答
27322 浏览

javascript - Webpack 4 通用库目标

根据Webpack 4 文档,如果我指定libraryTarget: 'umd'它应该会产生以下输出:

但是,我得到的是:

更准确地说,
(typeof self !== 'undefined' ? self : this, function()
我得到的不是这个:
(window, function()

这(显然)window is undefined在节点环境中导入时会导致运行时错误。

需要明确的是:
我知道window节点应用程序中不存在。我的问题不是关于这个,而是关于webpack

这是一个错误还是我错过了什么?

我的输出配置:

0 投票
2 回答
4431 浏览

angular - Angular 5 - 将组件的名称实例化为字符串

我知道如何使用ComponentFactoryResolver.resolveComponentFactory(AComponentType)

但是该方法需要 a Type,而在我的代码中,我将类型的名称命名为 a string

在 Angular API 中是否有解决方法string?如果没有,如何将字符串转换为TypeTypeScript 中的 a?

如果以上都不可能,我将求助于地图,但这并不是那么简单,因为我需要实例化的组件将来自远程获取的 UMD 角度组件库。

0 投票
0 回答
39 浏览

javascript - 避免覆盖 UMD 脚本

我们有一个使用 webpack UMD 配置打包的库:

如果客户两次包含 js,它会产生很多错误,可能是由于引用问题。如何检查库是否已经包含在内,在这种情况下我不会再次替换全局变量?

0 投票
1 回答
6504 浏览

javascript - 如何在 Vue 组件中保存对“this”的引用?

我不确定我是否正确执行此操作。请看一下这个简单的 Vue 组件Test.vue

如您所见,我将 this 的引用保存到一个名为的变量中,self因为 lambda 函数的值发生了this变化,例如ajax().then((obj) => self.name = obj.data);

我的问题是,当创建另一个组件实例时,它会覆盖self前一个实例中的值。因此,例如,如果我有两个<test id="1"></test><test id="2"></test>然后后面的组件覆盖self第一个的变量(同样发生v-for)。

所以我的问题是如何创建self保存到this每个实例的值并且不会被覆盖的变量?

编辑:是的,我知道我可以self = this在每个函数中做,但这只是一个简单的例子,只有一种方法。在我的实际组件中,我不想self = this在每个函数中都执行 20 多个函数。这就是为什么我可以创建一个变量,我可以在create调用期间分配一次并在任何地方使用它(就像我们过去使用that变量一样)。

0 投票
1 回答
684 浏览

javascript - UMD 全局变量的 TypeScript 模块类型?

我的 TypeScript 项目是为带有AMD模块的浏览器编译的。我包括lodash.min.js我自己,还有一堆其他的UMD库,它们都声明了全局变量,比如moment_. 我需要告诉我的 TypeScript _Lodash 的全局变量。我怎么能用进口做到这一点?如果我安装@types/lodash并使用import * as _ from "lodash";,它会尝试在运行时动态获取 AMD Lodash 模块,这会破坏一切。

如果我有一个声明_全局的文件,即export declare const _: LodashStatic;,我什至无法将我的声明导入另一个文件,或者它会尝试在运行时加载内容。declare如果 TypeScript 将其视为功能导入,那么关键字的意义何在。我认为声明只是告诉编译器关闭,并且在运行时会有单独加载的东西。对我来说幸运的是,我可以declare const _: LodashStatic;在数百个文件中的每一个文件中使用,并且一切正常,但如果我可以只声明一次然后导入其他文件,那就太好了......

0 投票
0 回答
628 浏览

angular - Webpack 将 [name] 用于具有多个入口点的 output.library

我正在尝试从我的入口点输出两个库,但我似乎无法将 [name] 用于 output.library,就像 output.filename 一样。我还尝试将它放入每个 webpack 文档的数组中(https://github.com/webpack/webpack/tree/master/examples/multi-part-library#webpackconfigjslibrary: ['[name]'],:。

使用上面的配置,我的文件在我的编辑器中显示在 dist 下,但不在浏览器中,并且从 root 中丢失。如何正确设置此配置以输出不同名称的多个库?