는 여기에 다시 동안 이것을하기를위한 보았다 몇 가지 다른 옵션입니다. 그들을 식별하기 위해 명명 규칙 (* .ko.html)을 사용합니다. 내 빌드 체인은 다음과 같이 진행됩니다
1 단계 : 보풀 및 작게하다 * .ko.html 파일 이 단지 (<!-- ko -->
을 제외한) 주석을 제거하고보다 컴팩트 한 페이로드에 대한 여분의 공백을 제거하는 것입니다.
2 단계 : 축소 된 html을 js 파일로 문자열 화하고 연결합니다. JS는로드 할 수있는이 방법은 간단한 <script>
태그 대신 아약스의 get + 주입을 사용하기 때문에 내가 <script type="text/plain">
구분 기호가있는 HTML 파일로 합치 생각하지만, JS를 선택 않았다
var templates={
'name1':'some stringified html',
'name2':'some more'
};
같이 보입니다.
3 단계 : js 개체에서 템플릿을 검색하기 위해 기본 템플릿 엔진을 수정합니다.
var engine = new ko.nativeTemplateEngine();
engine._makeTemplateSource = engine.makeTemplateSource;
engine.makeTemplateSource = function (template, doc) {
if (typeof (template) === 'string' && templates[template]) {
return { text: function() { return templates[template]; } };
}
return engine._makeTemplateSource(template, doc);
};
ko.setTemplateEngine(engine);
내 구현은 이러한 빌드 단계를 수행 할 gruntjs를 사용합니다.(툴툴-있는 contrib-htmlmin, 꿀꿀-있는 contrib-CONCAT) htmlmin에 대한
옵션 : 사람이하고 싶은 이유를 궁금해 사람들을위한 CONCAT
{
stripBanners: true,
banner: "(function(t){",
footer: "})(window.templates || (window.templates={}));",
process: function (src, file) {
return 't[\'' + file.replace(/^.*\//, '').replace('.ko.html', '') + '\']=' + JSON.stringify(src) + ';';
}
}
에 대한
{
removeComments: true,
collapseWhitespace: true,
ignoreCustomComments: [/^\s*ko /, /^\s*\/ko /]
}
옵션 : 템플릿 소스 파일은 모든 HTML 편집기에서 편집 할 수있는 표준 개별 HTML 파일이며 소스는 이와 같이 제어됩니다. <script>
태그 안에서 HTML을 편집하는 것은 재미가 없습니다. 보너스로, 소스 파일에는 주석을 제거 할 수 있습니다. 스크립트 태그를 포함하여 모든 페이지에서 템플릿을 다시 사용할 수 있습니다. 모든 페이지에 인라인 할 필요가 없습니다. 결과 번들은 브라우저가 쉽게 캐시 할 수있는 정적 파일이지만 동적으로 생성 된 페이지에 포함 된 템플릿은 캐시 할 수 없습니다. 자바 스크립트 파일을 묶는 데 거의 같은 이유가 있습니다.
안녕하세요. 샘플이있는 온라인 리포지토리가 있습니까? github에? – hehe