通过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 相关文章推荐
JavaScript Event学习第六章 事件的访问
Feb 07 Javascript
BOM与DOM的区别分析
Oct 26 Javascript
jQuery实现图片信息的浮动显示实例代码
Aug 28 Javascript
window.location的重写及判断location是否被重写
Sep 04 Javascript
JS动画效果打开、关闭层的实现方法
May 09 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
详解javascript中对数据格式化的思考
Jan 23 Javascript
微信小程序 实现动态显示和隐藏某个控件
Apr 27 Javascript
JS实现留言板功能[楼层效果展示]
Dec 27 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
Jan 29 Javascript
vue响应式系统之observe、watcher、dep的源码解析
Apr 09 Javascript
详解如何探测小程序返回到webview页面
May 14 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
很温暖很温暖的Lester Young
2021/03/03 冲泡冲煮
php2html php生成静态页函数
2008/12/08 PHP
php+mysqli预处理技术实现添加、修改及删除多条数据的方法
2015/01/30 PHP
typecho插件编写教程(六):调用接口
2015/05/28 PHP
php 微信开发获取用户信息如何实现
2016/12/13 PHP
yii2使用gridView实现下拉列表筛选数据
2017/04/10 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
laravel入门知识点整理
2020/09/15 PHP
js类后台管理菜单类-MenuSwitch
2007/09/12 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
JavaScript 空位补零实现代码
2010/02/26 Javascript
jquery maxlength使用说明
2011/09/09 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
利用js来实现缩略语列表、文献来源链接和快捷键列表
2016/12/16 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
JS获取表格视图所选行号的ids过程解析
2020/02/21 Javascript
微信小程序国际化探索实现(附源码地址)
2020/05/20 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现变量数值交换及判断数组是否含有某个元素的方法
2017/09/18 Python
Python数据结构之双向链表的定义与使用方法示例
2018/01/16 Python
Django权限机制实现代码详解
2018/02/05 Python
解析Python的缩进规则的使用
2019/01/16 Python
对于Python深浅拷贝的理解
2019/07/29 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
2020/03/24 Python
python 串行执行和并行执行实例
2020/04/30 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
学生操行评语大全
2014/04/24 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
社区志愿者活动总结
2014/06/26 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
钱学森电影观后感
2015/06/04 职场文书
Pytorch中的学习率衰减及其用法详解
2021/06/05 Python