博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在webpack+vue项目开发中引入第三方插件
阅读量:4982 次
发布时间:2019-06-12

本文共 3313 字,大约阅读时间需要 11 分钟。

并不是所有的js文件都可以直接在webpack中使用。这些文件可能不支持模块(module)格式,甚至完全没有使

用模块(module)。

webpack提供了几种loaders(装载机)来解决这些文件如何在webpack中使用。 这个示例使用require来保证他们(

的代码量)短小。通常你需要在你的webpack的config文件中配置这些loaders(装载机)。详情见

(使用加载器)。

1.IMPORTING(进口)

如果一个文件不通过require()依赖进口,您将需要使用一个loader(装载机)。

imports-loader(

导入加载器)

允许您使用依赖于特定全局变量的module(模块), 这对于依赖于全局变量的第三方模块非常有用,比如$或者这是

window object(窗口对象)。imports-loader(进口装载机)可以添加必要的require('whatever”)calls(调用)

,因此模块在webpack上工作。

例子:

预计中的一个全局变量$和你有一个应使用jQuery的模块。

require("imports-loader?$=jquery!./file.js")

预计配置一个全局变量xconfig和你希望是{value: 123 }形式。

require("imports-loader?xConfig=>{value:123}!./file.js")

认为这是全局范围。

require("imports-loader?this=>window!./file.js") or require("imports-loader?

this=>global!./file.js")

插件provideplugin

这个插件使模块(module)在每个模块(module)中作为变量可用。这个模块 只是你需要使用的变量。

示例:

在每个模块中提供$和jQuery,无需编写 require(“jquery”)。

new webpack.ProvidePlugin({    $: "jquery",    jQuery: "jquery",    "window.jQuery": "jquery"

})

2.EXPORTING(出口) 该文件不导出其值。

exports-loader(出口装载机)

该loader(装载机)从文件里面导出变量。

示例:

该文件设置了一个全局范围变量var XModule = ...

var XModule = require(“exports-loader?XModule!./file.js")

该文件设置了多个全局范围变量:var XParser,Minimizer.

var XModule = require(“exports-loader?Parser=XParser&Minimizer!./file.js”)

XModule.Parser;XModule.Minimizer;(注释Parser:解析器)

文件设置一个全局变量XModule =...

require("imports-loader?XModule=>undefined!exports-loader?XModule!./file.js") (import to not leak

to the global context:导入不泄漏到全局上下文)

文件设置窗口属性window.XModule =... require("imports-loader?window=>{}!exports-loader?window.XModule!./file.js")

3.FIXING BROKEN MODULE STYLES(修复损坏的模块样式)

有些文件使用模块样式错误。你可能想解决这个通过webpack不使用这 风格的教学。

Disable some module styles(禁用某些模块样式 ):

示例:

破碎的AMD

require("imports-loader?define=>false!./file.js")

破碎的CommonJS

require("imports-loader?require=>false!./file.js")

配置选项module.noParse

这不由webpack解析。因此不能使用依赖项。这可能对 好的图书馆。

例子:

{     module: {         noParse: [             /XModule[\\\/]file\.js$/,             path.join(__dirname, "web_modules", "XModule2")         ]     } } 注意:exports和module仍然可用并且能用。你可能想使用imports-loader未定义这些exports和module

script-loader(脚本装载机)

这个加载器在全局上下文中计算代码,就像在脚本标签中添加代码一样。在这种模式下,每一个正常的库都应该

可以工作。require、module等未定义。

注:该文件内容作为字符串添加到bundle(批)。在webpack中它不是(体积)最小的,因此要使用(体积) 最

小的版本。也没有开发工具支持通过这个loader来添加库。

EXPOSING(曝光)

有些情况下,您希望模块将自己导出到全局上下文中。

不要这样做,除非你真的需要这个。(最好用provideplugin)

expose-loader(曝光加载器) 这个加载器(loader)暴露了出口模块全局环境。

例子:

揭露XModule的全球语境中 require("expose-loader?XModule!./file.js") 另一个例子:

require('expose-loader?$!expose?jQuery!jquery');

 ...

$(document).ready(function() { console.log("hey"); })

通过将jQuery作为包含jQuery代码或根文件的文件中的全局名称空间提供,您可以在项目中处处使用jQuery。这

是很好的如果你计划在你的webpack项目中执行Bootstrap(启动项目)。

注意:使用太多的全局名称间隔会使应用程序效率降低。如果您打算使用许多全局名称空间,那么考虑在您的项

目中实现类似Babel runtime(运行时)之类的东西。

ORDER OF LOADERS(加载器顺序) 以装载机 在极少数情况下,当您需要应用多个技术时,需要使用正确的加载顺序: 内联:expose-loader!

imports-loader!export-loaders,配置优先级:expose > imports > exports。

//  上面的内容都是在网上其他人那里看到的

有些真的是天下文章一大抄,都是文章的搬运工。具体实践到底行不行的同,就没有一个合理的答复。下面来说一说,我自己在项目中使用到的。

1.在index.html中引用,就像平常开发静态文件一样:

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

2.通过npm安装方式:npm install jquery  --save-dev

在后缀名为.vue的文件中引用,就比较简单了。

<script>

  import $ from 'jquery'

export default { ... }

</script>

3.利用{}直接引用:

<script>

  import {PhotoSwipe} from '../assets/js/photoswipe.min.js'

export default {

   mounted () {

       let ps = new PhotoSwipe();

   }

 }

</script>

 

转载于:https://www.cnblogs.com/auto123-num/p/7505668.html

你可能感兴趣的文章