JavaScript 代码热替换

JavaScript 代码热替换

ID:39549998

大小:41.50 KB

页数:5页

时间:2019-07-06

JavaScript 代码热替换_第1页
JavaScript 代码热替换_第2页
JavaScript 代码热替换_第3页
JavaScript 代码热替换_第4页
JavaScript 代码热替换_第5页
资源描述:

《JavaScript 代码热替换》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、JavaScript代码热替换题叶 · 我花了不少时间去学习JavaScript的代码热替换技术, 上周把Webpack的结果录了一个视频,这周又把相同方案在Figwheel环境当中粗糙地实现了一遍,如果关注这方面的进展可以往细了看一看,只是我的代码都基于Cirru也许不方便入手.总之,对于热替换技术我积攒了很多的感想,可以凑一篇文章来笼统说一下.另外在知乎上补了一个问题,如果有兴趣挖历史的话可以一看: 有过哪些代码热替换的技术?-编程语言.我接触编程挺晚,2009年冬天大致对HTMLPython有了点概念,到2012年知乎上膜拜了Haskell,

2、渐渐开始摸到了现在的方向,并且关注新技术,旧的历史我恐怕不了解,等待高人挖出来.过去抢镜的前端代码热替换做前端开发,接触到热替换的需求挺多的,最初是在浏览器调试工具元素界面上直接修改CSS属性,或者直接替换掉JavaScript运行环境的变量.然后Chrome开始发力,在Workspace工具当中集成热替换功能,比如2013年IO大会上演示CSS文件直接编辑生效,并且后来通过SourceMap支持的了LESS和SASS等.同时JavaScript文件的热替换也在RemoteDebuggingProtocol当中支持,在Workspace中修改的函数

3、会自动替换掉正在运行的代码当中.就我所看到的,ChromeDevTools团队牛人真是高歌猛进.基于Webkit调试工具的热替换功能后来还被发挥得更漂亮.LightTable原本是基于node-webkit开发的IDE(现在已经切换Electron了,也是Webkit),LightTable用于演示JavaScript开发的例子,当时就是打开了一个WebGL的调试页面, 一边修改JavaScript,一边画布上的粒子组成的立方体在更新,同时不会破坏它的旋转状态.至少对于开发而言是垂涎的.另一个方向上也有人把RemoteDebuggingProtoc

4、ol扒出来开发新的工具叫做 Amok,于是你可以在浏览器外边普通的TextEditor当中用了.反过来也见过 SublimeWebInspector 这样的项目把整个调试工具搬进编辑器,有点疯狂.到了LightTable当然绕不过 BretVictor大神的InventonPrinciple演讲了, 在LightTable之前作者了若干篇博文都是和BretVictor大神的东西相关的,不细说了.后来大家都看到2014年WWDCSwift发布时演示的Playground,太多太多LightTable影子,然而我不了解Swift开发不晓得热替换在Swi

5、ft当中能走到什么程度?JavaScript这边激发的项目项目还有 Tangle,这是一个动态修改文档的类库,也蛮有意思.前面提到了SASS,也就是编译到CSS的语言,在浏览器当中实现了热替换,而编译到JavaScript的语言也同时在发展着,而且其中的替换也远远不是编译到JavaScript然后动态patch掉runtime那么直接,毕竟这仅仅是Webkit当中带的功能.专业的函数式语言比如Haskell和Clojure编译出的JavaScript普通人恐怕觉得还不如ASM.js来的像JavaScript.Elm靠的是纯函数代码,直接进行函数替换

6、. Elm语言热替换的文章回溯到2013年九月,作者演示了一个网页游戏当中,修改代码角色跳跃轨迹动态修改的例子,两年多之前,那可是非常震撼的.后来Elm做得越来越细,时间旅行调试,智能提示编译错误,俨然甩开频繁刷新页面的我们很多年.ClojureScript也是编译到JavaScript的函数式语言,热替换实现得有点晚,Figwheel在大会上亮相的时间还在Webpack很久之后,只是后来能和Webpack的热替换抢抢风头,比如说在 Unity的VR环境当中热替换代码编程,而且Figwheel也跟着ReactNative一起用ClojureScri

7、pt在Android和iOS做热替换.我没研究细节实现,也说不上来,据说已经能做到一份Om代码,同时热替换Web,iOS,Android三个平台.它的角色和JSX也蛮像的,一方面提供语法做静态分析和提示编译错误,一方面生成JavaScript和VirtualDOM去对付Native平台的环境.跳出JavaScript来说,热替换大概是早已存在的技术,Erlang在1987年发布的,我不清楚支持的时间但是很早就是支持了代码的热替换,当然纠正一下,并不是说开发时热替换代码,而是部署OTP应用时不需要整个杀掉旧的服务,只需要逐步替换成新的进程就好了.El

8、ixir建立在ErlangVM之上,自然也继承了这个特性.我不大了解其他语言在这方面, 看到AndroidStudio有支

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。