【已废弃】目前该项目为我的试验田 和一个完成一半的MVVM框架 但是目前在思考MVVM的意义和方向
xCube是一个面向对象
的基于类
的javascript库。
旨在以类继承的方式来应对日益复杂的前端js开发。提高代码复用,增强可维护性。
##框架简介 目前框架处于初级阶段只有内核部分 提供了语法层面的功能。即Class和Package。前者即为类,这个大名鼎鼎的概念就不再赘述。 而后者则是模块化(封装代码)功能,xCube并未采用主流的AMD或者CMD规范。而是采用全局命名空间的方式组织和管理类和代码。 同时实现了一些语法糖。使得模块引入后类的使用更方便
##xCube的优点
- 较好的实现了Class语法。贴近Java/C#语法。
- 实现super功能,能够重用父类构造函数完美支持多层继承关系的super调用
- 继承基于一个自定义的基类ObjectX,以供全局扩展,以免污染Object.prototype
- 实现了一个以全局命名空间为管理方式的模块系统
- 基于包(Package)的代码封装。以命名空间(如com.gs.Clazz)的方式避免命名冲突
- 实现导入命名空间的语法糖
##作者自述 有人说在无类语言中引入类语义是一种倒退。但我们应该多些辩证的眼光。
基于原型的继承就像是克隆或是细胞分裂,由对象生成另外的对象。基于类的继承更像是工厂生产,按照规则生产产品。而后者比前者多了些许规范,没有规矩不能成方圆。
虽然在原型继承的主场植入类语义。并不能保证实例(产品)都是严格合乎类所定义的规范(js可以随意修改实例对象 但ES5之后开始提供 冻结对象的功能)
但类的引入也是努力在制定一定规范或者提倡一种规范的方式来组织代码,生产产品,因为代码的可维护性跟规范是分不开的。 因此xCube中主要基于类进行开发 因为他并非jquery这种简便强大的类库风格,xCube的最初定位实际是为了构建框架,和较大型的应用开发。
因此抽象继承带来的重用性和模块化带来的可维护性,在大型应用中是不可或缺的~
不过目前xCube处于半成品状态。类工厂已经比较成熟。对于基于包的模块化方法,作者还在思考实际中的实践意义~目前为了实现语法糖而采用对函数进行重编译是否值得
正如mootools作者当初写mootools的动机是为了自己用一样,一个好的库或者框架也必须在自己的应用和实践中精雕细琢~路还有很长 加油!