Как правильно использовать соютилс с Google Closure? - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь использовать Шаблоны Google Closure (соя) с Google Closure .

Я включаю файл утилит soyutils_usegoog.js в соответствии с инструкциями.Этот файл содержит ряд утилит, используемых сгенерированными шаблонами, в частности soy.StringBuilder.Вот как он создается:

soy.StringBuilder = goog.string.StringBuffer;

Для файла soyutils требуется goog.string.StringBuffer несколькими строками выше, но при работе в некомпилированном режиме это приводит к ошибке времени выполнения, поскольку файл JS, который StringBufferнаходящиеся в не будут загружаться до тех пор, пока после выполнения soyutils не будет выполнен.

Если я не ошибаюсь, файлы JS в Closure не должны немедленно обращаться к пространствам имен, которые им «требуются».Тег <script> добавляется только после выполнения текущего скрипта (в некомпилированном режиме), поэтому немедленное использование приведет к ошибке времени выполнения.

Короче, как я могу загрузить в soyutils_usegoog.js безвызывая ошибку времени выполнения из-за раннего доступа к good.string.StringBuffer.

Ответы [ 2 ]

1 голос
/ 01 января 2012

Вы воссоздаете deps.js со своими скомпилированными шаблонами в качестве входных данных (и soyutils_usegoog.js)? И тогда вы goog.require - ваш шаблон? Примерно так должно работать:

<script src="/closure-library/closure/goog/base.js"></script>
<script src="/closure-library/closure/goog/deps.js"></script><!-- might not need this line if base.js is setup to auto include deps.js -->
<script>
    goog.require('your.template');//this will pull in and execute all the dependencies (including StringBuffer) for your template
</script>
<script>
    alert(your.template());
</script>
0 голосов
/ 21 ноября 2011

Возможно, вопрос был задан на http://groups.google.com/group/closure-templates-discuss?

...