S.config(configName,configValue)
设置或获取 KISSY 配置参数,有三种用法
config(configJSON)
config(name,value)
config(name)
其中S.config(configJSON)
的用法参照:
KISSY.config({
tag:'2012',
base:'http://x.com/a',
packages:{},
modules:{}
})
完整参数可以参照KISSY1.4的loader用法的config部分
mini.js支持完整的KISSY模块规范(KMD),规范详情移步这里
var isMini = S.config('mini');
最常用的配置用法是:
S.config({
packages: [{
name: 'test',
path: './'
}]
});
需要注意的是
- 原有的
ignorePackageNameInUri
配置默认值从false
改为true
- 1.x 及以后的版本不再支持
combine
和debug
两个参数
S.config = function (configName, configValue) {
var cfg,
r,
self = this,
fn,
Config = S.Config,
configFns = Config.fns;
if (S.isObject(configName)) {
S.each(configName, function (configValue, p) {
fn = configFns[p];
if (fn) {
fn.call(self, configValue);
} else {
Config[p] = configValue;
}
});
} else {
cfg = configFns[configName];
if (configValue === undefined) {
if (cfg) {
r = cfg.call(self);
} else {
r = Config[configName];
}
} else {
if (cfg) {
r = cfg.call(self, configValue);
} else {
Config[configName] = configValue;
}
}
}
return r;
};
S.config('mini',true);
var modules = {};
var isString = S.isString,
isFunction = S.isFunction;
var RE_DIRNAME = /[^?#]*\//,
RE_DOT = /\/\.\//g,
RE_DOUBLE_DOT = /\/[^/]+\/\.\.\//,
RE_DOUBLE_SLASH = /([^:/])\/\//g;
function parseDirName(name) {
var mat = name.match(RE_DIRNAME);
return name ? mat[0] : name + '/';
}
function parseRelativeName(name, refName) {
if (refName && /^[\.\/]/.test(name)) {
name = parseDirName(refName) + name;
name = name.replace(RE_DOT, '/');
while (name.match(RE_DOUBLE_DOT)) {
name = name.replace(RE_DOUBLE_DOT, '/');
}
name = name.replace(RE_DOUBLE_SLASH, '$1/');
}
return name;
}
function parseModuleName(name, refName) {
if (name.charAt(name.length - 1) === '/') {
name += 'index';
} else if (/.js$/.test(name)) {
name = name.slice(0, -3);
}
return parseRelativeName(name, refName);
}
function execFnWithModules(fn, modNames, refName) {
var args = S.map(modNames || [], function(modName) {
return S.require(modName, refName);
});
return isFunction(fn) ? fn.apply(S, [S].concat(args)) : undefined;
}
function execFnWithCJS(fn) {
return isFunction(fn) ? fn.apply(S, [S, S.require]) : undefined;
}