博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[webpack] devtool配置对比
阅读量:6480 次
发布时间:2019-06-23

本文共 1601 字,大约阅读时间需要 5 分钟。

文件结构

  • -src
    • -views
      • -essay
        • -list.js
        • -detail.js
    • -index.js
  • -webpack.config.js

文件内容

[/src/.../index.js]

import * as list from "./views/essay/list.js"import * as detail from "./views/essay/detail.js"

[/src/.../list.js]

export function getName(){    console.log("list");}

[/src/.../detail.js]

export function getName(){    console.log("detail");}

输入输出

948198-20160710123923342-961883222.png

结果

eval

每个模块被转化为字符串,在尾部添加//# souceURL(指明eval前文件)后,被eval包裹起来

[打包信息]

948198-20160710123941796-1878033022.png
[/dist/app.js]
948198-20160710123952296-2101740225.png

source-map

最原始的source-map实现方式,打包代码的同时生成一个sourcemap文件,并在打包文件的末尾添加//# souceURL,注释会告诉JS引擎原始文件位置

[打包信息]

948198-20160710124024077-1436824432.png
[/dist/app.js]
948198-20160710124030889-1819586163.png

hidden-source-map

打包结果与source-map一致,但是.map文件结尾不显示//# sourceMappingURL

[打包信息]

948198-20160710124047780-1165898925.png

[/dist/app.js]

948198-20160710124058186-511174856.png

inline-source-map

为打包前的每个文件添加sourcemap的dataUrl,追加到打包后文件内容的结尾;此处,dataUrl包含一个文件完整 souremap 信息的 Base64 格式化后的字符串

[打包信息]

948198-20160710124105421-353705909.png

[/dist/app.js]

948198-20160710124112233-883705001.png

eval-source-map

将每个模块转化为字符串,使用eval包裹,并将打包前每个模块的sourcemap信息转换为Base64编码,拼接在每个打包后文件的结尾

[打包信息]

948198-20160710124117811-224007313.png

[/dist/app.js]

948198-20160710124124514-65413927.png

cheap-source-map

source-map,但不包含列信息,不包含 loader 的 sourcemap,(譬如 babel 的 sourcemap)

[打包信息]

948198-20160710124133889-988679200.png

[/dist/app.js]

948198-20160710124139155-1553242533.png

cheap-module-source-map

不包含列信息,同时 loader 的 sourcemap 也被简化为只包含对应行的。最终的 sourcemap 只有一份,它是 webpack 对 loader 生成的 sourcemap 进行简化,然后再次生成的

[打包信息]

948198-20160710124147608-1130609786.png

[/dist/app.js]

948198-20160710124154983-2050703521.png

这么多模式,到底使用哪个?

开发环境推荐:

cheap-module-eval-source-map
生产环境推荐:
cheap-module-source-map

相关解释:

  • 大部分情况我们调试并不关心列信息,而且就算 sourcemap 没有列,有些浏览器引擎(例如 v8) 也会给出列信息,所以我们使用 cheap 模式可以大幅提高 souremap 生成的效率。
  • 使用 module 可支持 babel 这种预编译工具(在 webpack 里做为 loader 使用)。
  • 使用 eval 方式可大幅提高持续构建效率,参考webapck devtool速度对比列表,这对经常需要边改边调的前端开发而言非常重要

    948198-20160710124200530-1603828950.png

  • 直接将sourceMap放入打包后的文件,会明显增大文件的大小,不利于静态文件的快速加载;而外联.map时,.map文件只会在F12开启时进行下载(sourceMap主要服务于调试),故推荐使用外联.map的形式。

相关阅读

转载于:https://www.cnblogs.com/hhhyaaon/p/5657469.html

你可能感兴趣的文章
【CSS系列】图像映射
查看>>
First blood
查看>>
java 冒泡排序和快速排序 实现
查看>>
SQL存储过程中的几个常见设定SET QUOTED_IDENTIFIER/NOCOUNT/XACT_ABORT ON/OFF
查看>>
Silverlight与Flash区别之一
查看>>
删除恢复Hadoop集群中的DataNode
查看>>
Silverlight 2动态创建矩形对象(附完整源代码)
查看>>
从京东技术演进看互联网企业的成长历程
查看>>
MFC ado+mysql+odbc技术分享
查看>>
js中让字符串中特定字符红色显示
查看>>
HttpClient4.5教程-第二章-连接管理
查看>>
redhat Nginx 安装
查看>>
oracle 配置监听
查看>>
上海访微软 详解Azure和S+S
查看>>
跨国巨头猛攻语音识别技术 让电脑听懂人们说话
查看>>
moosefs即将发布新版
查看>>
SmartGit 试用过期
查看>>
python 测试驱动开发的简单例子
查看>>
Aes 加密简单例子
查看>>
AE 线编辑
查看>>