템플릿 엔진에 자동 캐싱 추가
6455 단어 expresswebdevjavascriptnode
캐싱이 JS 템플릿 엔진에서 작동하는 방식
템플릿 엔진으로 캐싱하는 것은 매우 간단합니다. 우리는 키 값 객체를 유지하고 템플릿 문자열을 키로 사용하고 함수를 값으로 사용합니다. 이렇게 하면 템플릿을 더 빠르게 사용할 수 있습니다.
컴파일 내부에서 구현하기
모든 컴파일 기능은 다음과 같습니다.
const compile = (template) => {
return new Function("data", "return " + compileToString(template))
}
이름을 compileToFunction
로 바꾸겠습니다.
const compileToFunction = (template) => {
return new Function("data", "return " + compileToString(template))
}
이제 캐시를 생성해 보겠습니다. 이를 위해 Map
를 사용합니다.
const cache = new Map();
이제 이 캐시를 사용하는 compile
함수를 추가해 보겠습니다.
우리가 해야 할 일은 cache.has(template)
여부를 확인하는 것입니다. 그렇지 않은 경우 생성하고 설정해야 합니다. 그것이 있다면, 우리는 그것을 돌려주기만 하면 됩니다.
const compile = (template) => {
if (cache.has(template)) {
return cache.get(template);
} else {
const compiledFunction = compileToFunction(template);
cache.set(template, compiledFunction);
return compiledFunction;
}
}
렌더 기능 변경하기
현재 render
함수는 일부 Regex를 사용하여 모든 값을 대체합니다.
var render = (template, data) => {
return template.replace(/{{(.*?)}}/g, (match) => {
return data[match.split(/{{|}}/).filter(Boolean)[0]]
})
}
더 빠른 자동 캐싱을 위해 후드 아래에서 compile
를 사용하도록 변경해야 한다고 생각합니다. 구현하는 것은 매우 간단합니다. compile
를 실행한 다음 data
로 해당 기능을 실행하면 됩니다.
const render = (template, data) => {
return compile(template)(data);
}
결론
이 튜토리얼에서는 더 빠른 컴파일 및 렌더링을 위해 캐싱을 사용하여 이전 게시물에서 만든 템플릿 엔진을 확장하는 방법을 보여주었습니다.
당신이 좋아할 만한 다른 기사
const compile = (template) => {
return new Function("data", "return " + compileToString(template))
}
const compileToFunction = (template) => {
return new Function("data", "return " + compileToString(template))
}
const cache = new Map();
const compile = (template) => {
if (cache.has(template)) {
return cache.get(template);
} else {
const compiledFunction = compileToFunction(template);
cache.set(template, compiledFunction);
return compiledFunction;
}
}
var render = (template, data) => {
return template.replace(/{{(.*?)}}/g, (match) => {
return data[match.split(/{{|}}/).filter(Boolean)[0]]
})
}
const render = (template, data) => {
return compile(template)(data);
}
이 튜토리얼에서는 더 빠른 컴파일 및 렌더링을 위해 캐싱을 사용하여 이전 게시물에서 만든 템플릿 엔진을 확장하는 방법을 보여주었습니다.
당신이 좋아할 만한 다른 기사
Reference
이 문제에 관하여(템플릿 엔진에 자동 캐싱 추가), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shadowtime2000/adding-auto-caching-to-our-template-engine-1mnm텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)