Является ли это идеальным способом для управления шаблонами javascript?

#javascript #template-engine

#javascript #механизм шаблонов

Вопрос:

Для управления моими шаблонами (в mustache.js ) Я написал библиотеку, чтобы помочь. Например,

 <div id='beardTemplates'>
    <div data-beard='tpl1'>
        <h1>Hi, {{name}}</h1>
        <!-- a normal comment -->
        <!--@ Hi, {{name}}, this is an escaped template text. @-->
        <div data-beard='subTpl1'>sub tpl1</div>
    </div>
    <div data-beard='subTpl2' data-beard-path='tpl1'>
        sub tpl2
    </div>
</div>

// compiling the templates
Beard.load()

// after calling the load() method, the templates will be wrapped into an 
// object called Btpls, like :

Btpls =>
    tpl1 =>
        subTpl1
        subTpl2

// calling the template function
Btpls.tpl1({name: 'Liangliang'})

// output:
<h1>Hi, Liangliang</h1>
<!-- a normal comment -->
Hi, Liangliang, this is an escaped template text.

// calling the nested sub functions
Btpls.tpl1.subTpl1()

// output:
sub tpl1
  

Дело в том, что я не уверен, что это через <!— —> чтобы избежать шаблона текста безопасным способом? скажем, я тестирую библиотеку только в firefox, Chrome и IE. Все они хороши, но есть ли какие-либо другие потенциальные проблемы с другим браузером, скажем, Opera?

Если вы хотите, чтобы код тестировался в другом браузере, вы можете получить его из https://github.com/jspopisno1/Beard

Ответ №1:

Я тестировал в IE 7.0, 8.0, Chrome, FireFox, Safari и Opera.

Только IE вызовет некоторые проблемы, потому что он будет сжимать html-текст, который вы пытаетесь добавить к innerHTML. Это удаляет ведущие комментарии. Требуется еще немного усилий, чтобы заставить его работать в IE, но помимо этого все в порядке.

Вы можете посмотреть здесь http://jspopisno1.github.com/Beard