《Webpack》彻底入门Webpack(二)

《十》Webpack 中的 source-map source-map经过 Webpack 打包后的代码运行在浏览器上时,和开发者编写的代码是有差异的:例如 ES6 的代码可能被转换成 ES5 的代码;代码对应的行号、列号在经过编译后不一致;代码进行压缩丑化后会修改编码名称;TypeScript 编写的代码被转换成 JavaScript 等。当代码报错需要调试时,调试这种转换后不一致的代码是很困难的。要调试这种转换后不一致的代码,可以使用source-mapsource-map 阅读详情

plugins:production

}

},

]

包括开发环境文件和生产环境文件,其实如果愿意在一个文件里处理,那不分也没有问题,也不需要引入merge,直接判断参数,然后再决定需不需要将值加上就可以了;

开发环境文件

开发环境文件示例

const webpack = require(‘webpack’);

module.exports = {

devtool:‘cheap-module-source-map’,

devServer:{

port:9001,

overlay:true,

hot:true,

hotOnly:true

},

plugins:[

new webpack.HotModuleReplacementPlugin(),

new webpack.NamedModulesPlugin()

]

}

生产环境文件

生产环境示例

const webpack = require(‘webpack’);

var htmlWeboackPlugin = require(‘html-webpack-plugin’);

module.exports = {

optimization:{

minimize:false

},

plugins:[

new htmlWeboackPlugin({

filename:‘index.html’,

template:‘./index.html’,

minify:{

collapseWhitespace:true

},

inject:true

})

]

}

webpack4中的环境区分


在webpack4中,对环境的区分更简单了,官方对其集成了loader,比如

//打包命令

webpack --mode production/development/none

只需要运行命令–mode,并且跟上指定模式,webpack会自动以一些固定的模版运行打包,比如指定–mode production(生产模式),即使我们在配置文件中没有编写:压缩,tree-shaking等插件,但是webpack依旧会帮忙去使用这个功能;

**

另外,在webpack4中是需要加上mode属性的,否则在执行打包的会出现警告提示,当然要是无视也没上面关系,加上mode之后,就不需要指定上面的关键词了,官方也是比较推荐写入mode,比如

module.exports = env => {

var common = {

mode:‘development’,//或者production,生产模式

enrty:{

app:‘./app.js’

},

output:{

filename:‘bundle.js’

},

module:{

rules:[]

},

plugins:[]

}

return common;

}

当指定了mode为development之后,执行打包的时候,直接输入webpack,此时打包的方式等同于输入了

webpack --mode development

dev-server模拟线上环境

==========================================================================

先说个简单的例子,跨域,尤其是使用Vue的时候,当我们把模版样式写好,需要对接接口的时候,如果直接启动vue项目,那么就会报跨域错误,因为本地调试的域名是loaclhost,与服务器的接口的域名不一致,此时就没有办法正常连调项目;在webpack中就内置了解决这些问题的方法;

安装


也有全局和局部之分,但是通常我们都是在package.json中配置webpack-dev-server,因此通常使用的是局部安装

//在 项目的根路径下

cnpm install webpack-dev-server --save

配置


在webpack.config.js等配置文件中,与entry,output这些同级属性中加入devServer属性,比如

module.exports = env => {

//直接判断是不是生产环境

let production = env === “production”?[]:[]

var common = {

enrty:{

app:‘./app.js’

},

output:{

filename:‘bundle.js’

},

module:{

rules:[]

},

plugins:[],

//在webpack.config.js或其他指定配置文件中配置webpack-dev-server

//webpack-dev-server配置

//固定对象的key为:devServer,值是一个对象

devServer:{

//端口

port:9001,

//默认是true,一般不用管,是开启浏览器上当前页面的状态

inline:true,

//开启遮罩,具体效果就是vue那种错误遮罩

overlay:true,

//路径重定向,假如页面的路径是错误的,如果未开启,会提示路径错误,找不到页面

//重定义了之后,如果路径错误,那么会仅会停留在当前页面,不会跳转

// histroyApiFallback:true,

///路径重定向进一步使用

historyApiFallback:{

//定义路径,值是一个数组,数组的每一个值代表了一个路径规则

rewrites:[

{

//使用正则匹配

from:/^/([-~])/,

//重定向路径

to:function(context){

return ‘./’+context.macth[1]+‘.html’

}

}

]

},

//代理接口

proxy:{

// '/'代表,碰到以 / 开头的地址就进行代理转发

‘/’:{

//转发的目标地址

//这里也就写上了接口的服务器地址,解决跨域不是同源的问题

target:‘’,

changeOrigin:true,

//重写地址,简化路径名

pathRewirte:{

//key:如果路径中有以/comments的路径地址

//value:改写为/api/comments

//这样就可以大大的减少路径名了

‘^/comments’:‘/api/comments’

},

//代理的请求头

headers:{

}

},

//多个就写多个规则对象

‘/smart’:{

}

},

//热更新

hot:true, //开启热更新

hotOnly:true, //仅仅使用热更新,不使用其他

}

}

return common;

}

值的注意的是,热更新hot和extact-text-webpack-plugin这个插件是不相互兼容的,因此需要把extact-text-webpack-plugin这个插件的注册状态中的disable,设置为true,表示禁用插件;

source-map追踪错误

========================================================================

概述


简单的说,source-map为了方便调试,我们需要知道打包后的代码对应于原文件的位置,因为打包后代码都是被压缩过了,如果线上报错了,根本查不到报错的位置,因为所有关联的js最终都会被合并成一个js文件;

配置


source-map不需要安装,直接开启就好了,它也是和entry,output这些同级,值是规定好的,不同的值代表不同的含义

//开启source-map

devtool:‘eval-source-map’,

//webpack-dev-server配置

devServer:{

},

//它是一个数组

plugins:[

]

开发模式

开发模式下最常用的就这几个

  • eval:构建最快,只能定位到打包后的代码。适用度:无需source-map

  • eval-source-map:构建较快,生产一个dataUrl形式的sourcemap。适用度:需要简单的调试

  • cheap-eval-source-map:构建快,重新构建慢,定位到转换后的代码。适用度:较为详细的调试

  • cheap-module-source-map:构建慢,重构快,能定位到原代码。适用度:开发过程中一般用这个

生产模式

  • source-map:构建和重构都很慢,能定位原始代码。适用度:上线后一般用这个

  • hidden-source-map:候检和重构都很慢,能定位原始代码,但不追加注释。适用度:一般不使用

  • nosource-source-map:构建和重构都很慢,不能定位到源码。适用度:一般不使用

打包优化

==============================================================

代码分割


概述

代码分割的目的为了减少加载代码大小提取公共资源,减少加载次数做的优化;比如,多页面项目中,a页面和b页面都引入了jq,那么正常情况下,jq会被打包2次,这显然是不合理,jq只需要单独提取出来后打包一次就够了,没有必要混入在a,b中被打包两次;

使用到的webpack的核心功能:optimization,关于这个功能,具体可以查看官网核心功能optimization介绍,或者核心功能optimization介绍

注意,版本差异:webpack3中使用:commonChunksPlugin,而在webpack4中使用optimization下的SplitChunks,下例以webpack4为主

多页面打包

多页面优化的核心概念,就是提取公共依赖,把几个页面中都用到的依赖给打包为一个单独文件,这样a页面在浏览器被加载完之后,打开了b页面,因为b页面也使用到了这个相同的依赖,因此b页面的打开速度会非常快;

因此,多页面应用一般会这么打包:主页面代码+公共依赖+第三方包+webpack运行代码;

//这个插件是一个辅助性的,作用是删除上一次打包的代码,有时候会遇到上次打包的代码没有被删除

const {CleanWebpackPlugin} =require(‘clean-webpack-plugin’)

module.exports = {

mode:‘development’,

entry:{

a:‘./a.js’,

b:‘./b.js’

},

output:{

filename:‘./[name].[hash:4].min.js’

},

module:{

rules:[]

},

optimization:{

//使用webpack4中的splitChunks

splitChunks:{

name:true,

//优化的类型,all代表所有的都进行优化打包

chunks:‘all’,

//设定公共依赖提取最低大小,小于这个值的公共依赖将不会被提取出来,10000=10kb

minSize:10000,

//缓存组,用于设定指定打包

cacheGroups:{

//打包命名为m2

m2:{

//值是一个正则,代表匹配到这个正则名字文件必须单独打包,这里是m2的文件单独打包

test:/m2/

}

}

},

//运行代码单独打包

runtimeChunk:true

},

plugins:[

new CleanWebpackPlugin(),

]

}

单页面打包

与多页面打包不同,单页面不会存在公共依赖的问题,因为只有一个入口,那么单页面打包优化主要就是减少文件体积,因此,需要拆分应用,把需要异步加载的内容改成异步加载;

因此,单页面应用一般会这么打包:主业务代码+异步模块+第三方包+webpack运行代码;

//这个插件是一个辅助性的,作用是删除上一次打包的代码,有时候会遇到上次打包的代码没有被删除

const {CleanWebpackPlugin} =require(‘clean-webpack-plugin’)

module.exports = {

mode:‘development’,

entry:{

a:‘./a.js’,

b:‘./b.js’

},

output:{

filename:‘./[name].[hash:4].min.js’

},

module:{

rules:[]

},

optimization:{

splitChunks:{

name:true,

chunks:‘all’,

//设定公共依赖提取最低大小

minSize:10000,

},

//运行代码单独打包

runtimeChunk:true

},

plugins:[

new CleanWebpackPlugin(),

]

}

这样其实就可以了,和多页面打包反而少了配置,因为webpack在遇到异步加载的部分本来就会单独打一个包,因此不需要单独配置;

体积控制


体积控制,其实也差不多,就是压缩,提供公共代码,压缩在webpack3和webpack4中使用的方法不一样,在webpack3中,使用的是:optimize.UglifyJsplugin(),在webpack4中,使用的是:optimization.minimize

webpack4示例大致配置如下:

optimization:{

//体积压缩,将minimize属性设置成true

minimize:true,

splitChunks:{

name:true,

chunks:‘all’,

//设定公共依赖提取最低大小

minSize:10000,

//设定强制打包

cacheGroups:{

//打包命名为m2

m2:{

//提取规则,找到名字是m2的文件单独打包

test:/m2/

}

}

},

//运行代码单独打包

runtimeChunk:true

}

或者,如果指定mode为production,那么webpack在打包的时候会自动实行压缩,即使没有设置成true;

这里还有一个小插件,**tree-shaking,**tree-shaking主要的作用是将没有被import导入的方法通通删除,达到减少体积的作用(注意,如果被import了,但是没有被使用,一样不会被删除,它只是监听export了但是没有被import的方法)

同样,在webpack3中,是需要手动去使用的,但是在webpack4中,如果指定的mode是production,也就是生产模式,那么会自动去执行tree-shaking

其他常用loader

====================================================================

图片资源处理


图片在项目中是必不可少的,假如不对图片进行处理,而图片又被使用了,那么在执行打包的时候,webpack会报错,会无法打包图片;

css图片处理

图片资源处理需要用到的loader:file-loader,url-loader,img-loader,具体使用如下,当然,这些都是需要通过npm安装的

// {

// test:/.(png|jpg|jpeg|gif)$/,

// use:[

// {

// loader:‘file-loader’,

// options:{

// //默认是一串哈希.后缀名,改成:原文件名.哈希前4位.后缀名

// name:‘[name].[hash:4].[ext]’,

// //给图片一个打包路径,指定后,打包的图片会被存放到assets/img目录下

// outputPath:‘assets/img’,

// //给所有图片资源指定一个路径前缀,下例就是给所有图片资源的路径前面加上assets/img

// publicPath:‘assets/img’

// }

// }

// ]

// },

//url-loader是对file-loader的二次封装,因此,能在file-loader里使用的属性,那么在url-loader里面一样可以使用

{

test:/.(png|jpg|jpeg|gif)$/,

use:[

{

loader:‘url-loader’,

options:{

//默认是一串哈希.后缀名,改成:原文件名.哈希前4位.后缀名

name:‘[name].[hash:4].[ext]’,

//给图片一个打包路径,指定后,打包的图片会被存放到assets/img目录下

outputPath:‘assets/img’,

//给所有图片资源指定一个路径前缀,下例就是给所有图片资源的路径前面加上assets/img

publicPath:‘assets/img’,

//小于5kb的图片转成base64,一般默认设置在5000,也就是5kb

limit:5000

}

},

//img-loader放在url-loader之后,这样可以先执行

{

//img-loader可以理解成一个插槽,本身不对图片进行处理,需要通过img-loader的plugin里使用插件完成

loader:‘img-loader’,

plugins:[

//压缩png格式,如果没有特殊要求,压缩到原体积的一般

require(‘imagemin-pngquant’)({

//控制压缩质量,值越大,质量越好,1-11,体积越大

speed:5

}),

require(‘imagemin-mozjpeg’)({

//值是1-100,值越大质量越好,体积越大,通常值设置80

quality:50

}),

require(‘imagemin-gifsicle’)({

//值1-3,1是默认值

optimizationLevel:1

})

]

}

]

}

JS图片处理

在JS中,如果要使用到图片,必须以import的方式引入,例如

import imgSrc from ‘./xx.jpg’;

let img = new Image();

img.src = imgSrc;

document.getElementById(‘xxx’).appendChild(img)

之后打包,会通过url-loader之类的loader对其进行压缩打包

HTML图片处理

方法一:通过模版字符串的方式将图片引入

方法二:使用html-loader打包

//html-loader

{

test:‘/.html$/’,

user:{

loader:‘html-loader’,

options:{

//配置这个loader对哪个标签进行解析,不再是src,比如是使用了懒加载的data-src

//下例这个是代表对img标签的data-src进行解析

attrs:[“img:data-src”]

}

}

}

loader原理分析

====================================================================

概述


loader的本质其实就是一个方法,当执行打包的时候,webpack会所有内容转成字符串并作为参数传入方法内部,方法接收到后对这一串字符串进行处理,然后返回;

简例


//写法如下,这个resource是一个字符串,webpack会以字符串的形式将内容传递过来

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
oader原理分析

====================================================================

概述


loader的本质其实就是一个方法,当执行打包的时候,webpack会所有内容转成字符串并作为参数传入方法内部,方法接收到后对这一串字符串进行处理,然后返回;

简例


//写法如下,这个resource是一个字符串,webpack会以字符串的形式将内容传递过来

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-AItFZvqm-1715721949411)]

[外链图片转存中…(img-yLx65Q2K-1715721949411)]

[外链图片转存中…(img-25xMfVFT-1715721949411)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

西工大总分396上岸学长的经验分享|西北工业大学通信考研信号与系统 以上就是我的一些经验,当然每个人的情况与学习习惯都是不一样,以上仅供大家参考,具体的学习进度安排等都要依据个人的实际情况而定。基础阶段:高数比较推荐武忠祥老师,他讲的内容难度比较合适,知识的梳理也比较完备,基础阶段主要集中做书上的例题,在基础阶段,我们很容易出现知识点遗忘现象,所以要及时回顾讲义知识点,这个时候做660的时候建议延迟两三章去练习(比如学完第三章,我在找时间把第一章的660习题做完,对答案)这里不建议硬生生的把讲义过一遍,可以配套做880基础篇,880这本资料还是极力推荐的。 阅读详情

相关推荐

wvp gb28181 pro 平台国标级连功能说明

国标28181不同平台之间支持两种连接方式,平级和上下级,WVP目前支持向上级级联。

zengliguang的专栏 3851

webpack基础优化

这里面简单介绍了webpack 项目优化的几个小方面,是学习过程中的记录。

weixin_51642358的博客 806

57页PPT智慧校园音视频系统整体解决方案.pptx

【57页PPT】智慧校园音视频系统整体解决方案.pptx

Webpack学习笔记(三)

SourceMap 在之前的几章里面,我们介绍了webpack的打包编译功能。能通过loader、plugin机制帮助我们构建代码。虽然构建代码很大程度上便利了我们的生产环境,但是我们实际的代码和我们开发的代码会有很大的差异,当出现错误的时候,我们很难直接定位到源代码中对应的位置。 而Souce Map(源代码地图)就是一个映射转化后的代码与源代码之间的关系。我们可以看到很多第三方的库的dist文件中都会包含.map文件 我们点开来看一下 在浏览器中打开开发者工具后,会自动请求.map文件,然后根据这个

qq_41022872的博客 678

devtool: ‘cheap-module-eval-source-map‘报错

今天在学习TS的过程中发现了一个问题,之前的一套简单的配置,在原来使用的时候都是ok的,但是在我升级webpack版本之后打包报错了,报错如下: 这段报错大概的意思就是说:devtool应该的匹配模式是以inline-或hidden-eval-起始,webpack5中对于devtool更加严格,需要严格遵循模式中的关键字顺序。 这就很好修改啦: 将devtool:'cheap-module-eval-source-map'修改为devtool:...

大香蕉的博客 2157

记录webpacksource map使用详细说明

common.js export const show = () => { debugger document.write('hello webpack 11') } 没有使用source-map,看一下调试效果: eval devtool: 'eval' 调试效果: eval - 每个模块都使用 eval() 执行,并且都有 //@ sourceURL。此选项会非常快地构建。主要缺点是,由于会映射到转换后的代码,而不是映射到原始代码(没有从 loader 中获取 source

qq_35385241的博客 2187

Webpack彻底入门Webpack(1)

代码分割的目的为了减少加载代码大小和提取公共资源,减少加载次数做的优化;比如,多页面项目中,a页面和b页面都引入了jq,那么正常情况下,jq会被打包2次,这显然是不合理,jq只需要单独提取出来后打包一次就够了,没有必要混入在a,b中被打包两次;,关于这个功能,具体可以查看官网核心功能optimization介绍,或者核心功能optimization介绍;注意,版本差异:webpack3中使用:commonChunksPlugin,而在webpack4中使用。

2401_84093310的博客 1085

2024年最全《Webpack彻底入门Webpack),阿里三面面经

前端资料汇总开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】框架原理真的深入某一部分具体的代码和实现方式时,要多注意到细节,不要只能写出一个框架。算法方面很薄弱的,最好多刷一刷,不然影响你的工资和成功率😯在投递简历之前,最好通过各种渠道找到公司内部的人,先提前了解业务,也可以帮助后期优秀 offer 的决策。

2401_84447207的博客 903

Webpack彻底入门Webpack),2024年最新字节跳动面试官

代码分割的目的为了减少加载代码大小和提取公共资源,减少加载次数做的优化;比如,多页面项目中,a页面和b页面都引入了jq,那么正常情况下,jq会被打包2次,这显然是不合理,jq只需要单独提取出来后打包一次就够了,没有必要混入在a,b中被打包两次;,关于这个功能,具体可以查看官网核心功能optimization介绍,或者核心功能optimization介绍;注意,版本差异:webpack3中使用:commonChunksPlugin,而在webpack4中使用。

m0_60707660的博客 1168

2024年前端最新《Webpack彻底入门Webpack(1)前端面面试题

代码分割的目的为了减少加载代码大小和提取公共资源,减少加载次数做的优化;比如,多页面项目中,a页面和b页面都引入了jq,那么正常情况下,jq会被打包2次,这显然是不合理,jq只需要单独提取出来后打包一次就够了,没有必要混入在a,b中被打包两次;,关于这个功能,具体可以查看官网核心功能optimization介绍,或者核心功能optimization介绍;注意,版本差异:webpack3中使用:commonChunksPlugin,而在webpack4中使用。

2401_84434237的博客 1004

2024年前端最全《Webpack彻底入门Webpack(2),2024年最新字节跳动四面还会被拒吗

代码分割的目的为了减少加载代码大小和提取公共资源,减少加载次数做的优化;比如,多页面项目中,a页面和b页面都引入了jq,那么正常情况下,jq会被打包2次,这显然是不合理,jq只需要单独提取出来后打包一次就够了,没有必要混入在a,b中被打包两次;,关于这个功能,具体可以查看官网核心功能optimization介绍,或者核心功能optimization介绍;注意,版本差异:webpack3中使用:commonChunksPlugin,而在webpack4中使用。

2401_84412050的博客 916

Webpack彻底入门Webpack

前言 前端发展到今天已经从当初简单的几个网页发展到更多的是把网页视为WebApp的模式,当业务逻辑复杂到一定程度的时候,就不得不考虑项目的可维护性,项目的多人协同,如何降低风险等等诸多问题; 试想一下,一个网站如果仅有几个展示页面,那么其实不管怎么写都没有什么问题,但是一旦页面有几十,上百,或者说虽然只有十几个页面,但是有N多个功能模块,那么还是一通写到哪算哪,那么问题就大了,一旦业务需求变了,改都甚至不知道从哪里开始改,又或者说不知道改了会不会对别的功能产生影响,因此前端工程化就应运而生; 简介 概述 w

Oliver尹的博客 605

webpack5】高级优化

本章节主要介绍 Webpack 高级配置。 所谓高级配置其实就是进行 Webpack 优化,让我们代码在编译/运行时性能更好~ 我们会从以下角度来进行优化: 1. 提升开发体验 2. 提升打包构建速度 3. 减少代码体积 4. 优化代码运行性能

m0_68324632的博客 1693

devtool里的7种SourceMap模式

我们在使用 webpack 打包我们的工程模块时,经常会需要 devtool 开启 sourceMap 让我们可以调试代码,但是 webpack 文档中关于 devtool 给出了7种模式。本文将这7种模式的区别作详细介绍,希望能对你使用有帮助。 ...

阳光男孩的专栏 2742

高级 webpack

当构建后代码出错了,会通过 xxx.map 文件,从构建后代码出错位置找到映射后源代码出错位置,从而让浏览器提示源代码文件出错位置,帮助我们更快的找到错误根源。但是这样的话就会有一个问题, 因为前后输出的文件名是一样的,都叫 main.js,一旦将来发布新版本,因为文件名没有变化导致浏览器会直接读取缓存,不会加载新资源,项目也就没法更新了。当我们修改 math.js 文件再重新打包的时候,因为 contenthash 原因,math.js 文件 hash 值发生了变化(这是正常的)。但是 js 还不行。

m0_45116831的博客 1958

webpack开发环境性能优化之优化代码调试-source-map

但是,有些情况下,点击后面的跳转是不一样的,因为这些非语法错误,而是执行错误的部分,在非source-map的情况下跳转到的是一个eval的执行内容,而使用了source-map虽然提示一样但是跳转的确实是源代码的样子。eval-source-map:也是内联的source-map,但是都会追加在built.js的每个模块引入的eval中。即eval-source-mapeval-cheap-module-source-map,前者更友好,后者更快。前面有三个可选的参数位置。

2501_90229408的博客 767

vue 开启 source-map 后构建速度会很慢

vue 开启 source-map 后构建速度会很慢

小妖666个人笔记 394

webpack——devtool配置及sourceMap的选择

官方手册传送门 官方对devtool配置的定义很简单:选择一种 source map 格式来增强调试过程,不同的值会明显影响到构建build和重新构建rebuild的速度。 不过,什么是source map,官方用提供了许多种的source map,其中的区别是什么,我们在开发中应该怎么选择,都是我们要学习的。 1. 什么是 source map 现在的前端代码会通过babel编译或者各类的压缩,在debug时,只能调试编译或者压缩后的代码。简单来说,source map 提供了一种将压缩文件中的代码映.

m0_67393039的博客 1068
上一篇: YGC问题排查,又让我涨姿势了!
下一篇: 【HTML CSS JS 实现QQ2009界面——附源代码】(1)
radcb55226
博客等级 码龄2年 2754粉丝 258原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值