webpack 作为当下前端前沿最受欢迎的打包工具,作为一个前端开发人员是很有必要去了解下它的。

题外话:

  npm i -D 是 npm install  --save-dev的简写,是安装模块并保存到package.json的devDependencies

安装webpack

  npm i -D webpack (稳定版)

  npm i -D webpack@<version>(指定版本号)

使用webpack命令行

  在packjson.json

"scripts": {
"build": "webpack src/main.js dist/bundle.js", // 将指定文件打包到指定目录的文件
}

然后就可以使用命令打包 npm run build

使用Loader

  通常webpack的配置文件都会放在webpack.config.js文件中(这个是webpack会去默认读取的)

基础内容:

const path = require('path');
module.exports = {
// JavaScript 执行入口文件
entry: './main.js',
output: {
// 将所有依赖的模块合并输出到一个bundle.js文件
filename: 'bundle.js',
// 将输出文件都放在dist目录下
path: path.resolve(__dirname, './dist'),
},
module: {
rules: [
{
// 用正在向嗯表达式去匹配要用该Loader转换的CSS文件
test: /\.css$/,
use: ['style-loader', 'css-loader?minimize'] }
]
}
};

需要安装Loader npm i -D style-loader css-loader

解读

  • use属性的值需要是一个由Loader名称组成的数组,Loader的执行顺兴是由后到前的
  • 每个Loader都可以通过URL querstring 的方式来传入参数, 例如 css-loader?minimize中的minimize高祖css-loader要开启css压缩

使用Plugin

  Plugin是用来扩展Webpack功能的,通过在构建流程里注入钩子实现,它为Webpack带来了很大的灵活性。

 配置方面: plugins属性是一个数组,里面的每一项都是插件的一个实例,在实例化一个组件时可以通过构造函数传入这个组件支持的配置属性。

使用DevServer

作用:

  • 提供HTTP服务而不是使用本地文件预览
  • 监听文件的变化并自动刷新网页,做到实时预览
  • 支持Source Map, 以方便调试

安装: npm i  -D webpack-dev-server

启动配置:

"build": "webpack-dev-server --hot --devtool source-map"

当你启动的时候会看到这样一串日志:

  Project is running at http://localhost:8081/

       webpack output is served from /

这意味着DevServer启动的HTTP服务器在8081端口,DevServer启动后会一直主流在后台保持运行,访问这个网址,就能获取项目根目录下的index.html

这时候还不会形成打包文件。

实施预览:

  开启: webpack --watch

这样的话就会实施知道改动代码就会进行更新客户端的内容(这回刷新整个页面)

模块热替换:

  开启: --hot

这样的话,代码更改只会实现局部刷新

支持Source Map

  开启 --devtool source-map

总结:

  • Entry: 入口, webpack执行创建的第一步将从Entry开始,可抽象成输入
  • Module: 模块, 在Webpack里一切皆模块,一个模块对应一个文件。Webpack会从配置的Entry开始递归找出所有的依赖的模块
  • Chunk: 代码块,一个Chunk由多个模块组合而成,用于代码合并与分割
  • Loader: 模块加载器,用于经模块的原内容按照需求装换成新内容
  • Plugin: 扩展插件, 在Webpack构建流程中的特定时机注入扩展逻辑,来改变构建结果或做我们想要的事情
  • Output: 输出结果,在Webpack经过一系列处理并得出最终想要的代码后输出结果。

webpack 学习笔记 (一)的更多相关文章

  1. 【原】webpack学习笔记

    之前在react的项目中有用过webpack,不过没有认真的去研究,这段时间又重新好好的学习一下webpack,发觉 webpack是一个很强大的东西.而且很好用,方便,接下来主要是做一下学习的笔记 ...

  2. 更博不能忘——webpack学习笔记

    webpack是前端构建系统就像grunt和gulp(之前有学习过grunt所以也就大概明白webpack是个什么东西),所以说前端技术大部分还真是相通的,现在觉得当时多看的东西并不白费,虽然长时间不 ...

  3. webpack学习笔记(二)-- 初学者常见问题及解决方法

    这篇文章是webpack学习第二篇,主要罗列了本人在实际操作中遇到的一些问题及其解决方法,仅供参考,欢迎提出不同意见. 注:本文假设读者已有webpack方面相关知识,故文中涉及到的专有名词不做另外解 ...

  4. webpack学习笔记一:安装webpack、webpack-dev-server、内存加载js和html文件、loader处理非js文件

    一 .webpack学习环境准备: 1:window系统 2:安装node.js  官方网址 下载好后下一步下一步安装即可 安装步骤略过....... 3:nrm的安装 打开cmd命令控制台 输入:n ...

  5. Webpack学习笔记九 webpack优化总结

    webpack 优化笔记 webpack4 自带的优化包括 swingTree(摇摆树)和作用域提升 swingTree 比如入口文件 index.js引入通用方法 util, 里面有 10个方法, ...

  6. Webpack学习笔记一:What is webpack

      #,Loaders干嘛的,webpack can only process JavaScript natively, but loaders are used to transform other ...

  7. webpack学习笔记—webpack安装、基本配置

    文章结构: 什么是webpack? 安装webpack 'webpack基本配置 一.什么是webpack? 在学习react时发现大部分文章都是react和webpack结合使用的,所以在学reac ...

  8. 【webpack学习笔记】a04-建立开发环境

    开发环境就是在开发过程中为了方便配置的环境,生产环境就是开发完成即将上线的情况. 好了,说了句废话,切入正题. 在开发时,打包后的文件压缩成一团,报错调试的时候傻眼了有木有?每次做出修改需要到浏览器查 ...

  9. Webpack 学习笔记总结

    Webpack安装 Linux系统默认已经安装了node&npm,但版本比较低,而且没法升级,可以重新下载Node然后通过软链接替换系统自带的node和npm; ln -s /path_to/ ...

  10. webpack学习笔记丁点积累

    webpack是什么? https://webpack.js.org/concepts/ https://code.tutsplus.com/tutorials/introduction-to-web ...

随机推荐

  1. 【转】ios tableView那些事(一)创建一个简单的tableView

    工作也有半年多了!几乎每个项目中的会用到tableview这个神奇而好用的控件,在学习和工作中都会看别人的博客!对我有很大的帮助,就如同站在巨人的肩膀上的感觉吧 哈哈!于是决定重新开始写博客,希望能帮 ...

  2. python-celery定时提交任务

    pip install celery 使用消息中间件:RabbitMQ/Redis app=Celery('任务名',backend='xxx',broker='xxx') 基本使用 import c ...

  3. docker swarm英文文档学习-5-在swarm模式中运行Docker引擎

    Run Docker Engine in swarm mode在swarm模式中运行Docker引擎 当你第一次安装并开始使用Docker引擎时,默认情况下禁用swarm模式.在启用集群模式时,需要处 ...

  4. docker镜像的创建方法docker commit方式

    Docker 提供了两种构建镜像的方法: docker commit 命令(交互式修改创建) Dockerfile 构建文件 (文本命令定义) Docker commit方法: 1.运行一个现有容器 ...

  5. 1、pyspider安装

    系统环境: centos6.6.python2.7 经测试,python2.6安装的pyspider会导致webui无法正常访问 参考博文: http://cuiqingcai.com/2443.ht ...

  6. scrapy(一)scrapy 安装问题

    一.安装scrapy pip install scrapy 二.出现Microsoft Visual C++ 14.0相关问题 注:若出现以下安装错误 building 'twisted.test.r ...

  7. 声明式API replica controller vs replica set 对比

    1.在命令式API中,你可以直接发出服务器要执行的命令,例如: “运行容器”.“停止容器”等. 在声明性API中,你声明系统要执行的操作,系统将不断向该状态驱动. 可以想象成手动驾驶和自动驾驶系统.( ...

  8. 第9章 初识STM32固件库

    第9章     初识STM32固件库 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...

  9. [Usaco2009 Feb]Revamping Trails 道路升级 BZOJ1579

    分析: 比较裸的分层图最短路,我的实现方式是,每次求出1所有节点的最短路,之后用每一个节点更新与其相连的节点(取较小值),之后做K次,就求出了分层图的最短路了. 附上代码: #include < ...

  10. MSTECHLNK

    MSTECHLNK(微软技术直通车) 时间:2017.12.16地点:微软中关村办公楼天安门会议室