В шаблоне текстового плагина Require.js, как мне предоставить методы javascript?

Я использую Require.js и текстовый плагин. Я пытаюсь создать шаблон, который имеет что-то вроде этого:

<%= somefunction(displayvalue) %>

Мне нужно, чтобы somefunction (...) была доступна для нескольких шаблонов. Как лучше всего обернуть функцию для использования в нескольких местах? Я думал о том, чтобы сделать его модулем, но я не знаю, как передать его в шаблон.

1 ответ

После того, как вы скомпилируете шаблон, вы обнаружите, что вызываете функцию, и передаете некоторые аргументы. Так что просто передайте свою функцию в качестве аргумента:

var tpl = _.template( tplString );
tpl({ someFunction: function( val ) { /* do something */ } });

Хотя, я думаю, вам, вероятно, лучше, если вы передадите значение только внутри данных вашего шаблона. Шаблон на самом деле легче отлаживать и поддерживать, если он почти не требует логики. Так что вместо этого я бы пошел так:

tpl({ someValue: someFunction( aValue ) });

В другом движке шаблонов javascript (например, Handlebars) вы можете зарегистрировать вспомогательные функции, которые будут в основном доступны в глобальном масштабе для выполнения действий с данными вашего шаблона. Если вам действительно нужно использовать одну и ту же функцию внутри нескольких шаблонов, я бы подумал о переключении шаблонизатора. Подчеркивание обеспечивает механизм микротекстурирования, и поэтому как-то ограничено функциями помощников - хотя и может содержать слишком много логики...

На мой взгляд, шаблон подчеркивания хорошо работает для небольшого проекта и должен использоваться осторожно. Держите их как можно проще: if/else, печать данных, и это должно быть. Если вам нужно больше, перейдите на более полный шаблонный движок.

Но даже там всю логику, которую вы делаете внутри шаблона, сложно отладить.

Так! Будь проще.

Другие вопросы по тегам