• 在webpack+vue项目开发中引入第三方插件


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

    用模块(module)。

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

    的代码量)短小。通常你需要在你的webpack的config文件中配置这些loaders(装载机)。详情见Using 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>

  • 相关阅读:
    终于有了自己的blog了。
    [Asp.Net+C#]Datagrid使用技巧二(怎样让对动态创建的列进行排序)
    [Asp.Net+C#]Datagrid使用技巧一(怎样灵活控制表头)
    CentOS下配置iptables防火墙
    ios中提示信息的实现及自动消失
    ios导航条添加按钮
    NSAutoreleasePool自动释放池
    什么是Tollfree bridging
    Android开发中的drawable(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的区别以及联系
    文章逐步迁移过来
  • 原文地址:https://www.cnblogs.com/auto123-num/p/7505668.html
Copyright © 2020-2023  润新知