Je suis en train d'écrire une application web en utilisant TypeScript, Backbone et Mustache. Je veux utiliser Requirejs pour le chargement des dépendances.
J'utilise également le plugin Web Essentials pour Visual Studio pour TypeScript avec l'option de compilation AMD activée. Pour ceux qui ne sont pas familiers avec cela, il enveloppera votre fichier TypeScript dans un module AMD si vous importez des modules externes. Par exemple:
En TypeScript j'importe les modules suivants dans des fichiers de définition de type.
export import Backbone = module("Backbone");
import mainTemplate = module("MainTemplate");
La sortie ressemble à quelque chose comme :
define(["require", "exports", "Backbone", "MainTemplate"], function(require, exports, __Backbone__, __mainTemplate__) {
//...le code va ici ...
});
Pour le modèle, j'ai déclaré ce qui suit dans un fichier de définition de type :
déclarer le module "MainTemplate" { }
Pour prendre en charge les plugins requirejs, vous devez déclarer votre module comme :
déclarer le module "text!MainTemplate.html" { }
J'aimerais garder le nom du module libre de plugins et d'extensions de fichiers. Cela me laisserait une certaine flexibilité à l'avenir.
J'ai le mappage suivant dans require.
require.config({
map: {
"MyModule": {
"MainTemplate": "text!MainTemplate.html"
}
}
}
Cela invoque avec succès le plugin text cependant, le plugin charge le mauvais URL. En parcourant le code source du plugin text, j'ai trouvé que le code suivant est le coupable.
load: function (name, req, onLoad, config) {
...
url = req.toUrl(nonStripName),
//retourne "scripts/**text!**MainTemplate.html**.html**"
...
}
Si je nomme le module, 'MainTemplate.html' cela fonctionne bien mais j'aimerais garder l'extension hors du nom du module.
J'ai modifié le plugin text avec un simple remplacement regex pour supprimer la référence au plugin et l'extension en double.
Y a-t-il une meilleure façon de gérer cela?