javascript 컨트롤 개발 렌 더 링 대상
4660 단어 JavaScript프레임UI컨트롤
주요 목적 은 dom 요소 의 설정 에 따라 우리 가 원 하 는 효 과 를 나타 내 는 것 입 니 다. 예 를 들 어 div 에 code = "com. ui. botton" 속성 을 설정 하면 지정 한 com. ui. botton. js 클래스 에 따라 우리 의 단 추 를 그립 니 다.
사 고 를 실현 하 는 것 은 모든 dom 요 소 를 읽 고 지정 한 code 요소 가 있 는 지 확인 하 며 dom 에 대응 하 는 컨트롤 코드 를 집 는 것 입 니 다.
우 리 는 common 아래 에 파일 render. js 를 추가 합 니 다.
/**
* ui
* :dom
* callBack
*/
function render(dom, callBack){
if(typeof dom == "undefined") return;
// dom
var len = dom.childNodes.length;
for(var i = 0; i < len; i++) {
// dom
var curDom = dom.childNodes[i];
//
var childDom = curDom.childNodes;
// id name ,
var comName = curDom.id || curDom.name;
//
if(comName !== "" && typeof comName != "undefined" && comName != null) {
if(typeof thisWindow.com[comName] === "undefined") {
// code
var code = curDom.attributes.code;
if(typeof code != "undefined") {
var code = code.nodeValue;
// code
var comClass = eval(code);
if(typeof comClass != "undefined") {
// , option
var option = curDom.attributes.option;
if(typeof option != "undefined") {
option = eval("(" + option.nodeValue + ")");
}
try {
// code ui ,
var ui = new comClass(option, curDom, true);
// com ,
thisWindow.com[curDom.id || curDom.name] = ui;
// ,
curDom = ui.getRectDom();
} catch(e) {
// 。
thisWindow.LogInfo("create class " + code
+ " error:" + e.message);
}
} else {
//
thisWindow.LogInfo("class " + code + " can not found.");
}
}
} else {
// id , ,
thisWindow.LogInfo(comName + " is exist");
}
}
if(childDom.length > 0 && curDom != null && typeof curDom != "undefined") {
// ,
render(curDom);
}
}
if(typeof callBack == "function") {
callBack();
}
};
// body
render(document.body, function(){
if(typeof thisWindow.onAfterRender == "function") {
//
thisWindow.onAfterRender();
}
});
이 파일 도 staticScript. js 파일 목록 에 추가 합 니 다.
staticScript = [
"../css/com.comStyle.css",
"extend.js",
"render.js"
]
우선, 추 후 정 의 된 컨트롤 이름 이 혼 란 스 럽 지 않도록 네 임 스페이스 함수 nameSpace (nameSpace. js) 를 정의 합 니 다.
function nameSpace(){
var arg = arguments, obj = null, i, j, arr, ns;
// nameSpace
for (i = 0; i < arg.length; i++){
// "."
arr = arg[i].split(".");
//
ns = arr[0];
// ns , {}
if(window[ns] === undefined){
window[ns] = {};
}
obj = window[ns];
// , , {}
for (j = 1; j < arr.length; j++){
if(obj[arr[j]] === undefined){
obj[arr[j]] = {};
}
obj = obj[arr[j]];
}
}
return obj;
}
이 파일 을 common 폴 더 에 넣 고 staticScript. js 목록 에 추가 합 니 다. 다음 과 같 습 니 다.
staticScript = [
"../css/com.comStyle.css",
"extend.js",
"nameSpace.js",
"render.js"
]
여기 서 우리 의 컨트롤 프레임 워 크 는 이미 형성 되 었 습 니 다. 다음 과 같 습 니 다.
+--demo
+--script
+--common
+--init.js
+--staticScript.js
+--extend.js
+--render.js
+--nameSpace.js
+--css
+--com.comStyle.css
+--web
+--test.html
다음 에 우리 가 쓸 컨트롤 은 쉬 워 질 것 입 니 다.
첨부 파일 다운로드 가능
다음 자 바스 크 립 트 컨트롤 개발 의 컨트롤 초기 체험 을 주목 하 십시오
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.