通过webpack引入第三方库的方法


Posted in Javascript onJuly 20, 2018

一般来说,引入第三方库有一下三种情况:

  1. 通过CDN引入;
  2. 通过npm 安装并引入;
  3. 第三方js文件就在本地

通过CDN

这是最简单的一种方式,例如引入高德地图,可以直接把以下代码放在index.html文件底部,这种情况与webpack无关,因为webpack的入口文件并不在此处

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.8&key=您申请的key值"></script>

npm

通过npm install安装的包会放在node modules文件夹下,当使用时,可以直接在用到的文件顶部引入进来,例如import或者require。但如果每个模块化的文件都会用到,那么每个文件都要去引入这个第三方文件,很繁琐,这时候就可以用webpack的插件:ProvidePlugin,可以理解这个插件的作用就是把第三方库引入,且它的作用域是全局的。

例如引入jquery

new webpack.ProvidePlugin({
 $: 'jquery',
 jQuery: 'jquery'
})

那么就可以用$和jQuery了,它们两个都表示jquery,需注意的是$和jQuery后面的值(jquery)必须和npm install jquery中的jquery保持一致,不然会找不到。

本地JS库文件

会有这么一种情况:第三方的js文件就在本地,怎么通过webpack引入呢?比如第二种jquery的情况,

new webpack.ProvidePlugin({
 $: 'jquery',
 jQuery: 'jquery'
})

这样写肯定会找不到jquery了,因为它并不在node modules中,这时可以用webpack配置中的resolve选项,给jquery指定一个别名,并配置其路径。

假如我们的jquery.js文件放在dist文件夹下面

resolve:{
  alias: {
   $: path.resolve(__dirname, './dist/jquery.js'),
   jQuery: path.resolve(__dirname, './dist/jquery.js'),
  }
}

这样就可以了。

通过loader

除了ProvidePlugin这个插件,还有一个imports-loader可以完成引入第三方库的工作。

test来指定哪个文件需要引入第三方库,通过options配置jquery。然后打包后可以看出,打包后的app.js文件变大了。

module: {
    rules: [
      {
        test: path.resolve(__dirname, "./src/app.js"),
        use: "imports-loader"
        options:{
          $:'jquery'
        }
      }
    ]
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery 表单中textarea字数限制实现代码
Dec 07 Javascript
基于jQuery架构javascript基础体系
Jan 01 Javascript
ajax中get和post的说明及使用与区别
Dec 23 Javascript
jQuery实现鼠标经过提示信息的地图热点效果
Apr 26 Javascript
js判断图片加载完成后获取图片实际宽高的方法
Feb 25 Javascript
JS中mouseover和mouseout多次触发问题如何解决
Jun 06 Javascript
浅谈EasyUI常用控件的禁用方法
Nov 09 Javascript
100多个基础常用JS函数和语法集合大全
Feb 16 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
前端构建工具之gulp的语法教程
Jun 12 Javascript
bootstrap 路径导航 分页 进度条的实例代码
Aug 06 Javascript
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
May 06 Javascript
详解Koa中更方便简单发送响应的方式
Jul 20 #Javascript
详解angular分页插件tm.pagination二次触发问题解决方案
Jul 20 #Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 #Javascript
微信小程序实现topBar底部选择栏效果
Jul 20 #Javascript
JS+H5 Canvas实现时钟效果
Jul 20 #Javascript
详解处理bootstrap4不支持远程静态框问题
Jul 20 #Javascript
基于Vue+element-ui 的Table二次封装的实现
Jul 20 #Javascript
You might like
一些花式咖啡的配方
2021/03/03 冲泡冲煮
php+html5使用FormData对象提交表单及上传图片的方法
2015/02/11 PHP
php实现ip白名单黑名单功能
2015/03/12 PHP
解决laravel 5.1报错:No supported encrypter found的办法
2017/06/07 PHP
PHP的RSA加密解密方法以及开发接口使用
2018/02/11 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
ext读取两种结构的xml的代码
2008/11/05 Javascript
对字符串进行HTML编码和解码的JavaScript函数
2010/02/01 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
JavaScript中transform实现数字翻页效果
2017/03/08 Javascript
js绑定事件和解绑事件
2017/04/27 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
React 父子组件通信的实现方法
2019/12/05 Javascript
js实现双色球效果
2020/08/02 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
[08:38]DOTA2-DPC中国联赛 正赛 VG vs Elephant 选手采访
2021/03/11 DOTA
Python中的作用域规则详解
2015/01/30 Python
Python 字符串转换为整形和浮点类型的方法
2018/07/17 Python
如何在python字符串中输入纯粹的{}
2018/08/22 Python
Python基于opencv实现的简单画板功能示例
2019/03/04 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
推荐技术人员一款Python开源库(造数据神器)
2020/07/08 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
2020/07/28 Python
纯css3实现思维导图样式示例
2018/11/01 HTML / CSS
优良学风班总结材料
2014/02/08 职场文书
2014年中班元旦活动方案
2014/02/14 职场文书
我的梦想演讲稿1000字
2014/08/21 职场文书
科长个人四风问题整改措施思想汇报
2014/10/13 职场文书
三好学生个人总结
2015/02/15 职场文书
2015年超市员工工作总结
2015/05/04 职场文书
MySQL慢查询的坑
2021/04/28 MySQL
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
Redis入门基础常用操作命令整理
2022/06/01 Redis
MySQL主从切换的超详细步骤
2022/06/28 MySQL