Compilation des conduits de guidon dans le code C # natif pour le rendu HTML serveur et sécurisé.
Ce compilateur est le résultat de la thèse de baccalauréat de Jakob Demler qui couvre l'approche, les décisions de conception, les détails de mise en œuvre et son évaluation et peut être trouvé ici
Ce projet est actuellement en phase bêta.
Une comparaison de performances a été faite avec les microbencharks du référentiel de guidon.
| Microbennchmark | Huissiers.js | Compilé | Accélération |
|---|---|---|---|
| arrayeach | 391 OPS / MS | 3039 OPS / MS | 7.77 |
| complexe | 120 OPS / MS | 1180 OPS / MS | 9.83 |
| données | 295 OPS / MS | 1333 OPS / MS | 4.51 |
| profondeur1 | 228 OPS / MS | 3693 OPS / MS | 16.20 |
| profondeur2 | 63 OPS / MS | 1515 OPS / MS | 24.04 |
| rémunération partielle | 125 OPS / MS | 1895 OPS / MS | 15.16 |
| partiel | 211 OPS / MS | 905 OPS / MS | 4.29 |
| chemins | 2060 OPS / MS | 4646 OPS / MS | 2.25 |
| chaîne | 5563 OPS / MS | 13964 OPS / MS | 2.51 |
| variables | 1991 OPS / MS | 4027 OPS / MS | 2.02 |
Installez simplement le package VSIX à partir du projet CustomTool et redémarrez Visual Studio. Ajoutez un nouveau modèle de guidon à votre solution (se terminant sur .hbs), puis ajoutez "Handlebarscompiler" à la propriété CustomTool du fichier. Le compilateur sera invoqué chaque fois que le modèle de guidon est enregistré et créera un fichier {templatename} .hbs.cs contenant le code généré.
Chaque modèle de guidon a besoin d'un type qu'il rend. À titre d'exemple, une classe nommée "PersonModel" servira:
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 ; }
}
}Maintenant, nous devons communiquer le type au guidon. Au début de chaque modèle de guidon, il doit y avoir un modèle Socalled:
Pour notre exemple, ce serait:
Remarque que le type à l'intérieur du ModelToken peut également être une classe de base ou une interface du ViewModel réel qui est transmis au modèle.
Le reste des termes de guidon suit la syntaxe et la sémantique standard du guidon. Voici l'exemple complet:
Les partiels n'ont pas besoin d'être enregistrés. Assurez-vous simplement de compiler le partiel avant le modèle de guidon qui utilise ce partiel. Pour tout le reste, la logique des guidon standard s'applique.
CompiledHandleBars permettez l'utilisation des fonctions d'assistance. Ceux-ci doivent être statiques, renvoyer une chaîne et être annotée par un attribut. Les paramètres sont vérifiés s'ils correspondent au temps de compilation, donc la surcharge est possible. En dehors de cela, ils n'ont aucune restriction et peut être placé n'importe où dans votre base de code.
[ CompiledHandlebarsHelperMethod ]
pulic static string FullName ( PersonModel model )
{
return string . Concat ( model . FirstName , " " , model . LastName ) ;
} CompiledHandleBars offre des fonctionnalités différentes concernant les dispositions: tout plateau HandLabaRtem peut être rendu à l'intérieur d'un guidon. Moix-bassals diffèrent des plaques de guidon normales en raison d'un jeton {{corps}} spécial:
Pour rendre un modèle de guidon dans cette mise en page, utilisez le jeton {{Layout}} juste après le jeton {{modèle}}:
Le résultat de ce modèle est égal au modèle suivant:
En raison de l'approche différente de la version de guidon. Ces informations sont communiquées au compilateur par un modèle spécial. Sa syntaxe est simple:
Par exemple:
Ce jeton doit être au début de chaque modèle de guidon.
Les conditions préalables suivantes sont nécessaires pour pouvoir construire la solution: