html 如何制作tagpage,pageTag.html



(function () {

bingo.location.onLoadBefore(function(url, loc){console.log(url, loc);});

return;

var _tagStart = /\{\%/g,//开始标记

_tagEnd = /\%\}/g;//结束标记

//测试是否存在{%master file="" %}

var _testMasterTagRegx = new RegExp(_tagStart.source + /\s*master\s+file=["']([^"']*?)["'].*?/.source + _tagEnd.source, 'gi');

console.log('master true==', _testMasterTagRegx.test('{%master file="" %}')); //true

console.log('master1 false==', _testMasterTagRegx.test('{%master1 file="" %}')); //false

console.log('master file1 false==', _testMasterTagRegx.test('{%master file1="" %}')); //false

//测试是否存在页面标签

var _testPageTagRegx = new RegExp(_tagStart.source + /\s*(?:master|include|using|contentholder|content).*?/.source + _tagEnd.source, 'i');

console.log('master true==', _testPageTagRegx.test('{%master file="" %}')); //true

console.log('include true==', _testPageTagRegx.test('{%include file="" %}')); //true

console.log('using true==', _testPageTagRegx.test('{%using file="" %}')); //true

console.log('contentholder true==', _testPageTagRegx.test('{%contentholder id="" %}')); //true

console.log('/contentholder false==', _testPageTagRegx.test('{%/contentholder%}')); //false

console.log('content true==', _testPageTagRegx.test('{%content id="" %}')); //true

console.log('/content false==', _testPageTagRegx.test('{%/content%}')); //false

//匹配{%master file="aaa/master" %}类型

var _fileTagRegx = new RegExp(_tagStart.source + /\s*(master|include|using)\s+file=["']([^"']+?)["']\s*/.source + _tagEnd.source, 'gi');

//匹配{%content id="body"%}.....{%/content%}类型

var _idTagRegx = new RegExp(_tagStart.source + /\s*(contentholder|content)\s+id=["']([^"']+?)["']\s*/.source + _tagEnd.source + /((?:.|\n|\r)*?)/.source + _tagStart.source + /\/\s*\1\s*/.source + _tagEnd.source, 'gi');

$(function () {

var html = document.body.innerHTML;

_fileTagRegx.lastIndex = 0;

var list = [], item;

while (item = _fileTagRegx.exec(html)) {

list.push({

type: 'file',

find: item[0],

tag: item[1],//master|include|using

file: item[2]//file的值:view/user/list

});

}

console.table ? console.table(list) : console.log(list);

_idTagRegx.lastIndex = 0;

list = [], item;

while (item = _idTagRegx.exec(html)) {

list.push({

type: 'id',

find: item[0],

tag: item[1],//contentholder|content

id: item[2],//id的值

content: item[3]//标签内容

});

}

console.table ? console.table(list) : console.log(list);

});

})();

(function(){

return;

var _cmps = {};

bingo.cmp = function(p){

if(bingo.isObject(p)){

p = bingo.extend({

//优先级, 越大越前, 默认100

priority: 100,

//是否加载模板

tmpl:false,

//是否引用js

using:false

}, p);

_cmps[p.name] = p;

} else

return _cmps[p];

};

bingo.cmp({

name:'master',

priority:900,

tmpl:true,

fn:function(p){

p.loadTemp(p.node.attr.file);

}

});

bingo.cmp({

name:'include',

tmpl:true,

fn:function(p){

p.loadTemp(p.node.attr.file);

}

});

bingo.cmp({

name:'using',

using:true,

fn:function(p){

p.using(p.node.attr.file);

}

});

bingo.cmp({

name:'contentholder',

priority:90,

fn:function(p){

var node = p.node, id = node.attr.id;

var contentNode = bingo.linq(p.allNodes).where(function(){

return this.name == 'content' && this.attr.id == id;

}).first();

p.replace(contentNode ? contentNode.content : '');

}

});

bingo.cmp({

name:'content',

priority:85,

fn:function(p){

p.replace('');

}

});

})();

(function(){

return;

var _testCmpRegx = /|>)/i;

console.log('master true==', _testCmpRegx.test('')); //true

console.log('master n true==', _testCmpRegx.test('')); //true

console.log('content true==', _testCmpRegx.test('')); //true

$(function(){

var html = '' +document.body.outerHTML;

var _cmpTagRegx = /|>((?:.|\n|\r)*?))/gi;

var _cmpAttrRegx = /\s*(\S+)\s*=\s*(?:["]([^"]*?)["]|[']([^']*?)['])\s*/gi;

var _cmpObj = {

loadTmpl:function(f){

var $this = this;

bingo.loadTmpl(f, function(h){

$this.replace(h);

})

},

using:function(f){

bingo.using(f);

this.replace('');

},

replace:function(s, s1){

if (arguments.length == 1)

this.html = this.html.replace(this.find, s);

else

this.html = this.html.replace(s, s1);

}

};

var _traverseIdTag = function(html){

var item, list = [], name, cmp;

_cmpTagRegx.lastIndex = 0;

while(item = _cmpTagRegx.exec(html)){

//console.log(item);

name = item[1];

cmp = bingo.cmp(name);

if (cmp)

list.push(bingo.extend({

find:item[0],

name:name,

node:{content:item[3], attr:traAttr(item[2])},

cmp:cmp

}, _cmpObj));

}

bingo.each(list, function(){

var c = this.content;

if (_testCmpRegx.test(c)){

list =list.concat(_traverseIdTag(c));

}

});

return list;

}, traAttr = function(s){

var item, attr = {};

_cmpAttrRegx.lastIndex = 0;

while(item = _cmpAttrRegx.exec(s)){

attr[item[1]] = item[2] || item[3] || '';

}

return attr;

};

var list = _traverseIdTag(html);

list = bingo.linq(list).sortDesc(function (item) { return item.cmp.priority; }).toArray();

var hasLoad = bingo.linq(list).where(function (item) { return item.cmp.tmpl; }).contain();

console.log(hasLoad, list);

});

})();

contentholder. text

aaa

content. text

你好吗?

一键复制

编辑

Web IDE

原始数据

按行查看

历史

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值