Mỗi mẫu trong dự án của tôi là tập tin html riêng của mình. Tôi sử dụng quy ước đặt tên (* .ko.html) để nhận dạng chúng. xây dựng chuỗi của tôi đi như thế này:
Bước 1: Lint và giảm bớt các tập tin * .ko.html Đây chỉ là để loại bỏ ý kiến (trừ <!-- ko -->
những người thân) và dải khoảng trống thừa cho một tải trọng nhỏ gọn hơn.
Bước 2: Cắt xén và rút gọn html được rút gọn thành tệp js. Các js trông giống như
var templates={
'name1':'some stringified html',
'name2':'some more'
};
tôi đã xem xét concatenating vào một file html với <script type="text/plain">
delimiters nhưng đã chọn js vì cách này nó có thể được nạp bằng một <script>
thẻ đơn giản thay vì một ajax get + tiêm.
Bước 3: Sửa công cụ mẫu gốc để truy xuất mẫu từ đối tượng js của tôi.
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);
thực hiện của tôi sử dụng gruntjs để thực hiện các bước xây dựng.(Grunt-contrib-htmlmin, grunt-contrib-concat)
tùy chọn cho htmlmin:
{
removeComments: true,
collapseWhitespace: true,
ignoreCustomComments: [/^\s*ko /, /^\s*\/ko /]
}
tùy chọn cho 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) + ';';
}
}
Đối với bất cứ ai tự hỏi tại sao mọi người sẽ muốn làm điều này: Tệp nguồn mẫu là các tệp html cá nhân chuẩn có thể được chỉnh sửa trong bất kỳ trình soạn thảo html và nguồn nào được kiểm soát như vậy. Việc chỉnh sửa html bên trong các thẻ <script>
không hề vui. Như một phần thưởng, các tệp nguồn có thể bao gồm các nhận xét sẽ bị loại bỏ. Mẫu có thể sử dụng lại trên bất kỳ trang nào bằng cách bao gồm thẻ tập lệnh: chúng không cần phải được gạch chân vào mỗi trang. Gói kết quả là một tệp tĩnh mà trình duyệt có thể dễ dàng lưu vào bộ nhớ cache, trong khi các mẫu được nhúng vào trang được tạo động không thể. Khá nhiều lý do tương tự cho việc nhóm các tệp javascript.
hey bạn có kho lưu trữ trực tuyến với mẫu không, ví dụ: trên github? – hehe