Я изучаю ASP.NET MVC и хотел добавить jQuery, чтобы сделать сайт интерактивным. Я использовал StringTemplate, портированный на .Net, в качестве движка шаблонов для генерации html и отправки JSON. Однако, когда я просматривал страницу, я не мог ее увидеть. После отладки я понял, что $ используется StringTemplate для доступа к свойству и т. д., И jQuery также использует его для управления DOM. Боже, я посмотрел на другие движки шаблонов, и в большинстве из них используется знак доллара :(.
Любой альтернативный шаблонизатор для ASP.Net MVC? Я хотел сохранить jQuery, потому что MSFT объявил, что он будет использоваться в Visual Studio (2008?)
Заранее спасибо :)
Обновлять
Пожалуйста, перейдите к ответ в вопросе Сравнение средств просмотра ASP.NET MVC, чтобы получить полный список шаблонов для ASP.NET MVC, а также их плюсы и минусы.
Обновление 2
В конце я просто помещу код JavaScript, включая JQuery, в отдельный файл сценария, поэтому я не буду беспокоиться о смешении $ с файлом шаблона.
Обновление 3
Изменен заголовок, чтобы отразить то, что мне нужно решить. Ведь «Лучшие X в Y» - вопрос очень субъективный.
Что может быть лучшим разделителем для символа «$»? Может быть, «<$ ... $>»?





Возможно jQuery.noConflict у вас подойдет
Думаю, этот вариант не применим для StringTemplate. Stringtemplate не является библиотекой JavaScript. NoConflict () используется, когда используется другая библиотека JavaScript, и эта библиотека использует $
Почему бы не использовать "jQuery" вместо "$"
Я всегда хотел «$» :). Во всяком случае, у вас есть точка ANaimi :). Думаю, я могу отпустить '$'
Вы пробовали $$ или / $, чтобы избежать знаков доллара в строковом шаблоне? Я не уверен насчет ST конкретно, но именно так работает большинство шаблонизаторов.
Что касается других движков шаблонов, мне очень понравился nVelocity, когда я использовал его в своем проекте.
ST использует \ $ для обозначения его как $, когда движок генерирует вывод, но это выглядело неудобно. Что ж, я мог бы посмотреть на nVelocity и посмотреть, понравится ли он мне. :)
Следовать за. У nVelocity есть проблема с $ (mail-archive.com/[email protected]/…), но тогда nVelocity выглядит чище.
Взгляните на проект mvccontrib. На данный момент у них есть 4 различных движка просмотра: brail, nhaml, nvelocity и xslt.
Я очень рекомендую Искра. Я уже некоторое время использую его с jQuery и пока не столкнулся ни с одной проблемой.
Spark не будет конфликтовать с jQuery, потому что $ распознается только непосредственно перед {выражением}. Не существует допустимого оператора jQuery, который начинается с «$ {».
Spark выглядит очень многообещающе. Похоже, мне это понравилось.
В последнее время я много использую Spark, и пока он отлично работает. настоятельно рекомендуется.
Если вы хотите придерживаться StringTemplate (ST) см. эту статью из вики ST. Вы также можете полностью изменить поведение, отредактировав Antlr.StringTemplate.Language \ DefaultTemplateLexer.cs и заменив «$» на то, что хотите.
Вы можете попробовать jsRepeater.
Конечно, вы можете переместить свою логику js в файл .js. Но если вы хотите, чтобы он был встроен в ваши представления StringTemplate, вы можете избежать его с помощью конструкции \ $.
Кроме того, вы можете просто использовать конструкцию jQuery ("selector") вместо конструкции $ ("selector"), если хотите избежать синтаксиса экранирования.
Вот хорошая статья о использование StringTemplate в качестве механизма просмотра в MVC.
Также есть сопутствующий Движок OpenSource вместе с некоторыми примерами.
Кроме того, как упоминалось выше, вы можете изменить свой лексер типов. (сделайте его альтернативным символом $).
использование jQuery вместо $ в любом случае является хорошей привычкой, поскольку библиотеки prototype и ms ajax в любом случае захватывают $, и вы хотите точно знать, что такое jQuery, а что не так хорошо.
JQuery может быть устранен с помощью ключевого слова jQuery, например:
jQuery(
вместо этого:
$(
Я считаю это лучшей практикой. Это исключает любую возможность конфликтов с другой библиотекой и делает код более читабельным.
Мне очень нравится синтаксис в Django, поэтому рекомендую NDjango :)
JsonFx.NET имеет мощный клиентский шаблонизатор со знакомым синтаксисом стиля ASP.NET. Вся структура специально разработана для хорошей работы с jQuery и ASP.NET MVC. Вы можете получить примеры того, как создать пользовательский интерфейс реального мира: http://code.google.com/p/jsonfx-examples/
Я использую ANTLR StringTemplate для проекта ASP.NET MVC. Однако я расширил грамматику StringTemplate (template.g), чтобы она распознавала "%" (aspx.template.g) как разделители. Вы можете найти эти файлы, если скачаете версию StringTemplate.net. Я создал соответствующие файлы: AspxTemplateLexer.cs, AspxTemplateParser.cs, AspxTemplateParserTokenTypes.cs и AspxTemplateParserTokenTypes.txt.
Кроме того, я изменил StringTemplateLoader.cs, чтобы распознавать расширения .aspx и .ascx, которые распознает Visual Studio. Таким образом, я не зацикливаюсь на расширении .st, и клиенты не видят разницы.
В любом случае, после перестройки StringTemplate у меня есть желаемое поведение. Что мне нравится в StringTemplate, так это то, что он НЕ позволяет встраивать ЛЮБОЙ код в шаблон. Похоже, Spark использует шаблон ASP / MVC по умолчанию, разрешающий код, что делает шаблоны менее переносимыми.
Я бы предпочел использовать в качестве разделителей «<%» и «%>», но, к сожалению, грамматика ANTLR кажется сложной и хрупкой для изменения, если это не сделал кто-то другой. С другой стороны, StringTemplate имеет отличное сообщество поддержки и отличный подход к разделению - в этом суть MVC.
Вам может понадобиться этот .NET Template Engine. Если вы хотите использовать символ «$», просто используйте «$$». См. Код ниже:
{%carName = "Audi R8"/}
{%string str = "This is an $carName$"/}
$str$
$$str$$
вывод будет
This is an Audi R8
$str$
Если я правильно понимаю StringTemplate версии 4, вы можете определить свой собственный escape-символ в конструкторе Template (или TemplateGroup).
Обнаружено, что Mustache является наиболее надежным, простым в использовании и легким полнофункциональным механизмом создания шаблонов для проектов .Net (веб и серверная часть)
Хорошо работает с .Net 3.5 (это означает, что ему не нужен динамический тип и .Net 4.0 для работы с моделями смешанного типа, такими как Razor).
Что мне больше всего нравится, так это возможность встраивать в них произвольные IDicts и заставлять движок работать правильно. Это делает этап переупаковки обязательных для всех двигателей супер простым:
var child = new {
nested = "nested value"
};
var parent = new {
SomeValue = "asdfadsf"
, down = child
, number = 123
};
var template = @"This is {{#down}}{{nested}}{{/down}}. Yeah to the power of {{number}}";
string output = Nustache.Core.Render.StringToString(template,parent);
// output:
// "This is nested value. Yeah to the power of 123"
Что самое прекрасное в Mustache, так это то, что тот же самый шаблон точно так же работает на чистом JavaScript или на любом другом из 20 или около того поддерживаемых языков.
У меня был опыт работы с этим, но я не вижу возможности локализовать контент. Использование глобальных ресурсов на моей странице шаблона test.aspx будет анализировать как «<% = Resources.Test.FirstName%>».
Я много слышал о StringTemplate, будет интересно посмотреть, сможете ли вы заставить это работать, изменив разделители ANTLR, как предлагается ниже ...