간단한 템플릿 문자열 바꾸기

1821 단어
render (template,data) 방법을 실현하여template의 자리 차지 문자를 데이터에 대응하는 값으로 채웁니다
var template = "{{name}} , {{age}} ,{{name}} , {{age}} ",
    data = {name:"XXX",age:"16"};
render(template,data)  //XX , 16 

사고방식: 문자열에 있는 {{key}} 와 같은 자리 차지 문자를 가져와 data[key] 로 대체합니다.그래서 우리는 {{key}}key 두 개의 양을 실현하기 전에 문자열 조작 MDN과 정규 표현식 자바스크립트 정규 진급의 길인 활학묘용 기음 정규 표현식을 알아야 한다.
1. 렌더 함수 구현
/**
 * [render render template data ] 
 * @param  {[type]} template [ ]
 * @param  {[type]} data     [ ]
 * @return {[type]}          [ ]
 */
// 1 -  template , 
function render(template, data) {
    return template.replace(/\{\{(.*?)\}\}/g, (match, $1) => data[$1.trim()]);
}

// 2 -  data key, template 
// function render(template, data) {
//   Object.keys(data).forEach(key => {
//     template = template.replace(new RegExp(`{{${key}}}`,'g'), data[key]);
//   });
//   return template;
// }

2. html 문서에서 템플릿 사용
템플릿을 정의하는 방법:
(1) 진실한dom 구조에서 템플릿 문법을 사용하여 구조와 스타일을 조정합니다 (2) 조정된 html 코드를 type 형식이 바뀌어 실행할 수 없는script 탭에 넣습니다 (가장 좋은 것은 type="text/template") (3) 템플릿 문법의 차지 문자를 대체합니다



  
  template




    <a href="{{href}}">{{text}}</a>




//  
var templateDom = document.querySelector("#template"),
    template = templateDom.innerHTML;
    data = {
         href:"http://blog.hackerwen.tech",
         text:" "
         }
var resultTemplate = render(template,data);
document.body.innerHTML = resultTemplate;


좋은 웹페이지 즐겨찾기