JavaScript的 sourcemap 的理解
当我们在使用vue-cli 开发项目完成后, 就要进行部署,执行npm run build 命令,你会发现它生成.js文件的同时,还会生成一个对应的.map 文件。 当时查了一下, .map 文件的主要作用是,我们对文件进行压缩合并之后, 如果压缩文件出现了报错,我们能够准确地定位到报错的原位置,就是找到报错在没有打包之前的未压缩的文件中的位置。也仅仅是知道概念而已,现在明白了,就记一下。
现在用vue-cli 创建一个项目,使用它默认的内容就可以了,你也可以制造点错误,比如,随便写几个ajax 请求,接口肯定是不存在的,肯定有错误,如果不写错误,你也可以随便console.log()点东西,以便我们能准确定位到原始文件的位置。这时执行npm run build 命令,你可以看到多了dist文件夹,打开它, 有static 文件夹,再打开,有css 和js 文件夹,在文件夹中,你可以看到压缩的文件和对应的map 文件。

由于压缩后的文件,是要放到服务器上进行部署的,我们还要写点服务器代码,新建一个文件夹vue-node, 再npm init -y 初始化它,再npm install express 安装express 依赖。新建index.js 文件,和public 文件夹。我们把dist 目录中的内容,就是要部署的文件,复制到 public 文件夹中。整个目录如下

这时在 index.js写服务端代码
const express = require('express');
const app = express();
// 主要输出静态文件
app.use(express.static('public'))
app.listen(3000)
这时nodemon index.js 启动服务器,在浏览器中输入localhost:3000, 可以看到页面,这时打开控制台,接口报错了

getUser 接口报错,报错在header.vue中,点击header.vue, 你看到了原文件中的位置,这就是sourcemap, .map文件的作用,我们知道了错误在源文件中的位置。 点击header.vue 你看到它跳转到了控制台的sources 面板中。

这时看sources面板的左侧,你发现webpack:// , 点击它,你会看到src,原来这里存放我们的源代码,这也是sourcmap的作用。有了源代码,什么都可以做了,点开我们想要看的源文件,它会显示在右侧,这时我们就可以设置断点,检查文件。

当我们把所有的map文件去掉时,你会发现上面所说的优势都不存在了。我们可以试一下,打开vue-node 下面的public 文件夹,把里面js 和css map文件删掉。这时再刷新浏览器,控制台只看到压缩后的文件
点击文件名,进行跳转,跳转到也是压缩的文件,很难debug.
JavaScript的 sourcemap 的理解的更多相关文章
- 03.JavaScript 面向对象精要--理解对象
JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...
- JavaScript可否多线程? 深入理解JavaScript定时机制(转载)
说明:最近写 js 时需要用setinterval函数做定时操作,谁知道,刚开始后运行完好,但一段时间后他就抽风了,定时任务运行的时间间隔越来越短,频率加快,这是一个完全不能容忍的问题,带着一个可以出 ...
- JavaScript中的闭包理解
原创文章,转载请注明:JavaScript中的闭包理解 By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...
- JavaScript闭包的一些理解
原文:JavaScript闭包的一些理解 简单一点的说:闭包就是能够读取其他函数内部变量的函数.那如何实现读取其它函数内部变量呢,大家都知道在JavaScript中内部函数可以访问其父函数中的变量,那 ...
- 前端周报:前端面试题及答案总结;JavaScript参数传递的深入理解
1.2017前端面试题及答案总结 |掘金技术征文 "金三银四,金九银十",用来形容求职最好的几个月.但是随着行业的饱和,初中级前端er就业形势不容乐观. 行业状态不可控,我们能做的 ...
- 对JavaScript中闭包的理解
在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...
- javascript中 (function(){})();如何理解?
javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...
- 转:对JavaScript中闭包的理解
关于 const let var 总结: 建议使用 let ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...
- javascript 匿名函数的理解(转)
原网址 http://www.jb51.net/article/21948.htm javascript 匿名函数的理解(透彻版) 代码如下: (function(){ //这里忽略jQuery所有实 ...
随机推荐
- Java多线程(四)—— synchronized关键字续
1.synchronized原理 在java中,每一个对象有且仅有一个同步锁.这也意味着,同步锁是依赖于对象而存在.当我们调用某对象的synchronized方法时,就获取了该对象的同步锁.例如,sy ...
- Linux进程管理 (9)实时调度类分析,以及FIFO和RR对比实验
关键词:rt_sched_class.SCHED_FIFO.SCHED_RR.sched_setscheduler().sched_setaffinity().RR_TIMESLICE. 本文主要关注 ...
- Java网络编程中异步编程的理解
目录 前言 一.异步,同步,阻塞和非阻塞的理解 二.异步编程从用户层面和框架层面不同角度的理解 用户角度的理解 框架角度的理解 三.为什么使用异步 四.理解这些能在实际中的应用 六.困惑 参考文章 前 ...
- 如何添加一种新Case协议
这里以添加基础http为例 首先要在脚本文件(XML文件)中定义好这种协议的基本信息 您必须在这里设计好您协议预先需要的数据(比如串口协议,那波特率,串口号等可能是不会经常改变的就可以在这里先 ...
- Spring+SpringMVC+Mybatis框架整合流程
一:基本步骤 新建Maven项目,导入相关依赖.(推荐) ————–Mybatis配置 —————- 新建entity包,并根据数据库(表)新建相关实体类. 新建dao包,并根据业务创建必要的mapp ...
- 【LeetCode-数组篇】 1 Two Sum
1 前言 之所以开始刷 LeetCode 上的算法题,一是快面临秋招,第二点是因为提升自己的编程能力,坚持两个月,希望博友们监督. 这个系列打算用 C# 和 Java 编程,为什么用两门语言,因为经历 ...
- Visual studio 2015 Community 安装过程中遇到问题的终极解决
早就有给自己电脑升级VS的想法,可是安装过程并不顺利,一直拖到现在,昨天下定决心,把遇到的问题一个个解决,终于安装成功了,将安装过程中遇到的问题和解决方法记录一下. 需要说明一下的是,不同的电脑环境可 ...
- .net core jwt
https://www.cnblogs.com/JacZhu/p/6837676.html
- 我的微信小程序第三篇(app.json)
前言 端午节回家了,所以好多天没有更新,只想说还是待在家里舒服呀,妈妈各种做好吃的,小侄子侄女各种粘着我在室外玩,导致我三天下来不仅胖了一圈,还黑了一圈,上班第一天有同事就说我晒黑了,哭~~~,为了防 ...
- Leetcode 101. Symmetric Tree(easy)
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For e ...