灵活和严谨:dojo和Extjs风格上的差别

dojo和Extjs,同为牛逼哄哄的重量级、一站式的javascript前端框架,都对javascript基于原型的继承模式进行了面向对象式的封装,为苦逼的前端工程师提供了一种更接近传统语言的编程体验。但即便如此,二者在风格上还是有很大的区别。首先,dojo支持多继承,而Extjs采用单继承的方式。为了突破这种限制,让类实现更丰富、更灵活的功能,Extjs提供了mixin和plugin这两种机制。其次,dojo引入了模块(module)的概念,采用异步模块定义(AMD)的方式来组织代码,模块可以是一个类、一个对象、一个函数,甚至可以使基本javascript类型,但在Extjs中是没有模块概念的。在组织代码时,在dojo中,模块是一等公民,每个模块对应一个文件,一组模块被放入一个包(package)中;而在Extjs中,类才是组织代码时的一等公民,一个类对应一个文件,类名和文件名通常一致,一组类被放入一个包(package)中。仅仅从这两个角度看,dojo之于Extjs,就像python之于java:

首先,python也支持多继承,而java则不支持。但java中有接口(interface)机制,这一点很像Extjs中的mixin和plugin。其次,python中也有模块的存在,一个.py文件就是一个可被其他文件引用的模块,模块中可以放置变量、函数和类;这在java中是不可想象的,java中执行一段代码必须借助于类,通常一个.java文件中放置一个类,类名和文件名通常一致。

这种类比给人的感觉是,dojo更自由灵活,而Extjs更严谨保守。但是,这种类比与直觉不符,毕竟dojo有IBM等巨头的撑腰,而Extjs是草根出身,似乎反过来才更与常理相符。这一点着实有趣,值得探讨。本来嘛,毕业后我一直从事Extjs相关开发,对Extjs喜欢的不得了,但可恨Extjs彻底走上了商业化道路,几经调研,发现能与它一较高下而且开源免费的似乎只剩dojo了;刚开始学习dojo的时候,可能因为用惯了Extjs,真的很讨厌dojo在创建组件时给html添加一大堆属性的做法。不过,细致地研究了一阵dojo后,我越来越喜欢javascript了,感觉真奇妙!

单继承VS多继承,你更喜欢哪一个?

单继承VS多继承,你更喜欢哪一个?

用支付宝钱包扫描此二维码,为本文付款
本文标签:
dojo前端心得Extjsweb前端

官方公众号:
查看更多有趣的信息,请扫码关注男儿邦官方微信公众号nanerbangblog。

公众号id:
男儿邦blog

版权声明:
本文为站长原创,如需转载,请联系作者,并以超链接形式注明出处

本文地址:
http://www.nanerbang.com/article/39/