当我们在使用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 的理解的更多相关文章

  1. 03.JavaScript 面向对象精要--理解对象

    JavaScript 面向对象精要--理解对象 尽管JavaScript里有大量内建引用类型,很可能你还是会频繁的创建自己的对象.JavaScript中的对象是动态的. 一.定义属性 当一个属性第1次 ...

  2. JavaScript可否多线程? 深入理解JavaScript定时机制(转载)

    说明:最近写 js 时需要用setinterval函数做定时操作,谁知道,刚开始后运行完好,但一段时间后他就抽风了,定时任务运行的时间间隔越来越短,频率加快,这是一个完全不能容忍的问题,带着一个可以出 ...

  3. JavaScript中的闭包理解

    原创文章,转载请注明:JavaScript中的闭包理解  By Lucio.Yang 1.JavaScript闭包 在小学期开发项目的时候,用node.js开发了服务器,过程中遇到了node.js的第 ...

  4. JavaScript闭包的一些理解

    原文:JavaScript闭包的一些理解 简单一点的说:闭包就是能够读取其他函数内部变量的函数.那如何实现读取其它函数内部变量呢,大家都知道在JavaScript中内部函数可以访问其父函数中的变量,那 ...

  5. 前端周报:前端面试题及答案总结;JavaScript参数传递的深入理解

    1.2017前端面试题及答案总结 |掘金技术征文 "金三银四,金九银十",用来形容求职最好的几个月.但是随着行业的饱和,初中级前端er就业形势不容乐观. 行业状态不可控,我们能做的 ...

  6. 对JavaScript中闭包的理解

    在前端开发中闭包是一个很重要的知识点,是面试中一定会被问到的内容.之前我对闭包的理解主要是"通过闭包可以在函数外部能访问到函数内部的变量",对闭包运用的也很少,甚至自己写过闭包自己 ...

  7. javascript中 (function(){})();如何理解?

    javascript中 (function(){})();如何理解? javascript中: (function(){})()是匿名函数,主要利用函数内的变量作用域,避免产生全局变量,影响整体页面环 ...

  8. 转:对JavaScript中闭包的理解

    关于 const     let      var  总结: 建议使用 let  ,而不使用var,如果要声明常量,则用const. ES6(ES2015)出现之前,JavaScript中声明变量只有 ...

  9. javascript 匿名函数的理解(转)

    原网址 http://www.jb51.net/article/21948.htm javascript 匿名函数的理解(透彻版) 代码如下: (function(){ //这里忽略jQuery所有实 ...

随机推荐

  1. Java多线程学习(三)---线程的生命周期

    线程生命周期 摘要: 当线程被创建并启动以后,它既不是一启动就进入了执行状态,也不是一直处于执行状态.在线程的生命周期中,它要经过新建(New).就绪(Runnable).运行(Running).阻塞 ...

  2. MyBatis-你所不了解的sql和include

    目录 <sql> 节点的基础 <include> 节点 <sql> 节点包含的节点 一起来学习 mybatis @ 在前一篇[MyBatis动态SQL(认真看看, ...

  3. 剑指offer--1.二维数组中的查找

    题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  4. centos7 关闭selinux

    关闭SeLinux 临时关闭:setenforce 0 永久关闭:vi /etc/selinux/config

  5. Leetcode 686 Repeated String Match

    Given two strings A and B, find the minimum number of times A has to be repeated such that B is a su ...

  6. Python_每日习题_0003_完全平方数

    # 题目 一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少? # 程序分析 因为168对于指数爆炸来说实在太小了,所以可以直接省略数学分析,用最朴素的方法来获取 ...

  7. Codeforces Round #521 (Div. 3)

    B 题过的有些牵强,浪费了很多时间,这种题一定想好思路和边界条件再打,争取一发过.  D 题最开始读错题,后面最后发现可以重复感觉就没法做了,现在想来,数据量大,但是数据范围小枚举不行,二分还是可以的 ...

  8. MySQL添加用户错误:ERROR 1364 (HY000): Field 'ssl_cipher' doesn't have a default value解决方法

    MySQL添加新用户时出现如下报错,如下图: 经过查资料了解到: mysql用户表的中某些字段不能为空,没有默认值,其实是操作错误,mysql添加用户是不能这样直接insert user表的. 改为以 ...

  9. Python删除list里面的重复元素的俩种方法

    1.使用set函数  In [116]: a=[1,2,3,2,1,3,4,5,6,5] In [117]: set(a) Out[117]: {1, 2, 3, 4, 5, 6} 2.使用字典函数 ...

  10. iOStextField/textView在输入时限制emoji表情的输入

    https://www.jianshu.com/p/5227e6aab4d4 2017.02.27 13:08* 字数 146 阅读 6109评论 6喜欢 14 又遇到输入框输入表情的情况了,之前写了 ...