Razor / CSHTML - Якась вигода від того, що ми маємо? [зачинено]


75

Хто-небудь, хто використовує нову функцію сторінок CSHTML, виявляє, що віддає перевагу цьому новому синтаксису механізму перегляду над існуючим механізмом перегляду ASP.NET MVC за замовчуванням або перед веб-формами, і якщо так, то чому? Що щодо CSHTML дає вам перевагу над MVC або веб-формами, або навпаки?

Просто цікаво почути, як люди беруться за це.


1
Я думаю, що на це запитання можна дати об’єктивні відповіді, називаючи фактичні (об’єктивні) чи передбачувані (суб’єктивні) переваги, але вам слід переформулювати своє питання, щоб отримати їх. У теперішній формі це занадто суб’єктивно і аргументовано.
dtb

2
Я трохи оновив питання. Але я повинен сказати, що я шукаю плюси і мінуси, і я прийму будь-яку відповідь, яку отримаю, оскільки я дивлюсь на загальний рівень, але хотів би почути і про технічні деталі, тому я не я не бачу проблеми в тому, як я це заявив ...
Брайан Мейнс

1
Чи існує якась шпаргалка / керівництво щодо використання Razor для розробників FrontEnd? Зараз я працюю над проектом Razor, очищаю програму від Foundation, і я хотів би знати щось більше про Razor, що могло б мені допомогти.
Джакомо Пайта

Відповіді:


45

Однією з переваг є те, що подання Razor можуть відображатися в рамках модульних тестів, це те, що було непросто з попереднім рендеристом ASP.Net.

З анонсу ScottGu це вказано як одну з цілей дизайну:

Unit Testable: Нова реалізація механізму подання підтримуватиме можливість модульного тестування подань (без необхідності контролера або веб-сервера, і може бути розміщена в будь-якому проекті модульного тестування - спеціальний домен програми не потрібен).


Додано посилання для підтвердження доказів :) Я ще не використовував Razor, тому зараз у мене немає коду для обміну. Дайте кілька місяців, і, можливо, я встигну пограти з бета-версією!
Simon Steele

2
Ми не викладали жодних вказівок щодо тестування поглядів Razor, але я писав про блог про розміщення механізму Razor поза ASP.Net: blog.andrewnurse.net/2010/07/22/…
Ендрю Стентон-Медсестра

5
Ви обов’язково повинні поглянути на чудовий двигун шаблонів Razor, розміщений на CodePlex: razorengine.codeplex.com
Маріус Шульц,

Нічого собі, я ніколи не магла перевірити нові види бритви. Я вважав, що тестування результатів роботи контролерів (наприклад, передача правильної / діючої моделі) було достатньо. Все, що поза цим, тестує вихід HTML - що здається трохи безглуздо.
RPM1984,

1
Ця відповідь (та й інші) все ще актуальна? Цікаво, з усіма новими функціями та речами, які виходять, все ще є якісь переваги від використання cshtml?
Michel Ayres

44

Попередня думка розробника Microsoft

Я працював у основній команді веб-сайту MSDN. Зараз я використовую бритву c # для веб-сайтів електронної комерції зі своєю командою програмістів, і ми зосереджуємося на інтерфейсі jQuery із внутрішніми сторінками бритви c # та базі даних пам'яті LINQ-Entity, тому сторінки мають 1-2 мілісекунди часу відгуку навіть на вкладені цикли із запитами. і відсутність кешування сторінок. Ми не використовуємо MVC, просто ASP.NET із бритвеними сторінками, які відображаються за допомогою модуля перезапису URL-адрес для IIS 7, жодних сторінок ASPX, а також ViewState або програмування подій на стороні сервера. Він не має зайвих (непотрібних) шарів, які MVC вкладає в конструкції коду для оскаржуваного регулярного виразу. Менше для нас більше. Це все худне і підле, але я даю реквізити MVC за його перевіряемость, але це все.

Сторінки бритви не мають життєвого циклу подій, як сторінки ASPX. Це просто візуалізація як одна запитувана сторінка. C # - це така чудова мова, і Razor прекрасно збивається з шляху, щоб дозволити йому робити свою справу. Анонімне введення тексту із використанням дженериків та linq робить життя таким простим завдяки сторінкам c # та бритви. Використання сторінок Razor допоможе вам подумати і легше кодувати.

Одним з недоліків Razor та MVC є відсутність стійкості, схожої на ViewState. Мені потрібно було реалізувати рішення для цього, тому я в підсумку написав для цього плагін jQuery -> http://www.jasonsebring.com/dumbFormState, який є плагіном для автономного зберігання HTML 5 для стану форми, який працює у всіх основних браузери зараз. В даний час це лише для стану форми, але ви можете використовувати window.sessionStorage або window.localStorage дуже просто, щоб зберігати будь-який стан у поштових зворотних зворотах або навіть запитах сторінок. вам не потрібно думати про це.


1
Найбільш вражаючі показники продуктивності - мені не подобається ASP.NET за доблесну спробу зробити веб-програмування на зразок VB6. Зробіть перевірку сукою. З цієї причини мені також подобається MVC. У вас є приклад, яким ви можете поділитися з архітектурою, яку ви використовуєте.
mozillanerd

Для "mozillanerd", з точки зору архітектури, якщо ви хочете перевірити те, що я описав, буквально зробіть анонімний об'єкт c # з новим, таким як var myobj = new {/ *, розмістіть структуру даних, подібну до json * /}, і мати це кешована в пам’яті і подивіться, наскільки швидко LINQ проти неї. Уявіть, що це каталог продуктів, і спробуйте LINQ проти нього. Він надзвичайно швидкий, але має своє місце з точки зору правильного припасування масштабу, як найкращий на одній коробці, якщо у вас не відбувається блакитне кешування та ви не запускаєте його на блакитних вікнах.
Джейсон Себрінг,

7
  1. Все зашифровано за замовчуванням !!! Це досить величезно.

  2. Декларативні помічники можна скласти, тому вам не потрібно робити нічого особливого, щоб ділитися ними. Думаю, вони певною мірою замінять елементи керування .ascx. Вам потрібно перестрибнути кілька обручів, щоб використовувати елемент керування .ascx в іншому проекті.

  3. Ви можете зробити необхідний розділ, який є приємним.


3

Найбільша перевага полягає в тому, що код є більш стислим. Редактор VS також матиме підтримку IntelliSense, якої немає в інших механізмах перегляду.

Декларативні помічники HTML також виглядають досить круто, оскільки використання помічників HTML у коді C # нагадує мені спеціальні елементи керування в ASP.NET. Я думаю, що вони взяли сторінку з частин, але з вбудованим кодом.

Отже, певні переваги перед механізмом перегляду asp.net.

Однак, на відміну від такого двигуна, як іскра:

Spark все ще більш лаконічний, ви можете зберігати if і і цикли в самому тегу html. Розмітка мені все ще здається більш природною.

Ви можете кодувати часткові, як саме ви робите декларативний помічник, ви просто переходите по змінних до часткового, і у вас те саме. Це було довкола іскри досить давно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.