John Resig Micro ошибка шаблонов
Поэтому я собираюсь использовать шаблонизатор Джона Резига.
Мне нужно передать в функцию переменную, содержащую "шаблон". Однако проблема в том, что мне нужно передать что-то вроде:
<script>
console.log("Double quotes");
</script>
<script>
console.log('single');
</script>
<iframe src="http://example.com/?<%=SOME_VARIABLE%>" frameborder="0"></iframe>
<div>I think I'm going to break</div>
<% for ( var i = 0; i < users.length; i++ ) { %>
<li><a href="<%=users[i]%>"><%=users[i]%></a></li>
<% } %>
<iframe src='http://example.com/?<%=SOME_VARIABLE%>' frameborder="0"></iframe>
<div>I think I"m going to break</div>
<% for ( var i = 0; i < users.length; i++ ) { %>
<li><a href='<%=users[i]%>'><%=users[i]%></a></li>
<% } %>
То, что кажется сломанным, это:
<script>
console.log('single');
</script>
С этим битом кода, проходящим через Regex, он терпит неудачу. Важно, чтобы я мог передать любой из вышеприведенного кода и не сломать его. Есть идеи?
1 ответ
Решение
Итак, я наткнулся на эту статью, в которой есть исправление (также изменяет <%%> на <# #> К вашему сведению
str.replace(/[\r\t\n]/g, " ")
.replace(/'(?=[^#]*#>)/g, "\t")
.split("'").join("\\'")
.split("\t").join("'")
.replace(/<#=(.+?)#>/g, "',$1,'")
.split("<#").join("');")
.split("#>").join("p.push('")
+ "');}return p.join('');";
http://weblog.west-wind.com/posts/2008/Oct/13/Client-Templating-with-jQuery