isv-page-json-to-xtpl
Version:
abs 将页面 json 转换成 html
66 lines (58 loc) • 2.1 kB
JavaScript
var _ = require('lodash');
var util = require('../../util');
module.exports = {
replaceSolutionAssets:function(xtpl,options){
options = _.extend({ isDev: false }, options);
var framework = options.framework;
var formattedAssets = util.formatAssets(framework);
xtpl = xtpl.replace('{{frameworkCss}}', formattedAssets.css[0] || '');
if (formattedAssets.js.length > 0) {
var js = formattedAssets.js[0];
//xtrl pc 下替换xctrl-kissy
if(options.terminalType === 'pc'){
js = js.replace('xctrl-kimi','xctrl-kissy');
}
if (options.isDev) {
//框架调试,解除 combo
var jsUrls = js.split('??');
var jsNames = jsUrls[1].split(',');
var scripts = [];
jsNames.forEach(function(name) {
scripts.push('<script src="' + jsUrls[0] + name + '"></script>');
});
xtpl = xtpl.replace('<script src="{{frameworkJs}}"></script>', scripts.join('\n'));
} else {
xtpl = xtpl.replace('{{frameworkJs}}', js);
}
}
var scripts = [];
_.map(framework.js,function(js){
scripts = scripts.concat(js);
});
_.each(scripts,function(path){
if(/kg\/pi\/(\S+)\/pi-kissy/.test(path)){
var alias = "define('kg/pi/pi-kissy', ['kg/pi/"+RegExp.$1+"/pi-kissy'],function(require, exports, module){ module.exports = require('kg/pi/"+RegExp.$1+"/pi-kissy'); });";
xtpl = xtpl.replace(/\{\{alias\}\}/g, alias);
}
});
//种子资源的特殊处理
var seed = options.seed;
if(seed){
var seedContent = util.comboAssets(['kimi','mmd','kissy-mod-define'],seed);
if(seedContent.js['g.alicdn.com']){
xtpl = xtpl.replace('{{frameworkSeedJs}}', seedContent.js['g.alicdn.com']);
}
//pc 页面特殊的注入
if(options.terminalType === 'pc'){
var fizAssetsContent = util.comboAssets(['fiz-assets'],seed);
if(fizAssetsContent.js['g.alicdn.com']){
xtpl = xtpl.replace('{{fizAssetsJs}}', fizAssetsContent.js['g.alicdn.com']);
}
if(fizAssetsContent.css['g.alicdn.com']){
xtpl = xtpl.replace('{{fizAssetsCss}}', fizAssetsContent.css['g.alicdn.com']);
}
}
}
return xtpl;
}
};