1. 什么是webpack

  一个现代 JavaScript 应用程序的静态模块打包器(module bundler),它会分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并将其转换和打包为合适的格式供浏览器使用。

2. webpack的作用

  • 模块化,让我们可以把复杂的程序细化为小的文件;
  • 类似于TypeScript这种在JavaScript基础上拓展的开发语言,使我们能够实现目前版本的JavaScript不能直接使用的特性,并且之后还能转换为JavaScript文件使浏览器可以识别;
  • Scss,less等CSS预处理器。

3. webpack的工作方式

  把你的项目当做一个整体,通过一个给定的主文件(如:index.js)开始找到你的项目的所有依赖文件,使用loaders处理它们,最后打包为一个(或多个)浏览器可识别的JavaScript文件。

4. webpack与gulp、grunt的区别

  webpack和另外两个并没有太多的可比性,Gulp/Grunt是一种能够优化前端的开发流程的工具,而WebPack是一种模块化的解决方案,不过Webpack的优点使得Webpack在很多场景下可以替代Gulp/Grunt类的工具。

5. webpack的基本使用

1)全局安装: npm install webpack -g

2)查看版本号:  webpack -v
3)初始化: npm init  //生成package.json文件

4)局部安装: npm install webpack --save-dev
5)建立并配置webpack.config.js文件

6)打包[仅适用于4.0以下版本]: webpack  //生成dist文件夹
// 注意:webpack4.0以上版本坑比较多,新手建议安装4.0以下版本。   01、卸载默认: npm uninstall webpack
02、全局安装: npm install webpack@3.5.3 -g
03、局部安装: npm install webpack@3.5.3 --save-dev

 6. webpack配置属性

1)entry 入口

  可以通过在 webpack.config.js中配置 entry 属性,来指定一个入口起点(或多个),默认值为 ./src。其指示 webpack 应该使用哪个模块,来作为构建其内部依赖图的开始。

 module.exports = {
entry: {
main: './path/to/my/entry/file.js'
}
};

2) output 出口

告诉 webpack 在哪里输出它所创建的bundles,以及如何命名这些文件,默认值为 ./dist

 const path = require('path');

 module.exports = {
output: {
filename: 'bundle.js',
path: '/home/proj/public/assets'
}
}

3)loader 加载器

  让 webpack 能够去处理那些非 JavaScript 文件(webpack 自身只理解 JavaScript)。loader可以将所有类型的文件转换为 webpack能够处理的有效模块,然后你就可以利用 webpack 的打包能力,对它们进行处理。

安装jsloader:cnpm install --save-dev @babel/core babel-loader @babel/preset-env @babel/preset-react

安装cssloader:cnpm install --save-dev style-loader css-loader sass-loader node-sass

 module.exports = {
module: {
rules: [
{ test: /\.css$/, use: 'css-loader' }, // test:用于标识应该被对应的loader进行转换的某个或某些文件
{ test: /\.ts$/, use: 'ts-loader' } //use: 表示进行转换时,应该使用哪个 loader
]
}
};

4) plugins 插件

  插件的范围包括,从打包优化和压缩,一直到重新定义环境中的变量。想要使用一个插件,你只需要 require()它,然后把它添加到 plugins数组中。多数插件可以通过选项(option)自定义。你也可以在一个配置文件中因为不同目的而多使用同一个插件,这时需要通过使用new操作符来创建它的一个实例。

安装插件: npm install html-webpack-plugin

 const HtmlWebpackPlugin = require('html-webpack-plugin'); // 引入模块
const webpack = require('webpack'); // 用于访问内置插件 const config = {
module: {
rules: [
{ test: /\.txt$/, use: 'raw-loader' }
]
},
plugins: [
new HtmlWebpackPlugin({template: './src/index.html'})
]
}; module.exports = config;

7. webpack-dev-server 热更新

热更新功能会在应用程序运行过程中替换、添加或删除模块,而无需重新加载整个页面。

1)安装: npm install webpack-dev-server@2 -S

2)在package.json里面在scripts下添加start:"webpack-dev-server";

3) 运行 npm run start

4) 如果在4.0.1中安装失败 需要安装 npm install webpack-cli -D

8. webpack 跨域

 devServer:{
proxy:{
"/api":{
target:"https://mapi.eyee.com", //目标服务器地址
changeOrigin:true, //是否修改来源, 为true时让目标服务器以为是webpack-dev-server发出的请求
pathRewrite:{ // 将/api开头的请求地址, /api 改为 ""
"^/api":""
}
}
}

【工具】---- webpack简析的更多相关文章

  1. GPXReader工具代码简析

    完整的文件在TerraExplorer Pro的默认安装目录下C:\Program Files (x86)\Skyline\TerraExplorer Pro\Tools\GPXReader: 如果你 ...

  2. Linux 目录结构学习与简析 Part2

    linux目录结构学习与简析 by:授客 QQ:1033553122 ---------------接Part 1-------------- #1.查看CPU信息 #cat /proc/cpuinf ...

  3. DiskGenius注册算法简析

    初次接触DiskGenius已经成为遥远的记忆,那个时候还只有DOS版本.后来到Windows版,用它来处理过几个找回丢失分区的案例,方便实用.到现在它的功能越来越强大,成为喜好启动技术和桌面支持人员 ...

  4. Android -- 多媒体播放之MediaPlayer使用内部实现简析

    Android -- MediaPlayer内部实现简析 在之前的博客中,已经介绍了使用MediaPlayer时要注意的内容.如今,这里就通过一个MediaPlayer代码实例,来进一步分析Media ...

  5. JDK框架简析--java.lang包中的基础类库、基础数据类型

    题记 JDK.Java Development Kit. 我们必须先认识到,JDK不过,不过一套Java基础类库而已,是Sun公司开发的基础类库,仅此而已,JDK本身和我们自行书写总结的类库,从技术含 ...

  6. 基于IdentityServer4的OIDC实现单点登录(SSO)原理简析

    写着前面 IdentityServer4的学习断断续续,兜兜转转,走了不少弯路,也花了不少时间.可能是因为没有阅读源码,也没有特别系统的学习资料,相关文章很多园子里的大佬都有涉及,有系列文章,比如: ...

  7. 模块化管理工具兼打包工具 webpack

    webpack 是一个[模块化管理工具]兼[打包工具] 是一个工具(和seajs,requirejs管理前端模块的方式是不一样) 在webpack一个文件就是一个模块! seajs,requirejs ...

  8. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  9. 简析 .NET Core 构成体系

    简析 .NET Core 构成体系 Roslyn 编译器 RyuJIT 编译器 CoreCLR & CoreRT CoreFX(.NET Core Libraries) .NET Core 代 ...

随机推荐

  1. Vue+elementUI build打包部署后字体图标丢失问题

    错误描述:Vue+elementUI  build打包部署后字体图标丢失,控制台显示文件element-icons.woff和element-icons.ttf文件404 错误展现: 控制台报错截图 ...

  2. The Mean of the Sample Mean|Standard Deviation of the Sample Mean|SE

    7.2  The Mean and Standard Deviation of the Sample Mean Recall that the mean of a variable is denote ...

  3. 在virtualenv中安装NumPy、 SciPy、 scikit-learn、 matplotlib

    首先要进入对应的虚拟环境 然后安装包    这里把安装源改成使用豆瓣的源进行下载  这样的话 下载速度会快很多   安装numpy包 pip install numpy -i https://pypi ...

  4. 使用iframe的好处与坏处详细比拼

    一.使用iframe的坏处 1.搜索引擎的蜘蛛不会识别在iframe中被调用的图片.文本.url等内容的,因为该内容不属于该页面,只是访问的时候被临时的调用,而且在SEO建议中也有提到:"f ...

  5. make的工作方式

    摘自<跟我一起写Makefile> GUN的make工作时的执行步骤如下: 1)读入所有的Makefile. 2)读入被include的其他Makeifle. 3)初始化文件中的变量. 4 ...

  6. dubbo分布式框架下web层调用业务层一直报空指针异常的解决办法

    java.lang.NullPointerException............... 环境:SSM(通用mapper)+Dubbo 1.检查导包 提示注解@Reference  应该导入  im ...

  7. java集合 list与Set、Map区别

      1.List,Set都是继承自Collection接口,Map则不是. 2.List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复,重复元素会覆盖掉 ,(注意:元素虽 ...

  8. 转:get value from agent failed: ZBX_TCP_READ() failed;[104] connection reset by peer

    get value from agent failed: ZBX_TCP_READ() failed;[104] connection reset by peer zabbix都搭建好了,进行一下测试 ...

  9. 严谨与特色并行——WSDM 2015大会见闻记

    2015大会见闻记" title="严谨与特色并行--WSDM 2015大会见闻记"> 第8届ACM网络搜索与数据挖掘会议(ACM International Co ...

  10. 重大改革!Python将被加入高考科目!

    未来大学生将分为两种:一种是编程好的人,另一种是编程超好的人. Python 将被纳入高考科目 近期,浙江省信息技术课程改革方案出台,Python 确定进入浙江省信息技术高考,从2018年起浙江省信息 ...