SlideShare ist ein Scribd-Unternehmen logo
1 von 26
Downloaden Sie, um offline zu lesen
SourceMap 应用与详解
                                         孟红伦
                                        2012.12
                         http://blog.allenm.me




12年12月13⽇日星期四
答问题,抢旺仔!




12年12月13⽇日星期四
答问题,抢旺仔!

                        请听题:

                等等。。第一题留给新人吧。

                目前中国站的  js  、css  从开发环
                境到线上环境经历了哪些变换?


12年12月13⽇日星期四
目前中国站的  js  、css  从开发环
                境到线上环境经历了哪些变换?



                  合并、压缩、转  unicode




12年12月13⽇日星期四
你用过几种?
                 如何调试?




12年12月13⽇日星期四
在前端开发领域,出现了越来越
                多的预编译语言,来解决  js、css  
                的不足

                还有各种各样的合并、压缩规则

                这些都会造成你写的代码和最终
                浏览器执行的代码不同



12年12月13⽇日星期四
So...

                SourceMap  is  coming!




12年12月13⽇日星期四
http://www.youtube.com/watch?
                feature=player_embedded&v=2aQw1dSIYko
12年12月13⽇日星期四
答问题,抢旺仔!

                开放性问题,答的最全面者拿旺仔:

                如果让你来设计SourceMap,
                你将怎么设计?怎么来做映射
                呢?




12年12月13⽇日星期四
SourceMap  在你写的代码和最终浏览器
         执行的代码之间架起了一座桥梁

          打开Chrome  调试工具的“enable  
          source  map”的选项,访问:
          http://lab.allenm.me/sourcemap/

         uglifyjs  blink.js  main.js  --source-map  
         done.js.map  --source-map-root  ./  -o  
         done.js  -m  -c
12年12月13⽇日星期四
12年12月13⽇日星期四
我们可以直接看到  source  code  的什
                么地方报错


                还可以直接在  source  code  上打断点




12年12月13⽇日星期四
深入了解  SourceMap



          如果你想写一门自己的语言,将他们转
          换成  javascript、css,下面的内容或许
          有用




12年12月13⽇日星期四
2,现在最新的是第三版
                3,生成的文件的文件名
                4,source文件的通用
                路径,和  sources  中的
                文件名拼接起来确定
                source  url
                5,source  文件列表
                6,变量名列表
                7,mapping  data

12年12月13⽇日星期四
Mapping  Data:
                   用“;”分割组
                   一组对应生成的代码中的一行
                   用“,”分割段
                   一段是由1,4或者5个字段组成
                   使用  Base64  VLQ  编码


12年12月13⽇日星期四
尝试手工解码分析上面的例子




12年12月13⽇日星期四
OAAOC
                        Base64  变换
 最高位表示后         14,0,0,14,2
 边是否还有数                          最低位是符号
 据,1表示后面                         标志位,0表
 还有
                001110,000000,
                000000,001110,
                                 示正数
                    000010



                 7,0,0,7,1




12年12月13⽇日星期四
AAMA,QAASA,OAAOC,EAAIC


       [0,0,6,0],[8,0,0,9,0],
  值都是相 [7,0,0,7,1],[2,0,0,4,1]
  对前一个
  的  [0,0,6,0],[8,0,6,9,0],
                [15,0,6,16,1],[17,0,6,20,2]




12年12月13⽇日星期四
[0,0,6,0],[8,0,6,9,0],
                [15,0,6,16,1],[17,0,6,20,2]

        每段中的第一个数字表示生成代码的列数
        第二个数字对应  sources  列表里的文件
        第三个数字对应源代码的行数
        第四个数字对应源代码的列数
        第五个数字对应  names  列表的  name


12年12月13⽇日星期四
可以自己去上面我给出的例子中对照着
           验证下




12年12月13⽇日星期四
答问题,抢旺仔!



                为什么整出这么一套复杂的编码
                方式呢?闲的蛋疼吗?




12年12月13⽇日星期四
延伸阅读:
          Base64  编码:http://blog.allenm.me/
          2012/11/base64-encoding/  
          Base64  VLQ编码:http://
          blog.allenm.me/2012/12/base64-vlq-
          encoding/




12年12月13⽇日星期四
延伸阅读:

          SourceMap  文档:http://goo.gl/vtEVF


          SourceMap  介绍&视频:http://
          goo.gl/5xQEy




12年12月13⽇日星期四
Sass  还支持另外一种  SourceMap,
                Chrome  现在对它也有支持,需要
                在调试工具设置项中开启,开启后
                从上面给出的例子中也能看到效果




12年12月13⽇日星期四
目前SourceMap在Chrome中的表现
           还不够稳定,支持SourceMap的工具
           也不够多。
           但我相信,在不久的将来,主流的对
           前端源码做变换的工具、语言都将支
           持SourceMap,我认为这是解决调试
           难问题的良方。


12年12月13⽇日星期四
Q&A




12年12月13⽇日星期四

Weitere ähnliche Inhalte

Ähnlich wie Sourcemap

Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Mu-Fan Teng
 
007 Facebook Open Graph 相關開發簡單介紹 公開版
007 Facebook Open Graph 相關開發簡單介紹 公開版007 Facebook Open Graph 相關開發簡單介紹 公開版
007 Facebook Open Graph 相關開發簡單介紹 公開版Bruce Li
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyGump Law
 
html5/css3属性检测,我选择Modernizr
html5/css3属性检测,我选择Modernizrhtml5/css3属性检测,我选择Modernizr
html5/css3属性检测,我选择Modernizryidiyu
 
May the source_be_with_you
May the source_be_with_youMay the source_be_with_you
May the source_be_with_youEddie Kao
 
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub永昇 陳
 
Kiss your wallet goodbye
Kiss your wallet goodbyeKiss your wallet goodbye
Kiss your wallet goodbyeMikimoto Chuang
 
一个前端Js模板引擎的实现和优化
一个前端Js模板引擎的实现和优化一个前端Js模板引擎的实现和优化
一个前端Js模板引擎的实现和优化tblanlan
 
Top100summit 芈珺七拼八凑搭建移动自动化测试框架
Top100summit 芈珺七拼八凑搭建移动自动化测试框架Top100summit 芈珺七拼八凑搭建移动自动化测试框架
Top100summit 芈珺七拼八凑搭建移动自动化测试框架drewz lin
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copydrewz lin
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践lifesinger
 
Front-end makes change
Front-end makes changeFront-end makes change
Front-end makes changekeelii
 
Network and Multitasking
Network and MultitaskingNetwork and Multitasking
Network and Multitaskingyarshure Kong
 
新风尚活动分享
新风尚活动分享新风尚活动分享
新风尚活动分享tbmallf2e
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)羅左欣
 
Mopcon 2012 回顧與展望
Mopcon 2012 回顧與展望Mopcon 2012 回顧與展望
Mopcon 2012 回顧與展望Mikimoto Chuang
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBMonster Supreme
 

Ähnlich wie Sourcemap (20)

Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012Concurrency model for mysql data processing@rubyconf.tw 2012
Concurrency model for mysql data processing@rubyconf.tw 2012
 
007 Facebook Open Graph 相關開發簡單介紹 公開版
007 Facebook Open Graph 相關開發簡單介紹 公開版007 Facebook Open Graph 相關開發簡單介紹 公開版
007 Facebook Open Graph 相關開發簡單介紹 公開版
 
iOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techpartyiOS开发常用库推荐之一@techparty
iOS开发常用库推荐之一@techparty
 
html5/css3属性检测,我选择Modernizr
html5/css3属性检测,我选择Modernizrhtml5/css3属性检测,我选择Modernizr
html5/css3属性检测,我选择Modernizr
 
May the source_be_with_you
May the source_be_with_youMay the source_be_with_you
May the source_be_with_you
 
Android vs e pub
Android vs e pubAndroid vs e pub
Android vs e pub
 
Kiss your wallet goodbye
Kiss your wallet goodbyeKiss your wallet goodbye
Kiss your wallet goodbye
 
一个前端Js模板引擎的实现和优化
一个前端Js模板引擎的实现和优化一个前端Js模板引擎的实现和优化
一个前端Js模板引擎的实现和优化
 
Top100summit 芈珺七拼八凑搭建移动自动化测试框架
Top100summit 芈珺七拼八凑搭建移动自动化测试框架Top100summit 芈珺七拼八凑搭建移动自动化测试框架
Top100summit 芈珺七拼八凑搭建移动自动化测试框架
 
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copyTop100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
 
SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践SeaJS - 前端模块化开发探索与网站性能优化实践
SeaJS - 前端模块化开发探索与网站性能优化实践
 
Front-end makes change
Front-end makes changeFront-end makes change
Front-end makes change
 
Network and Multitasking
Network and MultitaskingNetwork and Multitasking
Network and Multitasking
 
新风尚活动分享
新风尚活动分享新风尚活动分享
新风尚活动分享
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
Hadoop 介紹 20141024
Hadoop 介紹 20141024Hadoop 介紹 20141024
Hadoop 介紹 20141024
 
20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)20161017 R語言資料分析實務 (2)
20161017 R語言資料分析實務 (2)
 
Mopcon 2012 回顧與展望
Mopcon 2012 回顧與展望Mopcon 2012 回顧與展望
Mopcon 2012 回顧與展望
 
Ria lqj
Ria lqjRia lqj
Ria lqj
 
Big Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDBBig Data, NoSQL, and MongoDB
Big Data, NoSQL, and MongoDB
 

Sourcemap

  • 1. SourceMap 应用与详解 孟红伦 2012.12 http://blog.allenm.me 12年12月13⽇日星期四
  • 3. 答问题,抢旺仔! 请听题: 等等。。第一题留给新人吧。 目前中国站的  js  、css  从开发环 境到线上环境经历了哪些变换? 12年12月13⽇日星期四
  • 4. 目前中国站的  js  、css  从开发环 境到线上环境经历了哪些变换? 合并、压缩、转  unicode 12年12月13⽇日星期四
  • 5. 你用过几种? 如何调试? 12年12月13⽇日星期四
  • 6. 在前端开发领域,出现了越来越 多的预编译语言,来解决  js、css   的不足 还有各种各样的合并、压缩规则 这些都会造成你写的代码和最终 浏览器执行的代码不同 12年12月13⽇日星期四
  • 7. So... SourceMap  is  coming! 12年12月13⽇日星期四
  • 8. http://www.youtube.com/watch? feature=player_embedded&v=2aQw1dSIYko 12年12月13⽇日星期四
  • 9. 答问题,抢旺仔! 开放性问题,答的最全面者拿旺仔: 如果让你来设计SourceMap, 你将怎么设计?怎么来做映射 呢? 12年12月13⽇日星期四
  • 10. SourceMap  在你写的代码和最终浏览器 执行的代码之间架起了一座桥梁 打开Chrome  调试工具的“enable   source  map”的选项,访问: http://lab.allenm.me/sourcemap/ uglifyjs  blink.js  main.js  --source-map   done.js.map  --source-map-root  ./  -o   done.js  -m  -c 12年12月13⽇日星期四
  • 12. 我们可以直接看到  source  code  的什 么地方报错 还可以直接在  source  code  上打断点 12年12月13⽇日星期四
  • 13. 深入了解  SourceMap 如果你想写一门自己的语言,将他们转 换成  javascript、css,下面的内容或许 有用 12年12月13⽇日星期四
  • 14. 2,现在最新的是第三版 3,生成的文件的文件名 4,source文件的通用 路径,和  sources  中的 文件名拼接起来确定 source  url 5,source  文件列表 6,变量名列表 7,mapping  data 12年12月13⽇日星期四
  • 15. Mapping  Data: 用“;”分割组 一组对应生成的代码中的一行 用“,”分割段 一段是由1,4或者5个字段组成 使用  Base64  VLQ  编码 12年12月13⽇日星期四
  • 17. OAAOC Base64  变换 最高位表示后 14,0,0,14,2 边是否还有数 最低位是符号 据,1表示后面 标志位,0表 还有 001110,000000, 000000,001110, 示正数 000010 7,0,0,7,1 12年12月13⽇日星期四
  • 18. AAMA,QAASA,OAAOC,EAAIC [0,0,6,0],[8,0,0,9,0], 值都是相 [7,0,0,7,1],[2,0,0,4,1] 对前一个 的 [0,0,6,0],[8,0,6,9,0], [15,0,6,16,1],[17,0,6,20,2] 12年12月13⽇日星期四
  • 19. [0,0,6,0],[8,0,6,9,0], [15,0,6,16,1],[17,0,6,20,2] 每段中的第一个数字表示生成代码的列数 第二个数字对应  sources  列表里的文件 第三个数字对应源代码的行数 第四个数字对应源代码的列数 第五个数字对应  names  列表的  name 12年12月13⽇日星期四
  • 20. 可以自己去上面我给出的例子中对照着 验证下 12年12月13⽇日星期四
  • 21. 答问题,抢旺仔! 为什么整出这么一套复杂的编码 方式呢?闲的蛋疼吗? 12年12月13⽇日星期四
  • 22. 延伸阅读: Base64  编码:http://blog.allenm.me/ 2012/11/base64-encoding/   Base64  VLQ编码:http:// blog.allenm.me/2012/12/base64-vlq- encoding/ 12年12月13⽇日星期四
  • 23. 延伸阅读: SourceMap  文档:http://goo.gl/vtEVF SourceMap  介绍&视频:http:// goo.gl/5xQEy 12年12月13⽇日星期四
  • 24. Sass  还支持另外一种  SourceMap, Chrome  现在对它也有支持,需要 在调试工具设置项中开启,开启后 从上面给出的例子中也能看到效果 12年12月13⽇日星期四
  • 25. 目前SourceMap在Chrome中的表现 还不够稳定,支持SourceMap的工具 也不够多。 但我相信,在不久的将来,主流的对 前端源码做变换的工具、语言都将支 持SourceMap,我认为这是解决调试 难问题的良方。 12年12月13⽇日星期四