JavaScript重构
收藏

JavaScript重构的方法、技巧讨论

分享到: Sina Tec

最近更新文章

Backbone.js介绍

注:教程请参见这里(本文有很多内容都是从这里翻译的),官方网站在这里;综合例子参见这里。   Backbone.js是一个前端MVC框架,model能够绑定键值对和自定义事件,集合具备可枚举方法的富API,视图具备事件处理能力,并且可以通过RESTful的JSON接口和你已有的API通信。   View   Backbone里的视图就是用来反映数据模型的,可以监听事件并响应,通过利用Un ...
RayChase 评论(3) 有4461人浏览 2012-05-08 22:57

前端解耦的一个最简单示例

  且看这样一段HTML片段:   <div id="name" style="background-color:red" onclick="alert('');">Jim</div>   这是前端代码全部耦合在一起的例子,下面对它进行MVC解耦。   第一步解耦,把View层分离出来:   < ...
RayChase 评论(1) 有5291人浏览 2012-05-04 21:11

关于CommonJS

老实说,之前我对CommonJS也是一无所知,直到不久前Node.js火起来,我去研究它,才了解到Node.js其实是CommonJS的一个部分实现,我才关注起CommonJS来。     以前我们说起HTML,我们说起JavaScript,大家的印象似乎都停留在了“网页”上面,从2005年开始,因为Ajax的缘故,有一种叫做“前端程序员”的新型物种诞生了。 可是现在,前端程序员不甘心自 ...
RayChase 评论(6) 有17288人浏览 2012-03-26 00:37

同步、异步转化和任务执行

正如动静是相对的概念,有了它们,世界才充满盎然生气;变和不变也是哲学上的对立统一,在代码的世界里也一样;同步异步呢?在这一篇文字里面已经很粗略地提到了同步和异步各自有些什么好处,接下来,我不妨说一些同步和异步互相转化的故事。   先来看看这一段代码:   setTimeout(function(){ while(true){ alert("In"); } ...
RayChase 评论(0) 有4237人浏览 2012-01-24 22:23

JavaScript实现继承的几种方式

在这篇文章中,介绍了原型链继承的情形,事实上,JavaScript虽没有给出继承的关键字,但是我们依然能够拿出一些好办法实现。   1、原型链继承: ...
RayChase 评论(1) 有12405人浏览 2012-01-07 23:21

从后端设计来类比前端设计的思考

今天同事的一句话给我留下深刻的印象:“前端也有MVC,DOM树就是这个M,CSS就是这个V,至于C,非JavaScript莫属”。   很高兴团队中有越来越多的人能 ...
 
RayChase 评论(1) 有3766人浏览 2011-11-04 20:46

JavaScript重构(十):强化对象封装和模块封装

1、类本身就是一种封装形式,先来看看最简单的封装,JavaScript中没有private关键字,对于私有成员,不如我们统一一个以下划线开头的命名来标识: var User = function(name){ this._name = name; this.getName = function(){ return _name; }; };     2、不过,上面的办法还不 ...
RayChase 评论(0) 有3680人浏览 2011-09-19 22:44

JavaScript并发下载

 在IE6/7里JavaScript会从两个方面阻碍页面呈现:script标签下面的网页资源在script加载完之前会停止请求、下载。 script标签下面的html元素在script加载完之前会停止渲染。   在ie6/7 firefox2/3 Safari3 Chrome1 和 opera下 script标签会阻碍下载:     虽然在ie8,safari4,chrome2下scri ...
 
RayChase 评论(0) 有2223人浏览 2011-08-21 13:34

JavaScript重构(九):自定义的JavaScript产品框架

产品做到一定程度,JavaScript不仅仅需要几个层面上的重构,而需要将这些合理的、零散的重构集成起来、系统化,最终形成一套适合自己产品的前端框 ...
RayChase 评论(0) 有2294人浏览 2011-08-14 18:14

随手记:为系统设计一套简易的JavaScript框架需要考虑的要素

最近在工作中做前端的重构,其中一个重要步骤就是设计一套简易的前端框架,把所想到的随手记下来:   物理和分布 js文件布局 模块化 依赖关系梳理 加载梳理   技能储备 JavaScript进阶 JavaScript面向对象 JQuery(或其他JavaScript基础框架)熟悉使用   规范和规则 JavaScript规范 对象化示例代码   框架内容 模型定义 ...
RayChase 评论(0) 有3063人浏览 2011-06-21 23:25

Javascript Memoizer

以下来自John Hann的实现,这段代码引起了我的注意,它用巧妙的方法把方法调用的结果缓存起来了。   代码解析: // memoize: 使用memoization来缓存的通用方法 // func: 要被缓存的方法 // context: 方法执行上下文 // Note: 方法必须是外部可访问的,参数是可字符序列化的 function memoize (func, cont ...
RayChase 评论(0) 有1517人浏览 2011-06-20 23:52

JavaScript重构(八):JSDoc和JSLint

JSDoc可以生成类似于JavaDoc一样的API文档,这对于前端开发是必不可少的。 下载jsdoc-tookit(http://code.google.com/p/jsdoc-toolkit/)和jsdoc-tookit-ant-task(http://code.google.com/p/jsdoc-toolkit-ant-task/),CSDN的转义功能有问题,所以把尖括号都换成了书名号: ...
RayChase 评论(0) 有2600人浏览 2011-04-30 20:29

JavaScript重构(七):重用老代码

在Java中,有这样一段老代码: class Round{ public void drawRound(); //画圆 }   现在新代码希望能和它共存,使用一个Person的对象来控制,只不过,可 ...
RayChase 评论(0) 有2096人浏览 2011-04-22 23:51

JavaScript重构(六):利用继承来做事

终于要说到JavaScript的继承了,原型链继承是最常用的一种方式: function Video(){}; function Movie(){}; Movie.prototype = new Video(); Movie.prototype.constructor = Movie; //不要丢失构造器   啰嗦一句,如果我拿到的是方法的实例,一样可以做继承: func ...
RayChase 评论(0) 有2407人浏览 2011-04-18 22:25

JavaScript重构(五):利用原型和闭包,完成组件方法

var Player = (function(){ Player = function(){ //这只是个空壳 throw new Error("Can not instantiate a Player object."); }; Player.MIN_EXTENDED_TIME = 1; Player.MAX_EXTENDED_TIME = 3; ...
RayChase 评论(2) 有2781人浏览 2011-04-16 17:53

JavaScript重构(四):JavaScript编码规则

没有规矩,不成方圆,JavaScript带来了灵活性,也带来了不受控的变量和访问,所以要用规则限制它。一支成熟的团队,还是一支新鲜的团队,规则应当是不一样的,我只是列出一些常见的或者有效的办法,来约束跳跃的开发人员,思维可以任意飞跃,代码却要持续受控。当然,任何规则都是建立在一定的认知基础之上的,面向对象JavaScript的基础是必备的,否则一切无从谈起。   变量和方法控制: 模块开发不允 ...
RayChase 评论(5) 有2711人浏览 2011-04-13 00:12

JavaScript重构(三):JavaScript的测试

进行JavaScript重构时,我希望引入易于使用的测试框架来保证重构的顺利进行,未来能持续通过测试代码对JavaScript逻辑的正确性做保障。 JsUnit (http://sourceforge.net/projects/jsunit/,http://www.jsunit.net/) JsUnit是一个独立的JavaScript单元测试框架,和JUnit差不多,没有上手难度,包括传统的se ...
RayChase 评论(0) 有2333人浏览 2011-04-12 00:30

JavaScript重构(二):JS的动态加载

前一节留下了一个问题,如果JS分门别类也清晰了,那我现在需要在必要的情况下才加载某一模块的JS,这个怎么实现呢?   方法一,最简单也是最容易被接受的方法,通过后台代码来控制,还是少些复杂的JS吧,通过一个标签、一个分支判断,就可以做到,何乐而不为呢?   方法二,如果要使用纯JS来控制,那么看看这样如何: $.ajax(){ url:"xxx/play.js" ...
RayChase 评论(0) 有3375人浏览 2011-04-10 22:54

JavaScript重构(一):模块划分和命名空间

通常我们的团队中,开发人员在Java语言层面具备相当的技术素养,经验丰富,而且有许多成熟的、合理的规约,类型繁多的代码隐患检查工具,甚至在团队间还有计划内的评审和飞检。但是前端的代码不似后台,就像一个没人疼的孩子,不仅仅容易被低估、被轻视,导致质量低劣、可维护性差,技能上,更缺少优秀的前端开发人员。 JavaScript是前台代码中重要组成部分,随着版本的延续,产品越做越大,JavaScript层 ...
RayChase 评论(2) 有4169人浏览 2011-04-10 22:20
  • 专栏创建者:RayChase
  • 创建时间:2011-12-24 22:23:08
  • 专栏文章数:19篇
  • 专栏被浏览:82697 次

本专栏热门文章

最新评论

受教了
facingSun 评论了 前端解耦的一个最简单示例
写得不错呢,赞一个
chenbinqun 评论了 关于CommonJS
比较新颖的想法
keketrtr 评论了 从后端设计来类比前端设计的思考
哇,看懂啦
dogdeng 评论了 关于CommonJS
RayChase 写道有女未长成 写道没个示例下载吗???期待中文章的第一句话的链接里面有。http: ...
有女未长成 评论了 Backbone.js介绍
有女未长成 写道没个示例下载吗???期待中文章的第一句话的链接里面有。http://backbonet ...
RayChase 评论了 Backbone.js介绍
没个示例下载吗???期待中
有女未长成 评论了 Backbone.js介绍
有点晕,呵呵
dengmawei 评论了 关于CommonJS
fancyleeo 写道没看懂…… 什么没有看懂?
RayChase 评论了 关于CommonJS
Am I stupid?
fancyleeo 评论了 关于CommonJS
Global site tag (gtag.js) - Google Analytics