1. 引言
通过前面的章节,我们已经学会了Vue
的事件内容分发,有兴趣的同学可以参阅下:
- 《Vue系列教程(01)- 前端发展史》
- 《Vue系列教程(02)- Vue环境搭建、项目创建及运行》
- 《Vue系列教程(03)- Vue开发利器VsCode》
- 《Vue系列教程(04)- VsCode断点调试》
- 《Vue系列教程(05)- 基础知识快速补充(html、css、js)》
- 《Vue系列教程(06)- Vue调试神器(vue-devtools)》
- 《Vue系列教程(07)- Vue第一个程序(MVVM模式的引入)》
- 《Vue系列教程(08)- 基本语法》
- 《Vue系列教程(09)- 事件绑定》
- 《Vue系列教程(10)- Model数据内容双向绑定》
- 《Vue系列教程(11)- 组件详解》
- 《Vue系列教程(12)- Axios异步通信》
- 《Vue系列教程(13)- 计算属性(computed)》
- 《Vue系列教程(14)- 插槽(slot)》
- 《Vue系列教程(15)- 事件内容分发($emit)》
Vue
的基础知识至此基本已经学完了,接下来主要学习Vue
项目的打包方式,即本文讲的webpack
。
2. 什么是webpack
Webpack是当下最热门的前端资源模块化管理和打包工具, 它可以:
- 将许多松散耦合的模块按照依赖和规则打包成符合生产环境部署的前端资源。
- 还可以将按需加载的模块进行代码分离,等到实际需要时再异步加载。
- 通过loader转换, 任何形式的资源都可以当做模块, 比如
Commons JS、AMD、ES 6、CSS、JSON、Coffee Script、LESS
等;
Webpack是一个现代
JavaScript
应用程序的静态模块打包器(module bundler)
。当Webpack处
理应用程序时, 它会递归地构建一个依赖关系图(dependency graph
) , 其中包含应用程序需要的每个模块, 然后将所有这些模块打包成一个或多个bundle
。(类似于Maven
)
伴随着移动互联网的大潮, 当今越来越多的网站已经从网页模式进化到了WebApp
模式。它们运行在现代浏览器里, 使用HTML 5、CSS 3、ES 6
等新的技术来开发丰富的功能, 网页已经不仅仅是完成浏览器的基本需求;WebApp
通常是一个SPA
(单页面应用) , 每一个视图通过异步的方式加载,这导致页面初始化和使用过程中会加载越来越多的JS
代码,这给前端的开发流程和资源组织带来了巨大挑战。
前端开发和其它开发工作的主要区别:
- 首先是前端基于多语言、多层次的编码和组织工作
- 其次前端产品的交付是基于浏览器的,这些资源是通过增量加载的方式运行到浏览器端
如何在开发环境组织好这些碎片化的代码和资源,并且保证他们在浏览器端快速、优雅的加载和更新,就需要一个模块化系统,这个理想中的模块化系统是前端工程师多年来一直探索的难题。
3. webpack安装
1.安装打包工具
sudo npm install webpack -g
2.安装客户端
sudo npm install webpack-cli -g
验证是否成功(如果有如下提示,安装成功):
4. webpack项目案例
4.1 创建webpack项目
①创建webpack
项目,即文件夹(webpack-demo
)
②vscode
导入项目:
③创建一个名为modules
的目录(用来放置JS模块等资源文件):
④ 在modules
下创建模块文件Hello.js
,并写入内容:
//暴露一个方法:sayHi exports.sayHi = function () { document.write("<div>Hello Webpack</div>"); }
⑤ 在modules
下创建一个名为main.js
的入口文件:
//require 导入一个模块,就可以调用这个模块中的方法了 var hello = require("./hello"); hello.sayHi();
⑥在项目根目录下创建webpack.config.js
配置文件:
代码如下:
module.exports = { entry: "./modules/main.js", output: { filename: "./js/bundle.js" } }
4.2 打包
打开控制台 Terminal
-> new Terminal
,并输入命令webpack
:
打包成功,并在项目目录可以看到生成以下目录及文件(bundle.js
就是打包后好的js
文件):
其它:命令行输入
webpack --watch
代码发生变动,会自动重新打包
4.3 使用打包后的js文件
①在项目根目录下创建HTML
页面:
完整代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <script type="text/javascript" src="./dist/js/bundle.js"></script> <body> </body> </html>
②运行页面,效果如下:
4.4 小结
webpack
相当于就是多个模块化的文件合并为一个js
文件(这些打包后的文件经过处理,便可以向下兼容如ES5
),最后我们可以把生成的js
文件在html
里直接引入。本文完!