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. ASP.NET MVC @Html.Label的问题

    在使用@Html.Lable()来显示Model的某一个字符串属性时,如果该字符串中包含".",那么就会在最终呈现时被截掉开头至"."位置的字符.什么原因尚不清 ...

  2. phalcon——调度控制器

    将侦听者绑定到组件上: use Phalcon\Mvc\Dispatcher as MvcDispatcher, Phalcon\Events\Manager as EventsManager; $d ...

  3. 基于容器微服务的PaaS云平台设计(二)通过kubernetes实现微服务容器管理

    版权声明:本文为博主原创文章,欢迎转载,转载请注明作者.原文超链接 ,博主地址:http://www.cnblogs.com/SuperXJ/ 上一章描述了基于spring cloud的微服务实例(实 ...

  4. C# 使用OpenCV在一张图片里寻找人脸

    先上个效果图 相关库的下载 例程中用到一个库叫做emgucv,是opencv\的net封装 编译打包好的稳定版,在这:https://sourceforge.net/projects/emgucv/f ...

  5. .12-Vue源码之patch(2)

    快完事咯! 简单看了下patch函数,虽然不长,但是实际上很长很长,慢慢来吧, 首先来个总览: // line-5250 // oldVnode => 原生DOM节点 // vnode => ...

  6. C#与lua相互调用

    Lua是一种很好的扩展性语言,Lua解释器被设计成一个很容易嵌入到宿主程序的库.LuaInterface则用于实现Lua和CLR的混合编程. (一)C#调用Lua 测试环境:在VS2015中建一个C# ...

  7. Color the Ball(懵逼题)

    Color the Ball Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...

  8. awk详解 数组

    第1章 awk命令基础 1.1 awk命令执行过程 1.如果BEGIN 区块存在,awk执行它指定的动作. 2.awk从输入文件中读取一行,称为一条输入记录.如果输入文件省略,将从标准输入读取 3.a ...

  9. ASP.NET Core 2.0 集成测试无法执行的问题

    问题表现: Microsoft.AspNetCore.Mvc.Razor.Compilation.CompilationFailedException : One or more compilatio ...

  10. JavaScript系列-----对象基于哈希存储(<Key,Value>之Key篇) (1)

    1.Hash表的结构 首先,允许我们花一点时间来简单介绍hash表. 1.什么是hash表 hash表是一种二维结构,管理着一对对<Key,Value>这样的键值对,Hash表的结构如下图 ...