webpack介绍(from github):

  A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows to load parts for the application on demand. Through "loaders," modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff. ——from github

总之意思就是说webpack是一个打包工具,他可以通过“代码分割”打包的时候包含所需要的部分,通过loader处理各种类型包含commonjs、amd、es6、css、iamge等等各种类型的文件。

各类文件处理方式:

  webpack相比较grunt按照任务执行操作,他是根据文件类型处理文件。项目中主要的文件类型有html、css、less/sass、image、tpl(模板文件)、js.下面分别进行说明:

  .html:

    处理html文件需要html-laoder,webpack.config.js配置文件中的配置方式如下所示:    

{
test:/\.html/,
loader:'html-loader'
},

    html进行更加复杂操作需要html-webpack-plugin插件,配置如下图所示:

plugins:[
new htmlWebpackPlugin({
filename:'a.html',
template:"index.html",
inject:'body',//body head false
title:'webpack is a',
chunks:['a']
//excludeChunks:['c'],
minify:{
removeComments:true,
collapseWhitespace:true
}
})
]
ps参数说明:
Filename:打包后文件名
Template:模板对象
Inject:body/head/false(不自动注入)
Minify:removeComments/collapseWhitespace(压缩)
Chunks:包含哪些chunk
excludeChunks:不包含哪个chunk
自定义参数:可在模板中通过<%=xxx%>方式获取
compilation.assets[路径].source():内联插入

  .js:

    webpack可以处理普通js,对于es6(CSMAScript-262第六次修改,也叫ECMA2015)语法需要转换成普通js,因此需要一个转换器--babel,babel需要知道你想要转换哪些es6特性。通过presets可以设置,转换哪些特性,设置presets的值为latest或者env则转换所有特性,配置如下:

module:{
loaders:[
{
test:/\.js$/,
loader:'babel-loader',
include:path.resolve(__dirname,"src"),
exclude:path.resolve(__dirname,"node_modules"),
query:{
presets:['latest']
}
}
]
}
因为babel处理比较耗时,特制定include(指定扫描哪些路径)与exclude(指定扫描排除哪些路径)

  .css:

    css-loader用于处理css文件 style-loader用于将css-loader处理后的文件插入到页面中(建立style标签)

{
test:/\.css$/,
loader:'style-loader!css-loader'
},

  .css/less:

    less文件通过less-loader处理,处理后仍需要css-loader和style-loader,如有需要还需要post-css-loader(增加浏览器前缀)

{
test:/\.less$/,
loader:'style-loader!css-loader!less-loader'
}

  .jpg...:

    处理图片文件可以使用file-loader和url-loader,两者的区别:file-loader负责加载图片,url-loader可以设置一个limit值,当图片大小大于该阈值时使用file-loader加载,当图片小于该阈值时会被硬编码成base64格式,添加到文件中。配置如下所示:

{
test:/\.(jpg|png|gif|svg)/,
loader:'file-loader',//url-loader
query:{
name:'static/[name]-[hash].[ext]',
//limit:'20000' //单位b
}
//test:/\.(jpg|png|gif|svg)/i,
//loaders:[
// 'url-loader?limit=20000&name=assets/[name]-[hash:5].[ext]',
// 'image-webpack'
//] }

  .tpl

  tpl主要是指项目中用到的各种模板文件,比如ejs/jade.....我们需要安装响应的“loader”,以ejs为例,首先要安装ejs-loader

{
test:/\.tpl/,
loader:'ejs-loader'
}

  了解到的只是webpack打包冰山一角,持续跟进webpack中。。。。

webpack 1.x 学习总结的更多相关文章

  1. vue第二单元(webpack的配置-学习webpack的常用配置)

    第二单元(webpack的配置-学习webpack的常用配置) #课程目标 掌握webpack的常用配置 掌握如何根据实际的需求修改webpack的对应配置 了解webpack-dev-server的 ...

  2. webpack 3.X学习之多页面打包

    简介 我们开发不可能只写一个页面,每次都要写很多页面,这时为了开发效率,我们使用前端自动化工具webpack,那么webpack是如何打包页面的呢?又是如何打包多页面的呢? 单页面打包 我们知道要打包 ...

  3. webpack入门-个人学习资源收集

    本来是想自己写哈个人学习webpack心德的,不过网上现在已经有各种比较好的,详细的入门或者深入资源了. 所以我就简单总结了一下,我在入门webpack时看的一些博客和文档,以及顺道看到的一些觉得也应 ...

  4. Webpack打包工具学习使用

    Webpack 是当下最热门的前端资源模块化管理和打包工具.它可以将许多松散的模块按照依赖和规则打包成符合生产环境部署的前端资源.还可以将按需加载的模块进行代码分隔,等到实际需要的时候再异步加载.通过 ...

  5. webpack vuejs项目学习心得

    最近在做移动端的项目,最近webpack和vuejs很火,就想到了用vuejs webpack来构建我的项目 先了解了一些webpack的入门基础 http://webpack.github.io/d ...

  6. webpack之基础学习

    webpack工作原理: 通过一个入口文件,main.js开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个浏览器可识别的JavaScript文件. Webpack的核心原理 ...

  7. webpack 3.X学习之Babel配置

    Babel是什么 Babel是一个编译JavaScript的平台,它的强大之处表现在可以通过编译帮你达到: 使用下一代的javascript(ES6,ES7,--)代码,即使当前浏览器没有完成支持: ...

  8. webpack 3.X学习之图片处理

    CSS中图片处理 在src目录下新建一个images目录,把图片放入images文件夹中:在index.html文件中增加一个div标签: /src/index.html: <div id=&q ...

  9. webpack 3.X学习之CSS处理

    Loaders Loaders是Webpack最重要的功能之一,他也是Webpack如此盛行的原因.通过使用不同的Loader,Webpack可以的脚本和工具,从而对不同的文件格式进行特定处理. Lo ...

  10. webpack 3.X学习之基本配置

    创建配置文件webpack.config.js 在根目录在手动创建webpack.config.js,配置基本模板 module.exports ={ entry:{}, output:{}, mod ...

随机推荐

  1. PPT的应用

    ppt是Office中一个制作演示文稿的一个办公软件使阐述过程简明而又清晰,轻松又丰富详实,从而有效表达自己以及与他人沟通,所创建的文件被称为电子演示文稿,其扩展名为.PPT.一个演示文稿由若干张电子 ...

  2. Ubuntu软件中心卡在正在应用更改的解决办法

    http://forum.ubuntu.org.cn/viewtopic.php?t=374037 http://forum.ubuntu.org.cn/viewtopic.php?p=2743994 ...

  3. 什么是UUID?

    1.定义 UUID含义是通用唯一识别码 (Universally Unique Identifier),这 是一个软件建构的标准,也是被开源软件基金会 (Open Software Foundatio ...

  4. C++点滴20130724

    warning c4627:"#include stdafx.h":在查找预编译头使用时跳过 原因: 1.没有添加 #include "stdafx.h" 2. ...

  5. java笔记3(动手动脑)

    1.以下代码为何无法通过编译?哪儿出错了? 原因:已有的Foo()是带一个int型参数的构造方法,不存在无参的构造方法Foo() "构造方法" 当创建一个对象时,它的构造方法会被自 ...

  6. LeetCode 16. 3Sum Closest. (最接近的三数之和)

    Given an array S of n integers, find three integers in S such that the sum is closest to a given num ...

  7. sqoop1.4.6配置安装

    1.下载sqoop1.4.6 2.配置环境变量. 3.复制sqoop/conf/sqoop-env-template.sh为sqoop-env.sh 添加相关的配置 #Setpath to where ...

  8. Problem O

    Problem Description Before bridges were common, ferries were used to transport cars across rivers. R ...

  9. 网络基础二 tcp/ip协议簇 端口 三次握手 四次挥手 11种状态集

    第1章 概念介绍 1.1 VLAN 1.1.1 什么是VLAN VLAN(Virtual LAN),翻译成中文是“虚拟局域网”.LAN可以是由少数几台家用计算机构成的网络,也可以是数以百计的计算机构成 ...

  10. Jumpserver部署与安装

    jumpserver特点: 完全开源,GPL授权 Python编写,容易再次开发 实现了跳板机基本功能,认证.授权.审计 集成了Ansible,批量命令等 支持WebTerminal Bootstra ...