前言

学了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的更多相关文章

  1. 前端自动化构建工具webpack (一)之webpack安装 和 设置webpack.confi.js

    目的:  模块化开发,组件化开发,让代码符合开发规范,更高效 webpack作用:从pack,就知道这是包的意思,比较专业点叫做前端自动化打包构建工具,代码错误检查,预处理,文件合并(打包),代码压缩 ...

  2. 前端自动化构建工具webpack (二)之css和插件加载总结

    1.  webpack只识别js文件,其他文件都需要转换成js文件.所有文件都是模块; 2. css解析      css需要css-loader  --->style-loader ----- ...

  3. 前端自动化构建工具 Webpack—— 2 webpack最基本的使用方式

    Webpack可以做什么事情? 1.webpack能够处理JS文件的互相依赖关系: 2.webpacck能够处理JS的兼容问题,把高级的.浏览器不识别的语法,转为 低级的,浏览器能正常识别的语法 we ...

  4. 前端自动化构建工具 Webpack——3 webpack配置文件的使用

  5. 用webpack实现前端自动化构建

    什么是自动化的前端构建流? 1. 自动补全css私有前缀,自动转化less\sass为css,自动转化es6\vue\jsx语法为js,自动打包小图片为base64以减少http请求,自动给js,cs ...

  6. gulp前端自动化构建并上传oss

    前言 前端自动化构建工具从最开始的grunt, gulp, fis等到现在比较流行的webpack可谓层出不穷,个人还是比较倾向于gulp,虽然有的时候会因为某个插件的配置问题头疼很久,但不可否认gu ...

  7. 前端自动化构建工具gulp的使用总结

    前端自动化构建工具gulp的使用总结 博主最近偶的空闲,在此对gulp的使用做一个总结,让小伙伴知道如何合理的使用gulp以及gulp的使用技巧. 谈到gulp,有人可能就会想到另外一个构建工具gru ...

  8. 近期总结:generator-web,前端自动化构建的解决方案

    本文结合最近的工作经验,总结出一个较简洁的前端自动化构建方案,主张css和js的模块化,并通过grunt的自动化构建,有效地解决css合并,js合并和图片优化等问题,对于提高前端性能和项目代码质量有一 ...

  9. 前端自动化构建工具——gulp

    gulp是基于流的前端自动化构建工具. 一.环境配置 gulp是基于nodejs的,所以没有 nodejs 环境的要先去安装好 然后给系统配上gulp环境 npm install -g gulp 再到 ...

随机推荐

  1. 疯子的算法总结14--ST算法(区间最值)

    借助倍增和动态规划可以实现O(1)的时间复杂度的查询 预处理: ①区间DP   转移方程  f[i][j] = min(MAX同理)(f[i][j - 1],f[i + ][j - 1])  f[i] ...

  2. weak_ptr

    #include <iostream> #include <memory> using namespace std; int main(int argc, char **arg ...

  3. OSG程序设计之Hello World 3.0

    直接上代码: #include <osgDB/ReadFile> #include <osgViewer/Viewer> #include <osgViewer/View ...

  4. maven项目变成web项目

    具体步骤如图所示: 第一步:建议一个Maven Webapp项目  第二步:右击项目,选择属性,找到project facets,点击tuntimes标签选择apache tomcat v6.0选中P ...

  5. LeetCode--LinkedList--21.Merge Two Sorted Lists (Easy)

    21. Merge Two Sorted Lists (Easy) Merge two sorted linked lists and return it as a new list. The new ...

  6. Appium+Python-项目实践一

    一.前言                            前面讲了环境搭建和常用的元素定位,后续会持续以项目实践的方式去慢慢学习以及整理各方面的知识点,具体不会详细阐述,但会贴上完整代码,想要了 ...

  7. C++单例写法

    #define __xx(WaveClassFile::me()) class Xx : public QObject{ Q_OBJECT public: static Xx & me(); ...

  8. webpack4使用出现ERROR in Template execution failed: ReferenceError: HtmlwebpackPlugin is not defined

    问题描述 博主在使用webpack4的时候,使用了ejs文件,先附上ejs中的代码: <!doctype html> <html lang="zh-CN"> ...

  9. C:单链表的简单实现

    前言 今天整理资料的时候翻出来的文件,发现是以前学习数据结构的时候写的代码,当初是看郝凯老师的视频学习的C语言的数据结构,下面是对于一个单链表的简单的实现. /** ***************** ...

  10. input在IOS中的聚焦问题

    关于input输入框在iPhone手机中的聚焦问题,开发中是会经常遇到的,在一般的浏览器中,我们一般是通过 document.getElementById('opop').focus(); 来获取焦点 ...