webpack学习(一)
2018-06-24 00:47:05来源:未知 阅读 ()
简介
webpack是一款前端资源模块化管理和打包工具,它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源。还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载。通过loader的转换,任何形式的资源都可以视作模块,比如Commonjs模块、AMD模块、CSS、图片、JSON、Coffeescript、LESS等
文档:webpack
单独使用webpack
一、学习资源
webpack是一款模块加载器兼打包工具,它把各种资源,例如JS(含JSX)、ES6、样式(含less/sass)、图片等都作为模块来使用和处理
其他的学习资源
二、安装
全局安装
$npm install webpack -g
三、配置
创建webpack.config.js它的作用
- entry:配置入口文件的地址,可以是单一入口,也可以是多入口。
- output:配置出口文件的地址,在webpack2.X版本后,支持多出口配置。
- module:配置模块,主要是解析CSS和图片转换压缩等功能。
- plugins:配置插件,根据你的需要配置不同功能的插件。
- resolve:用来设置路径指向
- watch:监听新文件有改动后执行打包
module.exports={ //入口文件的配置项 entry:{}, //出口文件的配置项 output:{ path:"", filename:"" }, //模块:例如解读CSS,图片如何转换,压缩 module:{ loaders:[ {test:/\.js$/,loader:""} ] }, //插件,用于生产模版和各项功能 plugins:[], //用来设置路径指向 resolve:{}, //监听新文件有改动后执行打包 watch:true }
四、webpack命令执行打包
//直接运行webpack.config.js来打包 $webpack
接下来用几个例子演示它的使用
1.例子demo1
我们首先来看一下使用webpack来实现打包:
目录:
我们定义一个模块show.js
exports.show = function() { document.write("<div>我是写入的内容</div>") }
并在main.js中引用
var module = require("./show"); module.show();
webpack.config.js中的配置
module.exports = { entry: './module/main.js', //入口文件的地址 output: { filename: './js/bundle.js' //出口文件的地址 }, watch: true //设为true监听文件 改动是自动执行打包
}
接下来在dos中进入文件路径,执行打包命令webpack进行打包(这里要先全局安装了webpack才能使用该命令打包(npm install webpack -g))
然后我们看到目录自动添加了js文件夹及bundle.js
bundle.js为打包后的文件,我们可以在html中直接引用它而不用引用main.js和show.js,编写index.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <script src="js/bundle.js"></script> //直接引用bundle.js </body> </html>
打开页面结果如下:
2.例子demo2
这里使用一下webpack的插件。引入CommonsChunkPlugin,这个属于webpack内置的一个插件,需要在当前目录安装webpack。
作用:用于提取多个入口文件的公共脚本部分
当前目录下安装webpack
目录:
设置webpack.config.js
//首先引入webpack和CommonsChunkPlugin插件 var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); var webpack = require("webpack"); module.exports = { entry: { bundle1: './module/page1.js', bundle2: './module/page2.js' //这里page1.js和page2.js里的公共部分会被放到下面的commons.js文件中 }, output: { filename: "./js/[name].js" //page1.js和page2.js不相同的部分就分别打包到bundle1.js和bundle2.js里 }, plugins: [ new CommonsChunkPlugin("commons") //公共的脚本文件放在commons.js里 ] }
另一种写法
// var CommonsChunkPlugin = require("webpack/lib/optimize/CommonsChunkPlugin"); var webpack = require("webpack"); module.exports = { entry: { bundle1: './module/page1.js', bundle2: './module/page2.js' //这里page1.js和page2.js里的公共部分会被放到下面的commons.js文件中 }, output: { filename: "./js/[name].js" //page1.js和page2.js不相同的部分就分别打包到bundle1.js和bundle2.js里 }, plugins: [ // new CommonsChunkPlugin("commons") new webpack.optimize.CommonsChunkPlugin("commons") //公共的脚本文件放在commons.js里 ] }
我们定义一个show.js模块
exports.sum = function(a, b) {
console.log(a + b);
}
分别在page1.js和page2.js中引入show.js模块
var show = require("./show"); alert(show.sum(5, 6));
var show = require("./show"); alert(show.sum(10, 10));
它们的相同部分 var show = require("./show"); 导入的show.js模块会被打包到commons.js中
接下来在dos中进入文件路径,执行打包命令webpack进行打包
打包后目录如下,新增了bundle1.js,bundle2.js和commons.js文件
编写index1.html和index2.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>index1</title> <script src="./js/commons.js"></script> <!-- 先引用公共部分common.js --> <script src="./js/bundle1.js"></script> </head> <body> </body> </html>
运行结果:
index1.html的
index2.html的
以上就是今天的学习内容
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Jquery图形报表插件 jqplot简介及参数详解 2020-03-25
- 如何用javascript连接access数据库 2020-03-20
- 在JavaScript中尽可能使用局部变量的原因 2020-03-08
- JsEasy的介绍 2019-10-25
- DEFER的使用方法 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash