Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.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 如何为已经模块化的库构建独立的外部依赖js文件?_Javascript_Webpack_Kendo Ui_Browserify - Fatal编程技术网

Javascript 如何为已经模块化的库构建独立的外部依赖js文件?

Javascript 如何为已经模块化的库构建独立的外部依赖js文件?,javascript,webpack,kendo-ui,browserify,Javascript,Webpack,Kendo Ui,Browserify,基本上,我有许多引用和使用CDN库的遗留web应用程序。我的任务是删除对远程主机的此类请求,因此我希望将库合并到现有的npm脚本任务中,该任务将所有依赖项收集到应用程序引用的单个本地js文件中 我遇到的问题是,与jquery或angular等其他库不同,它没有提供可以立即使用的预编译js文件,但它是模块化的,需要webpack或browserify来使用它 由于我们的遗留应用程序不使用模块化方法来加载依赖项,而且我没有重写它们的余地,因此我想以某种方式将模块化库打包到一个等效的js文件中,该文件

基本上,我有许多引用和使用CDN库的遗留web应用程序。我的任务是删除对远程主机的此类请求,因此我希望将库合并到现有的npm脚本任务中,该任务将所有依赖项收集到应用程序引用的单个本地js文件中

我遇到的问题是,与jquery或angular等其他库不同,它没有提供可以立即使用的预编译js文件,但它是模块化的,需要webpack或browserify来使用它

由于我们的遗留应用程序不使用模块化方法来加载依赖项,而且我没有重写它们的余地,因此我想以某种方式将模块化库打包到一个等效的js文件中,该文件将加载库,这样我的应用程序就可以通过对它的引用来访问它

我曾尝试使用browserify从只包含对库的require引用的源js文件编译,但在我的应用程序中引用编译后的文件会导致错误,因为库的函数对我的应用程序不可用


有人能给我指出正确的方向吗?

如果您使用一些基于模块的库,并且希望单独使用它们,您需要做两件事

将模块公开到全局范围。可能使用expose加载程序,甚至只指定给窗口对象

如果模块同时使用的库也包括独立的库,则您需要向webpack介绍这些

例如


最后,当您包含这些时,请记住脚本标记的顺序。例如,确保在绑定javascript之前包含jquery。

使用webpack时,您的方法是正确的,您只需要公开库的。如果lib纯粹是基于模块的,那么您将不得不创建自己的全局名称,…例如。jQuery为你的剑道UI做了jQuery&$,也许你可以将它公开给一个全局剑道等等。谢谢Keith。我不确定这是否只是kendo的一些怪癖,但似乎全局变量kendo是由我上面提到的browserify编译文件设置的,但是jQuery扩展函数(例如$..kendoDropDownList)在全局范围内不可用,它们在我使用browserify编译的js文件中可用。有什么想法吗?是的,您很可能将jQuery作为kendu UI中的依赖项。默认情况下,您将得到两个版本的jQuery。您在这里要做的是设置webpack,以便jQuery是一个外部数据库。在网页包配置中,放置'externals:{jquery:jquery},。注意小写的jquery,通常在节点中我们保持require的小写,但如果Kendu UI确实需要“jquery”,则需要进行更改。注意到您使用的是browserfy,我不是browserfy用户,但看起来他们称之为shimming,所以您可以这样做。聪明的基思!我在externals中使用了webpack引用jQuery,现在它运行良好。如果你想加上这个作为答案,那么我会给你积分。谢谢
{
  externals: {
    jquery: 'jQuery' 
  }
  // other stuff..
}