框架简介:

框架基于APICloud官网端API进行扩展和封装,框架完全采用面向对象编程形式,里面包含APP所使用的常用js功能:js类的自定义(类,构造方法,静态方法,继承...),常用工具函数(验证,变量类型,inarray,序列化转JSON...),对象扩展extend方法,迭代器each方法,apicloud常用端对象。

框架功能简要说明:

(1)封装js自定义类的方法,编写Base对象作为所有类的基类(即框架的类都继承与它)。

 /**
*
* Base
* @description 用于实现最基础的方法等
*
*/
var
Base = {
/**
* 判断 类与类之间 以及 对象与类之间 关系的基础方法
*
* 情况一(类与类之间):
* 1. 父类.is(子类) -> false
* 2. 子类.is(父类) -> true
*
* 情况二(对象与类之间):
* 1. 父类对象.is(子类) -> false
* 2. 子类对象.is(父类) -> true
*
* @param {Object} type 类名称
* @return {Boolean}
*/
is : function(type){
var
self = this; /**
*
* 调用对象.is(指定对象)
* 判断 调用对象 是否 包含 指定对象(属性)
* 或者也可以这样说
* 判断 指定对象 是否 包含于 调用对象(属性)
*
*/ while ( self ) {
if ( self == type ) return true;
self = self.__type__; // __type__ : (1)Class-引用其父类 (2)New-实例所属的类
} return false;
}
}; var
/**
* 核心方法一: Class
*
* 创建类的函数,用于声明类及继承关系
*
* @param {Object} DefineClass 定义类的对象
* @param {Object} BaseClass 需要继承的类(省略默认为 Base)
* @return {Class} 创建类
*/
Class = function(DefineClass, BaseClass){
// 默认继承 Base 基类
var
parent = BaseClass || Base,
// 创建类的临时函数壳 _class
_class = function(){
// __type__ 属性 : 引用其父类
this.__type__ = parent;
// 复制类的全部定义到当前创建的类
for( var member in DefineClass ) {
this[member] = DefineClass[member];
}
}; _class.prototype = parent; return new _class();
}; var
/**
* 核心方法二: New
*
* 创建对象的函数,用于任意类的对象创建
*
* @param {Object} ClassName 类
* @param {Object} ClassParam 类参数(构造函数需要的参数)
* @return {Object} 创建对象
*/
New = function(ClassName, ClassParam){
// 创建对象的临时函数壳 _new
var
_new = function(){
// __type__ 属性 : 据此可以访问到对象所属的类
this.__type__ = ClassName;
if(ClassName.create && typeof ClassName.create === 'function'){
// 约定 所有 类的构造函数: create !
ClassName.create.apply(this, ClassParam);
}
}; _new.prototype = ClassName; return new _new();
};

(2)全局函数(功能函数的扩充)

 /**
*
* ---------------------------
* 创建全局方法 VarToBool |
* @title VarToBool Global |
* @description 空值监测 |
* ---------------------------
*
*/
var
/**
* 判断变量 是否 成立
* [VarToBool 规定 ''|null|undefined|NaN|0|{}|[] 都为false,其他变量均为true]
*
* @param {[object]} data [需要判断的变量]
* @return {[Boolean]}
*/
VarToBool = function(data){
var
_t = typeof data
,hasProp = false
,prop = null
; if( _t === 'object' ) {
for ( prop in data ) {
hasProp = true; // 证明该对象存在属性
break;
}
return hasProp;
} return !!data;
};
/**
*
* ---------------------------
* 创建全局方法 GetType |
* @title GetType Global |
* @description 获取变量类型 |
* ---------------------------
*
*/
var
/**
* 得到变量 类型 字符串
* 'abc' return 'string'
* true return 'boolean'
* 123,NaN,Infinity return 'number'
* [] return 'array'
* {} return 'object'
* function(){} return 'function'
* new Date return 'date'
* new RegExp return 'regexp'
* Math return 'math'
* null return 'null'
* undefined return 'undefined'
*/
GetType = function(data){
var
_t = ''
; return ( (_t = typeof data) == 'object' ? data == null && 'null' || Object.prototype.toString.call(data).slice(8,-1):_t ).toLowerCase();
};
/**
*
* ---------------------------------
* 创建全局方法 SerializeToJson |
* @title SerializeToJson Global |
* @description form序列化转JSON |
* ---------------------------------
*
*/
var
/**
* 将 序列化字符串(a=b&c=d&e=f) 转化 为 json 对象
*/
SerializeToJson = function(paramStr){
var
json = {}
,pairs = null
,i = 0
,pairsLen = 0
,pos = 0
,argname = ''
,value = ''
; if(!paramStr || typeof paramStr !== 'string'){
return {};
}
paramStr = paramStr.replace(/\s*/g,''); // 清除该字符串所有空格 pairs = paramStr.split('&'); pairsLen = pairs.length || 0; for(;i<pairsLen;i++){
pos = pairs[i].indexOf('='); // look for "name=value"
if(pos == -1) continue; // if not found, skip
argname = pairs[i].substring(0,pos);
// extract the name
value = pairs[i].substring(pos + 1);
// extract the value
value = decodeURIComponent(value);
// decode it , if needed
json[argname] = value;
}
return json;
};
/**
*
* ---------------------------------
* 创建全局方法 JsonToSerialize |
* @title JsonToSerialize Global |
* @description JSON转form序列化 |
* ---------------------------------
*
*/
var
/**
* 将 json 对象 转化 为 序列化字符串(a=b&c=d&e=f)
*/
JsonToSerialize = function(json){
var
k = null
,strArr = []
; if(!json || typeof json !== 'object'){
return '';
} for(k in json){
strArr.push(k + '=' + json[k]);
} return strArr.join('&');
};
/**
*
* ---------------------------
* 创建全局方法 InArray |
* @title InArray Global |
* @description |
* ---------------------------
*
*/
var
/**
* @method InArray 检查值是否在数组中
* @param {value,Array} 值,数组
* @return {Boolean} 真返回true,否则返回false
*/
InArray = function(val,arr){
var
i = 0
,l = 0
; if ( GetType(arr) !== 'array' ){
throw '{"code":"1","msg":"数组不存在"}';
} for ( i = 0, l = arr.length; i < l; i++ ) {
if ( arr[i] === val ) {
return true;
}
} return false;
};

(3)App对象

App.extend : 对象扩充

/**
* [extend 对象合并]
* @param {[object]} des [源对象]
* @param {[array|object]} src [对象数组]
* @param {[boolean]} override [是否重写源对象]
* @return {[object]} [返回源对象的引用]
*/
App.extend = function(des, src, override){
var
i = 0
,l = 0
,k = null
,argsLen = arguments.length
; /* 方法重载 开始 */
if ( argsLen === 0 ) {
return {};
} else if ( argsLen === 1 ) {
return arguments[0];
}
/* 方法重载 结束 */ if ( src instanceof Array ) {
for ( i = 0, l = src.length; i < l; i++ ) {
App.extend(des, src[i], override);
}
} else {
for ( k in src ) {
if ( override || !(k in des) ) {
des[k] = src[k];
}
}
} return des;
};

App.each : 迭代器

 /**
* [_each 迭代器]
* @param {[array]} obj [待迭代对象数组]
* @param {Function} callback [迭代回调方法]
* @param {[object]} context [环境变量,用作回调函数中this的对象]
* @param {[type]} arg [传入迭代回调函数的参数]
* @throws {jsonstringify} 缺少参数
*/
App.each = function(obj, callback, context, arg){
var
k = null
,argsLen = arguments.length
; /* 方法重载 开始 */
if ( argsLen === 0 || argsLen === 1 ) {
throw '{"code":"1","msg":"缺少参数"}';
}
/* 方法重载 结束 */ if ( !callback || typeof callback !== 'function' ) throw '{"code":"1","msg":"参数类型必须为function"}'; for ( k in obj ) {
callback.call( context||null, k, obj[k], arg );
}
};

(4)App.APICloud对象

在该对象下完全和APICloud端API分类相同:窗口系统、应用管理、网络通信、数据存储、消息事件、设备访问、UI组件、多媒体、WebApp历史、其他。

略。

(5)框架关键字:

基础:Base Class New UseAs VarToBool GetType SerializeToJson JsonToSerialize InArray

对象:App Utils WinSystem AppManage Network DataStorage MsgEvent UI Media History Page

APICloud-端JS库功能API文档(1)的更多相关文章

  1. layer.js 弹窗组件API文档

      基础参数 type title content skin area offset icon btn closeBtn shade shadeClose time id shift maxmin f ...

  2. 如何制作dll库的API文档,自动生成微软风格的chm文件 Sandcastle Help File Builder 使用方法

    当你开发了一个库的时候,就需要给库开发一个api文档,微软提供了一个C#库的自动生成工具.我在使用的过程中记录了相关的信息,以供大家学习和查阅,如有不正之处,欢迎指出. 首先先下载一个软件,下载地址在 ...

  3. 测试工程师有福啦!一键生成api文档及测试功能

    最近发现一个比较好用的插件,可根据api的功能注释说明一键生成文档以及功能demo: swaggerUI 是一个简单的Restful API 测试和文档工具.简单.漂亮.易用.通过读取JSON 配置显 ...

  4. 【WebAPI No.4】Swagger实现API文档功能

    介绍: Swagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为 ...

  5. Swagger实现API文档功能

    介绍: wagger也称为Open API,Swagger从API文档中手动完成工作,并提供一系列用于生成,可视化和维护API文档的解决方案.简单的说就是一款让你更好的书写API文档的框架. 我们为什 ...

  6. 如何查看jsplumb.js的API文档(YUIdoc的基本使用)

    目录 一.问题描述 二. 处理方法 三. YUIdoc工具介绍 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:<大史住在大前端> ...

  7. 从零开始的SpringBoot项目 ( 五 ) 整合 Swagger 实现在线API文档的功能

    综合概述 spring-boot作为当前最为流行的Java web开发脚手架,越来越多的开发者选择用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于 ...

  8. 使用jsdoc-toolkit实现JS API文档自动化

    在前面的博文中探讨自动化工程问题时,写过基于NodeJS的,使用gulp.grunt的jsdoc插件实现文档自动化.本文探讨基于java环境的自动化实现. 一.Java安装与环境配置 关于Java的安 ...

  9. 使用jsdoc-toolkit来自动生成js api文档

    近来前端组小盆友开发的类库越来越多,很多情况下彼此不知道写了些什么方法,为了更好的合作提高工作效率,找了个比较好的api文档生成方法.使用jsdoc-toolkit来自动生成js api文档. 一.  ...

随机推荐

  1. iOS - UITableViewStylePlain与UITableViewStyleGroup样式的对比

    一.UITableViewStylePlain 1.有多段时 段头停留(自带效果) 2.没有中间的间距和头部间距(要想有的重写UITableViewCell \UITableViewHeaderFoo ...

  2. openldap slapd.conf参数

    已安装系统的 /etc/openldap/slapd.conf 中包含 LDAP 服务器的完整配置文件.在此简述了其中的各个项并说明了必要的调整.以符号 (#) 为前缀的项处于非活动状态.必须取消这个 ...

  3. WP8.1学习系列(第二十章)——添加控件和处理事件

    先决条件 添加控件 设置控件的名称 设置控件属性 创建事件处理程序 新控件 总结 相关主题 通过使用如按钮.文本框和组合框等控件,你可以创建应用的 UI. 下面将显示如何将控件添加到应用.处理控件时, ...

  4. 使用IBM SVC构建vSphere存储间集群

    使用IBM SVC构建vSphere存储间集群 本文目的 本文描述利用IBM SVC来构建Vsphere 存储间集群 解决方案 什么是vMSC? vShpere存储间集群是一个针对VmwarevSpe ...

  5. 使用SQL Server 2005作业设置定时任务【转】

    1.开启SQL Server Agent服务 使用作业需要SQL Agent服务的支持,并且需要设置为自动启动,否则你的作业不会被执行. 以下步骤开启服务:开始-->>>运行--&g ...

  6. 【大数据系列】MapReduce示例好友推荐

    package org.slp; import org.apache.hadoop.io.LongWritable; import org.apache.hadoop.io.Text; import ...

  7. JS方法 - 字符串处理函数封装汇总 (更新中...)

    一.计算一段字符串的字节长度 字符串的charCodeAt()方法, 可返回字符串固定位置的字符的Unicode编码,这个返回值是0-65535之间的整数,如果值<=255时为英文,反之为中文. ...

  8. Ajax提交表单时验证码自动验证 php后端验证码检测

    本文通过源码展示如何实现表单提交前,验证码先检测正确性,不正确则不提交表单,更新验证码. 1.前端代码 index.html <!DOCTYPE html> <html> &l ...

  9. 利用Metrics+influxdb+grafana构建监控平台(转)

    转自http://www.jianshu.com/p/fadcf4d92b0e 这里再配合Influxdb和Grafana可以构建一个非常漂亮的实时监控界面. Grafana监控界面 采集数据(Met ...

  10. ELK到底是什么?那么多公司用!

    Sina.饿了么.携程.华为.美团.freewheel.畅捷通 .新浪微博.大讲台.魅族.IBM...... 这些公司都在使用ELK!ELK!ELK! ELK竟然重复了三遍,是个什么?   一.ELK ...