前端自动化构建之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 再到 ...
随机推荐
- [UWP]推荐一款很Fluent Design的bilibili UWP客户端 : 哔哩
UWP已经有好几个Bilibili的客户端,最近有多了一个: 哔哩 - Microsoft Store 作者云之幻是一位很擅长设计的UWP开发者,我也从他那里学到了很多设计方面的技巧.它还是一位Bil ...
- weak_ptr
#include <iostream> #include <memory> using namespace std; int main(int argc, char **arg ...
- thinkphp历史漏洞
https://github.com/pochubs/pochubs/blob/master/ThinkPHP.md tp 历史漏洞 路由控制類RCE/think/App.php if (!preg_ ...
- 线段树 扫描线 L - Atlantis HDU - 1542 M - City Horizon POJ - 3277 N - Paint the Wall HDU - 1543
学习博客推荐——线段树+扫描线(有关扫描线的理解) 我觉得要注意的几点 1 我的模板线段树的叶子节点存的都是 x[L]~x[L+1] 2 如果没有必要这个lazy 标志是可以不下传的 也就省了一个pu ...
- leetCode刷题 | 两数之和
两数之和: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但是,你不能重复利用这个数 ...
- 201771010113 李婷华 《面向对象程序设计(Java)》第十三周总结
一.理论知识部分 第十一章 事件处理 事件源 (event source):能够产生事件的对象都可 以成为事件源 ,如文本框 .按钮等 .一个事件源是一个能够注册监听器并向发送事件对象的对象. 监听器 ...
- 如何发挥Visual Studio 2019强大的编辑功能轻松编辑Keil项目
本文地址:https://www.cnblogs.com/jqdy/p/12565161.html 习惯了VS的强大编辑功能,对Keil 5越来越深恶痛绝.查阅网络文章后按图索骥初步实现了VS编辑Ke ...
- 【Spark】通过Spark实现点击流日志分析
文章目录 数据大致内容及格式 统计PV(PageViews) 统计UV(Unique Visitor) 求取TopN 数据大致内容及格式 194.237.142.21 - - [18/Sep/2013 ...
- uCOS2014.1.11(转载)(void*)0 的理解
一般把(void*)0定义为NULL表示这是个空指针void的含义void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据.众所周知,如果指针p1和p2的类型 ...
- static RMQ
RMQ问题:对于长度为N的序列,询问区间[L,R]中的最值 RMQ(Range Minimum/Maximum Query),即区间最值查询. 常见解法: 1.朴素搜索 2.线段树 3.DP 4.神奇 ...