Gần đây tôi đã gặp sự cố này và tôi không muốn định cấu hình lại EJS, vì vậy tôi đã thay đổi cách gạch dưới nội suy, đánh giá và thoát giá trị.
Theo mặc định, đây là các thiết lập gạch khuôn mẫu hiện tại:
_.templateSettings = {
interpolate: /<%([\s\S]+?)%>/g,
evaluate: /<%=([\s\S]+?)%>/g,
escape: /<%-([\s\S]+?)%>/g
};
Sau đó, tôi được cập nhật các thiết lập để:
_.templateSettings = {
interpolate: /\{\{=([^}]*)\}\}/g,
evaluate: /\{\{(?!=)(.*?)\}\}/g,
escape: /\{\{-([^}]*)\}\}/g
};
Nói cách khác, đoạn trên sẽ thay đổi sau trong dấu gạch dưới:
Interpolate
- Từ:
<%= ... %>
- Để:
{{= ... }}
- Biểu hiện:
/\{\{=([^}]*)\}\}/g
Đánh giá
- Từ:
<% ... %>
- Để:
{{ ... }}
- Biểu hiện:
/\{\{(?!=)(.*?)\}\}/g
thoát
- Từ
<%- ... %>
- Để:
{{- ... }}
- Biểu hiện:
/\{\{-([^}]*)\}\}/g
Sau đó, mẫu gạch của tôi trông như thế này:
// Underscore
<script type="text/template">
<ul>
{{ _.each(collection, function(model) { }}
<li>{{= model.text }}</li>
<li>{{- model.textEscaped }}</li>
{{ }); }}
</ul>
</script>
... và các mẫu EJS của tôi vẫn như cũ và tôi có thể tiếp tục sử dụng mặc định ERB cú pháp để suy/đánh giá giá trị: <% ... %>
và <%= ... %>
:
// EJS
<% if (isAuthenticated) { %>
<%= user.displayName %>
<% } %>
Nguồn
2016-02-22 06:07:15
Tại sao bạn cần cả hai? Và làm các dấu ngoặc vuông làm việc, như đã đề cập ở đây? http://code.google.com/p/embeddedjavascript/wiki/Testing – Marc
Tôi đang sử dụng EJS với Backbone.js – deltanovember
là các dấu ngoặc vuông làm việc cho bạn? – Marc