Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 导出外部网页包_Javascript_Node.js_Typescript_Webpack - Fatal编程技术网

Javascript 导出外部网页包

Javascript 导出外部网页包,javascript,node.js,typescript,webpack,Javascript,Node.js,Typescript,Webpack,这只是我今天的想法,我没有看到太多信息,所以我将分享这些奇怪的案例以及我个人如何解决它们(如果有更好的方法,请发表评论,但同时这可能会帮助其他人^^) 在常规模块中,您可以执行以下操作来导出函数/库/对象/数据: //常规节点方式: module.exports=数据; //ES6路 //(将通过webpack使用模块变量以常规方式传输) 出口数据; 默认导出数据; 编译库时通常使用babel或tsc,但如果出于任何原因,您不仅想编译(传输)库,还想使用webpack打包库,则会遇到这种情况

这只是我今天的想法,我没有看到太多信息,所以我将分享这些奇怪的案例以及我个人如何解决它们(如果有更好的方法,请发表评论,但同时这可能会帮助其他人^^)

在常规模块中,您可以执行以下操作来导出函数/库/对象/数据:

//常规节点方式:
module.exports=数据;
//ES6路
//(将通过webpack使用模块变量以常规方式传输)
出口数据;
默认导出数据;
编译库时通常使用
babel
tsc
,但如果出于任何原因,您不仅想编译(传输)库,还想使用webpack打包库,则会遇到这种情况

正如您所知,在webpack捆绑包中,
module
变量是捆绑包的本地变量(每个模块/文件都使用一个函数包装,其中
module
是一个参数=本地变量),因此,在捆绑包之外没有任何东西真正导出,只是由webpack很好地管理

这意味着您不能使用常规的require/import方法访问内容

在某些情况下,您可能会发现有必要将导出到网页包之外。(即,您正在尝试使用webpack构建库,并且希望其他人可以访问该库)。这基本上意味着您需要访问原始的
模块
变量,但webpack并不像
\uuuu非\uWebpack\uuu require\uuuu
那样公开它

另见:


解决方案是创建我们自己的
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

我是如何做到这一点的,就是使用
webpack.BannerPlugin
将一些代码注入捆绑包外部的。在完成缩小后,这些代码会被预先添加到构建中,因此可以安全地保存

webpack.config.js
中:

插件:[
新横幅广告({
raw:是的,
横幅:`const\uuuu non\u webpack\u module\uuuu=module;`,
}),
]
同样,如果您使用的是TypeScript,请在
global.d.ts
中:

declare const __non_webpack_module__: NodeModule;
现在,您可以在代码中执行以下操作:

\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu*/
这将允许像往常一样从其他文件导入它

提示:您可能需要查看以检查其他选项,如
包含
排除
,因此此变量仅在所需文件上生成,等等


您是否考虑过使用此选项可以排除/白名单等@Keith感谢您的建议。但我认为这涵盖了一个不同的问题:从构建中排除模块。此问题涉及的是在webpack捆绑包之外导出(以便可以从其他地方导入某些内容)哦,是的。在这种情况下,我通常会把它放在
全局上。这是真的,这是一种方式,就像在浏览器的
窗口中设置一个全局对象一样…但是它设置了一个全局对象…:-/但你不就是这么做的吗,你设置了一个名为->
\u非网页包\u模块\u
的全局对象,这一切都会发生如何像往常一样从其他文件导入它,当你说“正常”时,你在这里是什么意思?.IOW:doing->
globalThis.\uu非\u网页包\uu模块\uuu
将是相同的。