수행자 및 유형-안전 서버 사이드 HTML 렌더링을위한 핸들 바 테마를 기본 C# 코드로 컴파일합니다.
이 컴파일러는 접근, 설계 결정, 구현 세부 정보 및 평가를 다루는 Jakob Demler의 학사 논문의 결과이며 여기에서 찾을 수 있습니다.
이 프로젝트는 현재 베타 단계에 있습니다.
handlebars.js 리포지토리에서 MicroBenchmarks에 대한 성능 비교 : https://github.com/wycats/handlebars.js/tree/master/bench
| 마이크로 벤치 마크 | handlebars.js | 컴파일 핸들 바 | 속도를 높이십시오 |
|---|---|---|---|
| 배열 | 391 OPS/MS | 3039 OPS/MS | 7.77 |
| 복잡한 | 120 OPS/MS | 1180 OPS/MS | 9.83 |
| 데이터 | 295 OPS/MS | 1333 OPS/MS | 4.51 |
| 깊이 1 | 228 OPS/MS | 3693 OPS/MS | 16.20 |
| 깊이 2 | 63 OPS/MS | 1515 OPS/MS | 24.04 |
| 부분 수용 | 125 OPS/MS | 1895 OPS/MS | 15.16 |
| 부분적 | 211 OPS/MS | 905 OPS/MS | 4.29 |
| 경로 | 2060 OPS/MS | 4646 OPS/MS | 2.25 |
| 끈 | 5563 OPS/MS | 13964 OPS/MS | 2.51 |
| 변수 | 1991 OPS/MS | 4027 OPS/MS | 2.02 |
CustomTool 프로젝트에서 VSIX 패키지를 설치하고 Visual Studio를 다시 시작하십시오. 솔루션에 새 핸들 바 템플릿을 추가 한 다음 파일의 CustomTool 속성에 "HandleBarsCompiler"를 추가하십시오. 핸들 바 템플릿이 저장 될 때마다 컴파일러가 호출되며 생성 된 코드가 포함 된 {templateName} .hbs.cs 파일을 생성합니다.
모든 핸들 바 테마 플레이트에는 렌더링되는 유형이 필요합니다. 예를 들어 "PersonModel"이라는 클래스가 다음을 수행합니다.
namespace ViewModels
{
public class PersonModel
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public int Age { get ; set ; }
public List < string > EMailAddresses { get ; set ; }
}
}이제 유형을 핸들 바르 콤프 필러에 통신해야합니다. 각 핸들 바 템플릿의 시작 부분에는 사회적 Modeltoken이 필요합니다.
이 예를 위해서는 다음과 같습니다.
Modeltoken 내부의 유형은 템플릿으로 전달되는 실제 뷰 모델의 기본 클래스 또는 인터페이스 일 수 있습니다.
나머지 핸들 바 테마 플레이트는 표준 핸들 바 구문 및 시맨틱을 따릅니다. 전체 예는 다음과 같습니다.
부분을 등록 할 필요가 없습니다. 해당 부분을 사용하는 핸들 바 테마 플레이트 앞 부분을 컴파일하십시오. 다른 모든 것에 대해 표준 핸들 바 등 Logic이 적용됩니다.
CompiledHandleBar는 헬퍼 기능을 사용합니다. 이들은 정적이어야하고 문자열을 반환하고 속성으로 주석을 달아야합니다. 컴파일 타임에 일치하는 경우 매개 변수가 확인되므로 과부하가 가능합니다. 그 외에는 코드베이스의 어느 곳에도 배치 할 수있는 제한이 없습니다.
[ CompiledHandlebarsHelperMethod ]
pulic static string FullName ( PersonModel model )
{
return string . Concat ( model . FirstName , " " , model . LastName ) ;
} CompiledHandleBars는 레이아웃과 관련하여 다양한 기능을 제공합니다. 모든 핸들 라바 스템 플레이트는 핸들 바 슬레이에서 렌더링 할 수 있습니다. handlebarslayouts는 특수 {{body}} 토큰으로 인해 일반 핸들 바 스템 플레이트와 다릅니다.
해당 레이아웃에서 핸들 바 테마 플레이트를 렌더링하려면 {{model}} 토큰 바로 다음에 {{layout}} 토큰을 사용하십시오.
해당 템플릿의 결과는 다음 템플릿과 같습니다.
handlebars.js 버전에 대한 접근 방식 (예 : 정적으로 입력 된 핸들 바 테마)에 대한 접근 방식으로 인해 컴파일러는 핸들 바 테마 플레이트가 어떤 유형을 의미하는지 알아야합니다. 이 정보는 특별한 modeltoken에 의해 컴파일러에 전달됩니다. 구문은 간단합니다.
예를 들어:
이 토큰은 모든 핸들 바 스템 플레이트의 시작 부분에 있어야합니다.
솔루션을 구축하려면 다음과 같은 전제 조건이 필요합니다.