문자열 확장 (2): 템 플 릿 엔진
3713 단어 JavaScriptString템 플 릿 엔진
템 플 릿 엔진 의 두 번 째 단 계 는 매개 변수 교체 와 방법 처 리 를 증가 하 는 것 이다.데이터 논리 와 UI 그리 기 를 분리 합 니 다.
낡은 규칙.핵심 코드 드 립 니 다.
// class TemplateBuilder
var TemplateBuilder = function (owner) {
//constructor
this.owner = owner;
}
TemplateBuilder.prototype = (function () {
//private
var methodMapping = {
Test:function(value){
return value+" run in test method"
}
} //
var BuildTemplateHtml = function (templateHtml, paramObj) {
var exp = new RegExp("{([^{]*?)}", "ig");
var returnValue = templateHtml;
var result = exp.exec(returnValue);
while (result) {//
result = result[1];
var replaceSetting = { key: result, value: "" }
var splits = result.split(":");
var objType = splits[0];
var paramName = splits[1];
var mappingMethodStr = splits[2];
var obj = null;
//
if(paramObj&¶mObj[objType])obj=paramObj[objType];
var value = null;
if (obj) {
value = TemplateHelper.GetParam(obj, paramName);
}
//
if (mappingMethodStr) {
var paramExp = /\((.*?)\)/ig;
var mappingMethodName = mappingMethodStr.replace(paramExp, "");
var method = methodMapping[mappingMethodName];
if (method) {
var params = [value];
var methodParam = paramExp.exec(mappingMethodStr);
if (methodParam && methodParam.length > 1) {
methodParam = methodParam[1];
params = params.concat(methodParam.split(","));//
}
value = method.apply(this, params);//
}
}
if (!value) { value = "" }
replaceSetting.value = value;
;
returnValue = returnValue.Format(replaceSetting);
exp.lastIndex = 0;
result = exp.exec(returnValue);
}
return returnValue;
}
var returnValue = {
//public
owner: null,
BuildTemplate: function (strTemplate, paramObj) {
return BuildTemplateHtml.call(this, strTemplate, paramObj);
}
};
return returnValue;
})();
도움말 클래스 템 플 릿 Helper 를 사 용 했 습 니 다.
코드 는 다음 과 같다.
var TemplateHelper = {
GetParam: function (sourceObj, strParam) {
var strs = strParam.split(".");
var returnValue = null;
for (var i = 0; i < strs.length; i++) {
if (!returnValue) {
returnValue = sourceObj;
}
returnValue = returnValue[strs[i]];
if (!returnValue) {
break;
}
}
if (!returnValue) {
returnValue = $.trim(returnValue);
}
return returnValue;
}
}
시 켜 봐, 데모.
본 고 는 '기술 은 집중 에서 비롯 된다' 는 블 로그 에서 나 온 것 으로 작가 에 게 연락 하 세 요!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.