前端自动化构建之webpack
前言
学了gulp后马上就开始学了一下webpack,所以马上来谈一下感受,感觉webpack有人说是一个模块化工具,用来和browserify来做比较,我感觉webpack牛逼多了,不但可以把复杂的文件结构打包在一起,而且还可以预编译各种js,css语言,同时可以帮你处理好html,感觉和gulp有的一拼
基本介绍
本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器,把模块需要的文件打包成一个或多个bundle
装载
首先install好webpack-cli和webpack,然后在你的根目录新建一个webpack.config.json的配置文件,webpack的主要配置都在这个里面
使用
webpack来打包简单的js文件
首先先建两个互相有联系的js文件,
然后在配置文件中创建一个module.exports把配置类容引出
定义一个入口参数entry,一个入口文件为一个值,多个入口文件为一个数组
值就是对应的地址
然后添加一个出口参数output,为一个对象,里面有一个filename值为输出的文件
如:
module.exports = {
//入口文件
entry: ['./src/script/main.js', './src/script/a.js'],
//打包输出
output: {
filename: './dist/js/bundle.[chunkhash].js'
}
}
其中chunkhash是编译当前文件的随机哈希值
然后你可以在js中引入css文件,如
require('./world.js')
//css-loader是让webpack处理.css文件
//style-loader是让css文件插入到html里面
//require('style-loader!css-loader!./style.css')
//用了 --module-bind 'css=style-loader!css-loader'后可以不要每次都处理了
require('./style.css')
function hello (argument) {
alert(argument);
}
hello('hello world');
最后只要在html中引入打包后的文件就好了
还有如果在packge.json里面的scripts里面加入运行webpack的命令如
"webpack": "webpack --module-bind 'css=style-loader!css-loader'"
以后在命令行中只要运行npm run webpack就好了
webpack对html页面的生成
前面的demo需要你自己把打包后的文件引入html中,其实也有自动生成html打包后文件的一种方法,加一个plugin(插件)
plugins: [
new htmlWebpackPlugin({
filename: './dist/bundle.index.html',
template: 'index.html',
inject: 'head',
title: 'demo'
})
]
htmlWebpackPlugin是打包后可以直接重新组合html的一个插件
然后如果是单页面的程序,你可以new一个htmlWebpackPlugin,
如果是多页面的程序你就需要多new几个htmlWebpackPlugin
你也可以从配置文件传参到html页面,
htmlWebpackPlugin的构造方法中的参数可以在html通过模板语言获取
<%= htmlWebpackPlugin.options.title %>
你还可以在output中设置publicPath,从而使上线后html中引入外部地址而不只是相对位置
htmlWebpackPlugin也有很多配置,如压缩html
如果是多页面多个htmlWebpackPlugin,可以把entry写成一个对象,然后配置chunks,来指定打包哪个js
webpack打包预处理其他语言
前面只是对html,js,css的打包,而接下来我要介绍的是对各种语言各种文件进行预处理
这里用到的是webpack的Loader
这里先示范对js的处理
你需要把es6代码编译成es5的
所以你需要用到babel
npm install babel-loader babel-core babel-preset-env webpack --save-dev
然后你需要配置webpack
module: {
loaders: [
{
test: /\.js$/,
loader: 'babel-loader',
query: {
presets: ['latest']
}
//path.resolve(__dirname, )
//项目运行路径
exclude: path.resolve(__dirname, 'node_modules')
}
]
},
这句配置的意思就是把后缀名为js的文件用babel-loader处理
然后其他配置也是一样的
结语
我这里只是简单的对webpack进行简单的配置,其实还有很多牛逼的配置,以后慢慢学
前端自动化构建之webpack的更多相关文章
- 前端自动化构建工具webpack (一)之webpack安装 和 设置webpack.confi.js
目的: 模块化开发,组件化开发,让代码符合开发规范,更高效 webpack作用:从pack,就知道这是包的意思,比较专业点叫做前端自动化打包构建工具,代码错误检查,预处理,文件合并(打包),代码压缩 ...
- 前端自动化构建工具webpack (二)之css和插件加载总结
1. webpack只识别js文件,其他文件都需要转换成js文件.所有文件都是模块; 2. css解析 css需要css-loader --->style-loader ----- ...
- 前端自动化构建工具 Webpack—— 2 webpack最基本的使用方式
Webpack可以做什么事情? 1.webpack能够处理JS文件的互相依赖关系: 2.webpacck能够处理JS的兼容问题,把高级的.浏览器不识别的语法,转为 低级的,浏览器能正常识别的语法 we ...
- 前端自动化构建工具 Webpack——3 webpack配置文件的使用
- 用webpack实现前端自动化构建
什么是自动化的前端构建流? 1. 自动补全css私有前缀,自动转化less\sass为css,自动转化es6\vue\jsx语法为js,自动打包小图片为base64以减少http请求,自动给js,cs ...
- gulp前端自动化构建并上传oss
前言 前端自动化构建工具从最开始的grunt, gulp, fis等到现在比较流行的webpack可谓层出不穷,个人还是比较倾向于gulp,虽然有的时候会因为某个插件的配置问题头疼很久,但不可否认gu ...
- 前端自动化构建工具gulp的使用总结
前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...
- 近期总结:generator-web,前端自动化构建的解决方案
本文结合最近的工作经验,总结出一个较简洁的前端自动化构建方案,主张css和js的模块化,并通过grunt的自动化构建,有效地解决css合并,js合并和图片优化等问题,对于提高前端性能和项目代码质量有一 ...
- 前端自动化构建工具——gulp
gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...
随机推荐
- 图论--网络流--最大流--POJ 1698 Alice's Chance
Description Alice, a charming girl, have been dreaming of being a movie star for long. Her chances w ...
- poj1251 Jungle Roads Kruskal算法+并查集
时限: 1000MS 内存限制: 10000K 提交总数: 37001 接受: 17398 描述 热带岛屿拉格里山的首长有个问题.几年前,大量的外援花在了村庄之间的额外道路上.但是丛林不断地超 ...
- select函数的使用
select函数是 I/O 复用中非常重要的一个函数,属于并发编程的.它能够监视我们需要监视的文件描述符的变化情况–读.写或者异常 1. 函数原型 #include <sys/select.h& ...
- 将A页面提交的数据id传递到B页面
A页面 在A页面跳转到B页面的时候,在url后面可以拼接参数 例如: window.location.href = './B.html?' + id; 跳转到B页面之后,可以通过url地址获取到从A页 ...
- 使用jQuery完成课工场论坛列表
1.点击我要发帖 2.显示出form表单,然后我们填入标题和选择板块 3.点击发布,隐藏表单,发帖列表中出现随机头像,刚才填入的标题和板块显示在列表中,其中还显示出了发布消息的时间 4.再一次的点击我 ...
- 完全背包和多重背包的混合 F - The Fewest Coins
http://poj.org/problem?id=3260 这个题目有点小难,我开始没什么头绪,感觉很乱. 后来看了题解,感觉豁然开朗. 题目大意:就是这个人去买东西,东西的价格是T,这个人拥有的纸 ...
- Java 常用API(二)
目录 Java 常用API(二) 1. Object类 2. Date类 概述 构造方法和成员方法 3. DateFormat类 概述 SimpleDateFormat类 练习 4. Calendar ...
- MATLAB矩阵的表示
矩阵是matlab中最基本的数据对象. l 矩阵的建立 l 冒号表达式 l 结构矩阵和单元矩阵 1.矩阵的建立 (1)利用直接输入法建立矩阵:将矩阵的元素用中括号括起来,按矩阵行的顺序输入各元素 ...
- 进程和线程—Python多线程编程
进程和线程 进程 进程是一个执行中的程序.每个进程都拥有自己的地址空间.内存.数据栈以及其它用于跟踪执行的辅助数据. 一个程序运行就是一个进程(比如 QQ.微信或者其它软件): 进程可以通过派生新的进 ...
- C# 数据操作系列 - 8. EF Core的增删改查
0.前言 到目前为止,我们看了一下如何声明EF Core的初步使用,也整体的看了下EF Core的映射关系配置以及导航属性的配置. 这一篇,我带大家分享一下,我在工作中需要的EF Core的用法. 1 ...