常用API
adapt¶
- 参数
- Object target
- 返回值 undefined
-
用法
接收一个对象作为参数,通过 assign(D.Adapter, target) 方式,重新适配或者扩展 D.Adapter 里面的方法。
assign¶
- 参数
- Object target
- Object arg1
- Object arg2
- ...
- 返回值 target
-
用法
接收若干个对象作为参数,依次合并对象的属性到目标对象 target,参数列表后面的对象会覆盖 target 对象的同名属性,返回最后的对象 target,和 Object.assign 相似。
extend¶
- 参数
- Object Child
- Object Parent
- Object obj
- 返回值 Child
-
用法
接收3个对象作为参数,使 Child 继承 Parent 并将 obj 合并到 Child 的原型对象,返回 Child。 - 源码参考
extend = (theChild, theParent, obj) => {
const child = theChild;
assign(child, theParent);
function Class () { this.constructor = theChild; }
Class.prototype = theParent.prototype;
child.prototype = new Class();
assign(child.prototype, obj);
child.__super__ = theParent.prototype;
return child;
}
chain¶
- 参数
- Function | Array[Function] task1
- Function | Array[Function] task2
- Function | Array[Function] task3
- ...
- 返回值 Promise
-
用法
接收若干任务参数作为任务列表,一次执行任务,如果任务的返回值中有then方法,对返回的对象中的then方法进行递归,知道执行完毕,返回值作为下一个参数任务的入参。
-
源码参考
chain (...args) {
let prev = null;
const doRing = (rings, ring, resolve, reject) => {
const nextRing = (data) => {
prev = data;
rings.length === 0 ? resolve(prev) : doRing(rings, rings.shift(), resolve, reject);
};
if (D.isArray(ring)) {
ring.length === 0 ? nextRing([]) :
this.parallel(ring, ...(prev != null ? [prev] : [])).then(nextRing, reject);
} else {
let value;
try {
value = D.isFunction(ring) ? ring.apply(this.context, prev != null ? [prev] : []) : ring;
} catch (e) {
D.Adapter.exportError(e);
reject(e);
return;
}
value && value.then ? value.then(nextRing, reject) : nextRing(value);
}
};
if (args.length === 0) return this.resolve();
return this.create((resolve, reject) => {
doRing(args, args.shift(), resolve, reject);
});
}
注意:如果中间任务抛出错误,程序会终止执行,导致整个模块崩溃。
uniqueId¶
- 参数
- String prefix
- 返回值 string
-
用法
接收一个字符串参数,生成唯一的id,返回的字符串id包含唯一编号和前缀 prefix。
注意:编号唯一性仅适用于当前初始化工程,每次刷新都会重新编号,如果要生成需要持久存储的id,千万不要使用该方法。
show¶
- 参数
- String regionKey
- String moduleName
- Object options
- 返回值 Promise
-
用法
调用当前视口 Regions 中 key 为 regionKey 的 Region 的 show 方法,传入 moduleName 和 options,最后会以Region(regionKey)为挂载点,渲染module(moduleName)。
dispatch¶
- 参数
- String name
- any params
- 返回值 Promise
-
用法
手动触发 Store 中 callbacks 里面 key 为 name 的方法,是view 和 module、module 和 store 通信的主要方式。
$$¶
- 参数
- String selector
- 返回值 DOM Object
-
用法
以当前view为根节点,查找并返回与selector匹配的DOM节点,本质是执行 this._getElement().querySelectorAll(selector)
isObject¶
- 参数
- any target
- 返回值 Boolean
-
用法
判断目标值 target 是否是对象,本质是执行 D.toString.call(target),通过对象的class属性判断
isFunction¶
- 参数
- any target
- 返回值 Boolean
-
用法
判断目标值 target 是否是函数,本质是执行 D.toString.call(target),通过对象的class属性判断
isArray¶
- 参数
- any target
- 返回值 Boolean
-
用法
判断目标值 target 是否是数组,本质是执行 D.toString.call(target),通过对象的class属性判断
isString¶
- 参数
- any target
- 返回值 Boolean
-
用法
判断目标值 target 是否是字符串,本质是执行 D.toString.call(target),通过对象的class属性判断
navigate¶
- 参数
- String path
- Boolean trigger
- 返回值 Boolean
-
用法
手动触发路由跳转到目标path,按 trigger 是否为 true,设置路由是否存入历史记录 - 源码参考
navigate (path, trigger) {
if (!this._started) return;
if (PUSH_STATE_SUPPORTED) {
root.history.pushState({}, root.document.title, this._prefix + path);
} else {
root.location.replace(this._prefix + path);
}
if (trigger !== false) this._dispath(path);
}