문제

내가 찾고 있었어요 그래서 및 구글에 대한 고장의 다양한 가능한 엔진 보기 ASP.NET MVC,그러나 찾지 않은 것보다 훨씬 더 간단한 높은 수준의 무엇을 설명 보기 엔진입니다.

나는 반드시고"가"또는"빠른"하지만 오히려 진짜 세계 비교의 장점/단점의 중요한 선수(예:기본 WebFormViewEngine,MvcContrib 보기 엔진,etc.) 다양한 상황입니다.나는 생각한 것이 정말로 도움이 되는지를 결정하에서 전환하는 기본 엔진하는 것이 유리한 또는 주어진 프로젝트 개발 그룹입니다.

는 사람이 또는 이와 유사한 프로그램을 비교?

도움이 되었습니까?

해결책

ASP.NET MVC 보기 엔진(커뮤니티 Wiki)

이 포괄적 인 목록을 표시하지 않는,존재하는 시작하자 중 하나는 여기에 그래서.이 될 수 있습으로 가치 ASP.NET MVC 커뮤니티우 추가 그들의 경험(esp.사람에 기여 하나 이들의).아무것도 구현 IViewEngine (예: VirtualPathProviderViewEngine 은)공정한 여기에 게임.그냥 알파벳순으로 하는 새로운 볼 엔진(을 떠나 WebFormViewEngine 면도기에서 최고),그리고 객관성을 유지하는 것에 비교할 수 있습니다.


시스템입니다.웹.Mvc.WebFormViewEngine

디자인 목표:

기 엔진에 사용되는 렌더링 웹 양식 페이지를 응답입니다.

장점:

  • 이후 유비쿼터스는 배송 ASP.NET MVC
  • 에 친숙한 환경 ASP.NET 개발자
  • IntelliSense
  • 선택할 수 있습니다으로 모든 언어로 CodeDom 공급자(예:C#VB.NET F#,Boo,Nemerle)
  • on-demand 컴파일이나 미리 컴파일

단점:

  • 사용이 혼동의 존재에 의해"classic ASP.NET"패턴이는 더 이상 적용에 MVC(예:ViewState 다시 게시)
  • 에 기여할 수 있 anti-패턴의"태그 수프"
  • 코드 블록과 구문 강한 입력 방법으로 얻을 수 있습니다
  • IntelliSense 적용하는 스타일에 항상 적절하지 않에 대한 인라인 코드 블록
  • 시끄러울 수 있습을 디자인할 때 간단 템플릿

예제:

<%@ Control Inherits="System.Web.Mvc.ViewPage<IEnumerable<Product>>" %>
<% if(model.Any()) { %>
<ul>
    <% foreach(var p in model){%>
    <li><%=p.Name%></li>
    <%}%>
</ul>
<%}else{%>
    <p>No products available</p>
<%}%>

시스템입니다.웹.Razor

디자인 목표:

장점:

  • 소형,표현하고,유동성
  • 쉽게 배울
  • 는 새로운 언어
  • 가 Intellisense
  • 단위 테스트
  • 유비쿼터스,배송 ASP.NET MVC

단점:

  • 만 약간 다른 문제에서"태그 수프"참조한다.서버 태그를 실제로 구조를 제공한 주위에 서버 및 비-서버 코드는,면도기를 혼동 HTML 고 서버에 코드를 만들고,순수한 HTML 또는 JS 개발에 도전하십시오(Con 예#1)으로 당신을"이스케이프"HTML 및/또는 자바스크립트 태그에서 매우 일반적 조건입니다.
  • 가난 캡슐화+reuseability:그것은 비실용적이 전화를 면도칼로 템플릿을 경우 그것은 일반 방법-연습에 면도기를 수 있는 코드를 호출하지만 그 반대의 경우도 마찬가지할 수 있는 격려하는 혼합의 코드와 프리젠 테이션입니다.
  • 구문은 매우 html 을 지향;generating html 이 아닌 내용 까다로운 일이 될 수 있습니다.그럼에도 불구하고,면도기의 데이터 모델은 기본적으로만 문자열 연결므로,구문 및 중첩 오류도 정적 또는 동적으로 감지되도 VS.NET 디자인-간 도움을 완화이다.유지 관리 및 refactorability 할 수 있는 고통 때문이다.
  • 아 문서화된 API, http://msdn.microsoft.com/en-us/library/system.web.razor.aspx

Con 예#1(통지의 위치"string[]..."):

@{
    <h3>Team Members</h3> string[] teamMembers = {"Matt", "Joanne", "Robert"};
    foreach (var person in teamMembers)
    {
        <p>@person</p>
    }
}

Bellevue

디자인 목표:

  • 존중 HTML 으로 첫 번째 클래스의 언어는 반대로 그것을 치료"로 단순한 텍스트".
  • 아무 HTML!데이터 바인딩 코드(Bellevue 코드)분리되어야 합니다.
  • 을 적용하는 엄격한 모델의 보기 분리

죔줄

디자인 목표:

죔줄 보기 엔진을 포팅되었습니다 에서 모노레일을 작업 Microsoft ASP.NET MVC Framework.대 소개 죔줄,보 에 대한 문서 성 프로젝트 웹사이트.

장점:

  • 모델로"손목 친환경 python syntax"
  • On-demand 컴파일하기(지만 미리 컴파일 사용가능)

단점:

  • 설계서 작성한 언어 Boo

예제:

<html>    
<head>        
<title>${title}</title>
</head>    
<body>        
     <p>The following items are in the list:</p>  
     <ul><%for element in list:    output "<li>${element}</li>"%></ul>
     <p>I hope that you would like Brail</p>    
</body>
</html>

Hasic

Hasic 사용 VB.NET's XML 리터럴의 문자열과 같은 대부분의 다른 볼 엔진이 있습니다.

장점:

  • 컴파일 확인하는 시간의 유효한 XML
  • 구문을 색칠
  • 전체 intellisense
  • 컴파일 뷰
  • 확장성을 사용하여 정기적인 CLR classes,functions,etc.
  • 이음새가 없 composability 및 조작기 때문에 일반 VB.NET 코드
  • 단위 테스트

단점:

  • 성능:빌드의 전체 DOM 보내기 전에 그것을 클라이언트입니다.

예제:

Protected Overrides Function Body() As XElement
    Return _
    <body>
        <h1>Hello, World</h1>
    </body>
End Function

NDjango

디자인 목표:

NDjango 실행 Django 템플릿 언어 습니다.NET 플랫폼을 사용하여, F#언어.

장점:


NHaml

디자인 목표:

.NET 의 포트 레일 Haml 보기 엔진입니다.서 Haml 웹사이트:

Haml 은 태그가 사용되는 언어 를 깔끔하게하고 단순히 설명 XHTML 의 모든 웹 문서없이, 인라인 코드의 사용...Haml 피 에 필요한 명시적으로 코딩 XHTML 로 템플릿이기 때문에,그것은 실제로 추상적 설명의 XHTML 와 일부 코드를 생성할 동적 콘텐츠입니다.

장점:

  • 간결한 구조물(예:D.Y.R.)
  • 잘 들여쓰기
  • 명확한 구조
  • C#Intellisense (예 VS2008 없---끝---이력서)

단점:

  • 추상화에서 XHTML 보다는 오히려 활용하여 친숙의 태그
  • 없음에서는 사용 VS2010

예제:

@type=IEnumerable<Product>
- if(model.Any())
  %ul
    - foreach (var p in model)
      %li= p.Name
- else
  %p No products available

NVelocityViewEngine(MvcContrib)

디자인 목표:

기 엔진을 기반으로 NVelocity 는 것입니다.NET 트 의 인기있는 Java 프로젝트 속도.

장점:

  • 쉽게 읽기/쓰기
  • 간결한 코드 보기

단점:

  • 제한된 수의 도우미 사용할 수 있는 방법에서 보기
  • 하지 않는 자동으로 Visual Studio integration(활 컴파일을 확인하는 시간을 보거나 refactoring)

예제:

#foreach ($p in $viewdata.Model)
#beforeall
    <ul>
#each
    <li>$p.Name</li>
#afterall
    </ul>
#nodata 
    <p>No products available</p>
#end

SharpTiles

디자인 목표:

SharpTiles 이 부분의 포트 JSTL 와 결합된 개념 뒤에 타일 framework (으로의 마일을 돌 1)입니다.

장점:

  • 에게 익숙한 개발자는 Java
  • XML 스타일의 코드 블록

단점:

  • ...

예제:

<c:if test="${not fn:empty(Page.Tiles)}">
  <p class="note">
    <fmt:message key="page.tilesSupport"/>
  </p>
</c:if>

Spark 보기 엔진

디자인 목표:

아이디어를 허용하는 html 을 지배하는 흐름 및 코드를 핏 습니다.

장점:

  • 더 읽을 수 있는 템플릿
  • C#Intellisense (예 VS2008 없---끝---이력서)
  • SparkSense plug-in 에 대한 VS2010(와 함께 작동---끝---이력서)
  • 제공하는 강력 바인딩 기능 to get rid of 모든 코드에 당신의 전망을 할 수 있습니다 당신은 쉽게 자신을 발명의 HTML 태그

단점:

  • 없음을 명확하게 분리 템플릿의 논리에서 리터럴 태그(이 완화할 수 있습니다 네임스페이스로 접두사)

예제:

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
    <li each="var p in products">${p.Name}</li>
</ul>
<else>
    <p>No products available</p>
</else>

<Form style="background-color:olive;">
    <Label For="username" />
    <TextBox For="username" />
    <ValidationMessage For="username" Message="Please type a valid username." />
</Form>

모든 메뉴얼 페이지를 볼 엔진 MVC

디자인 목표:

  • 가볍습니다.아무 페이지에는 클래스가 만들어집니다.
  • 빠릅니다.템플릿을 작성하는 출력 스트림 응답.
  • 캐시됩니다.템플릿 캐시되지만,이용 FileSystemWatcher 을 검색 파일을 변경합니다.
  • 동적입니다.템플릿을 생성할 수 있습에서 비행 코드입니다.
  • 유연합니다.템플릿 중첩될 수 있습니다.
  • 에 MVC 원칙이 있습니다.촉진 분리의 UI 와 비즈니스 논리입니다.모든 데이터는 미리 만들어집 시간,그리고 전달합니다.

장점:

  • 익숙하는 모든 메뉴얼 페이지 Java developers

단점:

  • 단순한 템플릿 구문을 방해할 수 있도 출력(예: jQuery 충돌)

날개를 뛰

윙 비트 내부 DSL 을 만들기 위한 XHTML.그것을 기반으로 F#함 ASP.NET MVC 보기 엔진,그러나 또한 사용될 수 있으로 그것의 기능을 만드는 XHTML.

장점:

  • 컴파일 확인하는 시간의 유효한 XML
  • 구문을 색칠
  • 전체 intellisense
  • 컴파일 뷰
  • 확장성을 사용하여 정기적인 CLR classes,functions,etc.
  • 이음새가 없 composability 및 조작기 때문의 일반 F#코드
  • 단위 테스트

단점:

  • 당신은 당신이 정말로 쓸 HTML 하지만 코드를 나타내는 HTML 에 DSL.

XsltViewEngine(MvcContrib)

디자인 목표:

빌망에서 익숙한 XSLT

장점:

  • 널리 유비쿼터스
  • 익숙한 템플릿 언어에 대한 XML 을 개발
  • XML 기반
  • 시간 테스트
  • 구문 및 요소 중첩 오류가 있습에 정적으로 감지되었습니다.

단점:

  • 기능적인어 스타일 어려운 흐름 제어
  • XSLT2.0 은(아마도?) 지원하지 않습니다.(XSLT1.0 가 훨씬 실제적인).

다른 팁

현재 선택은 면도기입니다.그것은 매우 깨끗하고 읽기 쉽고 페이지를 보고 아주 유지하기 쉽습니다.또한 intellisense 지원하는 정말 좋은 것입니다.ALos,과 함께 사용할 때 웹 helpers 그것은 정말 강력한 너무입니다.

제공하는 간단한 예제:

@Model namespace.model
<!Doctype html>
<html>
<head>
<title>Test Razor</title>
</head>
<body>
<ul class="mainList">
@foreach(var x in ViewData.model)
{
<li>@x.PropertyName</li>
}
</ul>
</body>

그리고 거기 당신은 그것이있다.는 매우 깨끗하고 쉽게 읽을 수 있습니다.여,그 간단한 예제만에서도 복잡한 페이지와 폼 그것은 여전히 매우 쉽게 읽고 이해할 수 있습니다.

으로 단점?물론 지금까지(나이)때의 일부를 사용하여 도우미들에 대한 형태가 있는 지원의 부족에 대한 추가 CSS 클래스를 참조하는 것인가?

감사 Nathj07

나는 이것이 당신의 질문에 실제로 답하지는 않지만 다른보기 엔진마다 다른 목적을 가지고 있습니다. 그만큼 스파크 뷰 엔진, 예를 들어, 모든 것을 유창하고 읽을 수 있도록 "태그 수프"의 견해를 제거하는 것을 목표로합니다.

가장 좋은 방법은 일부 구현을 보는 것입니다. 솔루션의 의도에 매력적으로 보이면 시도해보십시오. MVC의 뷰 엔진을 믹싱하고 일치시킬 수 있으므로 특정 엔진을 사용하지 않기로 결정한 경우 문제가되지 않아야합니다.

이것을 확인하십시오 날카로운 . HTML을 생성하기위한 AC# 4.0 내부 DSL 및 ASP.NET MVC보기 엔진입니다.

좋아요 ndjango. 사용하기가 매우 쉽고 매우 유연합니다. 사용자 정의 태그 및 필터로보기 기능을 쉽게 확장 할 수 있습니다. 나는 "F#에 크게 묶인"것이 불이익보다 오히려 이점이라고 생각합니다.

이 목록에는 각보기 엔진의 샘플도 포함되어 있어야한다고 생각합니다. 따라서 사용자는 모든 웹 사이트를 방문하지 않고도 각각의 맛을 얻을 수 있습니다.

사진은 천 단어와 마크 업 샘플이 뷰 엔진 용 스크린 샷과 같다고 말합니다. 스파크 뷰 엔진

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top