博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
webpack4 系列教程(十二):处理第三方JavaScript库
阅读量:7223 次
发布时间:2019-06-29

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

教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步。或者来我的小站看更多内容:

0. 课程介绍和资料

本节课的代码目录如下:

本节课的package.json内容如下:

{  "dependencies": {    "jquery": "^3.3.1"  },  "devDependencies": {    "webpack": "^4.16.1"  }}复制代码

1. 如何使用和管理第三方JS库?

项目做大之后,开发者会更多专注在业务逻辑上,其他方面则尽力使用第三方JS库来实现。

由于js变化实在太快,所以出现了多种引入和管理第三方库的方法,常用的有 3 中:

  1. CDN:<script></script>标签引入即可
  2. npm 包管理: 目前最常用和最推荐的方法
  3. 本地js文件:一些库由于历史原因,没有提供es6版本,需要手动下载,放入项目目录中,再手动引入。

针对第一种和第二种方法,各有优劣,有兴趣可以看这篇:

针对第三种方法,如果没有webpack,则需要手动引入import或者require来加载文件;但是,webpack提供了alias的配置,配合webpack.ProvidePlugin这款插件,可以跳过手动入,直接使用!

2. 编写入口文件

如项目目录图片所展示的,我们下载了jquery.min.js,放到了项目中。同时,我们也通过npm安装了jquery

为了尽可能模仿生产环境,app.js中使用了$来调用 jq,还使用了jQuery来调用 jq。

因为正式项目中,由于需要的依赖过多,挂载到window对象的库,很容易发生命名冲突问题。此时,就需要重命名库。例如:$就被换成了jQuery

// app.js$("div").addClass("new");jQuery("div").addClass("old");// 运行webpack后// 浏览器打开 index.html, 查看 div 标签的 class复制代码

3. 编写配置文件

webpack.ProvidePlugin参数是键值对形式,键就是我们项目中使用的变量名,值就是键所指向的库。

webpack.ProvidePlugin会先从npm安装的包中查找是否有符合的库。

如果webpack配置了resolve.alias选项(理解成“别名”),那么webpack.ProvidePlugin就会顺着这条链一直找下去。

// webpack.config.jsconst path = require("path");const webpack = require("webpack");module.exports = {  entry: {    app: "./src/app.js"  },  output: {    publicPath: __dirname + "/dist/",    path: path.resolve(__dirname, "dist"),    filename: "[name].bundle.js",    chunkFilename: "[name].chunk.js"  },  resolve: {    alias: {      jQuery$: path.resolve(__dirname, "src/vendor/jquery.min.js")    }  },  plugins: [    new webpack.ProvidePlugin({      $: "jquery", // npm      jQuery: "jQuery" // 本地Js文件    })  ]};复制代码

4. 结果分析和验证

老规矩,根绝上面配置,先编写一下index.html

  
Document
复制代码

命令行运行webpack进行项目打包:

在 Chrome 中打开index.html。如下图所示,<div>标签已经被添加上了oldnew两个样式类。证明在app.js中使用的$jQuery都成功指向了jquery库。

转载地址:http://abkfm.baihongyu.com/

你可能感兴趣的文章
FreeWheel业务系统微服务化过程经验分享
查看>>
移动互联网下半场,iOS开发者如何“高薪”成长?
查看>>
Atlassian是怎样进行持续交付的?且听 Steve Smith一一道来
查看>>
Web Storage相关
查看>>
[PHP内核探索]PHP中的哈希表
查看>>
Apache-drill Architechture
查看>>
WordPress 5.2 Beta 3 发布,要求 PHP 5.6.20 以上版本
查看>>
通通连起来——无处不在的流
查看>>
互联网+时代,看云计算如何改变传统行业
查看>>
ZFS ARC & L2ARC zfs-$ver/module/zfs/arc.c
查看>>
c++类默认拷贝构造函数---浅复制
查看>>
2019年最火热的Golang项目
查看>>
可实现RSSD云硬盘120万IOPS的SPDK IO路径优化实践
查看>>
Vue项目部署遇到的坑(你肯定会遇到!)
查看>>
资源分享计划第三期 0511
查看>>
awk 文本处理
查看>>
【JSConf EU 2018】主题总结 (部分主题已有中文文章)
查看>>
JavaScript面向对象名词详解
查看>>
Java设计模式学习 - 责任链模式
查看>>
JVM,DVM,ART
查看>>