# vita **Repository Path**: oss360/vita ## Basic Information - **Project Name**: vita - **Description**: vita是一个js组件框架,主要约定了组件的生成方式和实例化方式,并提供了组件以及组件实例的生命周期管理。此外还提供了自动模块化封装,兼容seajs和requirejs,如果是UI相关组件,还可以封装成jquery插件以便通过jquery调用组件方法。 - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2019-08-02 - **Last Updated**: 2021-11-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # vita js组件框架 # ---------- ## 简介 ## vita是一个js组件框架,主要约定了组件的生成方式和实例化方式,并提供了组件以及组件实例的生命周期管理。此外还提供了自动模块化封装,兼容seajs和requirejs,如果是UI相关组件,还可以封装成jquery插件以便通过jquery调用组件方法。 ## 基础能力 ## 1. `核心`:基础函数实现,核心能力不依赖第三方 2. `执行队列`:以生产和消费消息体的方式,实现js函数的执行队列,支持队列分类管理 3. `事件侦听`:以发布订阅的方式,实现在对象上的事件侦听,支持事件注册、监听、派发,事件派发处理使用了`执行队列` 4. `切面`:支持js对象和dom对象的事件/方法切面处理,支持事件前、事件后、事件前后处理 5. `ajax`:封装$.ajax以及$.fn.load方法,实现404、500等异常处理,实现统一遮罩等 6. `路由`:管理history(不是浏览器的history),可以判断是程序切换,还是前进后退按钮,并且可以限制路由变化 7. `组件框架`:js组件框架实现,组件可继承,并且维护组件及组件实例的生命周期,实现了js组件基类、js ui组件基类、js backbone组件基类、js biz业务组件基类 8. `模块`:js组件模块化封装,隐藏js组件的属性和私有函数(约定以“_”开头的为私有方法),支持与seajs和requirejs模块的相互调用 9. `jquery插件`:ui类组件,支持生成jquery插件,使用jquery来调用组件内公共方法 ## 功能组件 ## - 封装underscore工具,按使用对象拆解成`util`、`objectUtil`、`functionUtil`、`domUtil`、`collectionUtil`、`chain`、`arrayUtil`模块 - 封装bootstrap,按bootstrap组件分类解析成`input`、`container`、`inlineText`等等,支持主题切换 - datetime组件,主要用于移动端的时间选择 - dialog组件,对话框 - loading组件,遮罩 - popup组件,提示框,支持alert和confirm - moveTo组件,移动动画,支持多段直接移动 - webAssist组件,路由规则配置化,将路由规则配置成约定的json数据即可实现单页面应用的界面切换 - htmlTag组件,自定义html标签(或者自定义class),目前实现两个能力,一个是将html里数据附加到指定dom的data($.fn.data)里,另一个是实现dom与model(主要是backbone的model)的数据双向绑定 ## 目录结构 ## vita由以下几个模块组成: - `core`:核心组件,包括ajax、aop、debug(动态断点、调用栈输出)、event(事件侦听)、modular(模块化)、queue(执行队列)、router(路由)、widget(组件工厂)等 - `biz`:业务组件基类 - `modules`:功能组件,包括chart(chart图表的封装)、function(功能组件)、ui、util(工具类)等 - `themes`:下载的主题 - `demo`:封装bootstrap的组件demo 工程结构如下: vita --core ----core.js ----queue.js ----event.js ----aop.js ----ajax.js ----router.js ----modular.js ----debug.js ----widget.js ----widget.base.js ----widget.ui.js --biz ----widget.biz.js ----widget.biz4b.js --modules ----function ------datetime.js ------dialog.js ------htmlTag.js ------loading.js ------moveTo.js ------popup.js ------webAssist.js ----ui ------**.js(bootstrap组件封装) ----util ------**.js(underscore组件封装) ----chart ------**.js(chart图表封装) --themes ------*/**.less(下载的bootstrap主题) --demo(封装的bootstrap组件demo) ## 使用说明 ## ### (1)生成组件 ### 创建一个组件,一般需要三个入参,分别是widget_name,inherit,options,分别表示“组件名”,“需要继承的组件”,“组件参数”,格式如下: vita.widget(widget_name,inherit,options); > - `widget_name(组件名)` > - 这是一个字符串,必填且唯一,是请求组件时的唯一索引。 > - 必须遵循js的变量命名规则。例如:”button”。 > - 允许带一个命名空间,比如:”ui.button”,此时框架会使用命名为”ui”的类,作为该组件的基类,而组件名仍为”button”。 > - `inherit(继承的组件)` > - 可以是一个字符串,或者是一个字符串数组,例如”button”,或者[”button”]。 > - 必须是已有的组件名,如果没有找到指定组件,框架将忽略,这里指定的组件名,将按指定的顺序,作为该组件的基类。 > - 该入参为可选。 > - `options(组件参数)` > - 必须是一个对象,为组件指定属性或者方法。 组件范例如下: vita.widget("arrayUtil",{ inArray : function(){}, shift : function(){} }); > 这是一个名为`arrayutil`的数组工具类,这个组件里提供了`inArray`和`shift`两个方法。 另一个范例: vita.widget("myArray","arrayUtil",{ length : function(){} }); > 这是一个名为`myarray`的组件,它继承了`arrayutil`组件,并提供了`length`方法,即,这个组件拥有`inArray`、`shift`和`length`三个方法。以上代码中`arrayUtil`也可以写成`["arrayUtil"]`。 再一个范例: vita.widget("ui.button",{ _create : function(){ return $("