Mengkompilasi Templat Templat ke dalam Kode C# asli untuk rendering HTML server-aman dan tipe-aman.
Kompiler ini adalah hasil dari tesis Sarjana Jakob Demler yang mencakup pendekatan, keputusan desain, detail implementasi dan evaluasinya dan dapat ditemukan di sini
Proyek ini saat ini dalam fase beta.
Perbandingan kinerja dibuat terhadap microbenchmark dari repositori stang -stang: https://github.com/wycats/handlebars.js/tree/master/benching
| Microbenchmark | stang | CompiledHandebars | Percepatan |
|---|---|---|---|
| Arrayeach | 391 OPS/MS | 3039 OPS/MS | 7.77 |
| kompleks | 120 OPS/MS | 1180 OPS/MS | 9.83 |
| data | 295 OPS/MS | 1333 OPS/MS | 4.51 |
| kedalaman1 | 228 OPS/MS | 3693 OPS/MS | 16.20 |
| kedalaman2 | 63 OPS/MS | 1515 OPS/MS | 24.04 |
| Recursion parsial | 125 OPS/MS | 1895 OPS/MS | 15.16 |
| sebagian | 211 OPS/MS | 905 OPS/MS | 4.29 |
| jalan setapak | 2060 OPS/MS | 4646 OPS/MS | 2.25 |
| rangkaian | 5563 OPS/MS | 13964 OPS/MS | 2.51 |
| variabel | 1991 OPS/MS | 4027 OPS/MS | 2.02 |
Cukup instal paket VSIX dari Proyek CustomTool dan restart Visual Studio. Tambahkan template setang baru ke solusi Anda (berakhir di .hbs) dan kemudian tambahkan "compiler setang" ke properti customTool file. Kompiler akan dipanggil setiap kali templat stang disimpan dan akan membuat file {templateName} .hbs.cs yang berisi kode yang dihasilkan.
Setiap hantu-templat membutuhkan jenis yang diterjemahkannya. Sebagai contoh kelas bernama "Personmodel" akan melayani:
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 ; }
}
}Sekarang, kita harus mengkomunikasikan jenisnya ke kompiler setang. Di awal setiap templat setang perlu ada modeltoken yang disebut:
Untuk contoh kami itu adalah:
Perhatikan, bahwa jenis di dalam Modeltoken juga dapat berupa kelas dasar atau antarmuka viewmodel aktual yang diteruskan ke templat.
Sisa dari templat setang mengikuti sintaks dan semantik setang standar. Inilah contoh lengkapnya:
Sebagian tidak perlu terdaftar. Pastikan untuk mengkompilasi parsial sebelum template setang yang menggunakan parsial itu. Untuk semua yang lain logika Standars.js berlaku.
Compiledhandlebars memungkinkan penggunaan fungsi pembantu. Ini harus statis, mengembalikan string dan dijelaskan dengan atribut. Parameter diperiksa jika cocok pada waktu kompilasi sehingga kelebihan beban dimungkinkan. Selain itu, mereka tidak memiliki batasan dan dapat ditempatkan di mana saja di basis kode Anda.
[ CompiledHandlebarsHelperMethod ]
pulic static string FullName ( PersonModel model )
{
return string . Concat ( model . FirstName , " " , model . LastName ) ;
} CompiledHandebars menawarkan fungsionalitas yang berbeda mengenai tata letak: Handlabarstemplate apa pun dapat diterjemahkan di dalam handlebarslayout. Jalan Tangan Berbeda dari Tangan Tangan Normal Karena Token {{{Body}} khusus:
Untuk membuat templat setang dalam tata letak itu, gunakan token {{tata letak}} tepat setelah token {{{{model}}:
Hasil dari template itu sama dengan template berikut:
Karena pendekatan yang berbeda untuk versi stang-stang. Informasi ini dikomunikasikan kepada kompiler oleh Modeltoken khusus. Sintaksnya langsung:
Misalnya:
Token ini harus berada di awal setiap templat setang.
Prasyarat berikut diperlukan agar dapat membangun solusi: