Je travaille sur une bibliothèque JavaScript pour Traitement JSON / XML . Ma bibliothèque fonctionne dans le navigateur ainsi que le nœud.js (avec L'un des utilisateurs a récemment demandé le support requis. J'ai examiné la chose requisjs / amd et pense que c'est une bonne approche, je voudrais donc fournir cela. P> Cependant, j'aimerais conserver la portabilité: ma bibliothèque doit travailler dans des navigateurs (avec et sans exigence) ainsi que nœud.js. Et dans l'environnement du navigateur, je ne dépends pas de Un peu d'histoire et ma solution actuelle P> J'ai initialement écrit ma bibliothèque pour les navigateurs. Donc, cela vient de créer un objet global de portée et de tout mettre à l'intérieur: p> plus tard sur les utilisateurs ont demandé à Node.js support. J'ai donc ajouté: p> J'ai également dû importer peu de modules mentionnés ci-dessus. Je l'ai fait conditionnellement, selon que la fonction Il y a cette histoire avec ExigenceJS. Si requisjs est présent, la fonction xmldom code> et
xmlhttprequest code> modules).
xmldom code> ou
xmlhttprequest code> car ces éléments sont fournis par le navigateur lui-même. P>
nécessite code> soit disponible ou non: p>
nécessite code> est également présente. Mais le chargement du module fonctionne différemment, je dois utiliser la fonction
définir code>, etc. Je ne peux pas non plus que
exiger code> des choses depuis
exiger code> a une API ASYNC en exigejs. De plus, si ma bibliothèque est chargée via ExigenceJS, il semble traiter le code source et détecter le code
nécessite ("quelque chose") code> même si je le fais conditionnellement p>
if (typeof _jsonix_xmlhttprequest !== 'undefined')
{
var XMLHttpRequest = _jsonix_xmlhttprequest.XMLHttpRequest;
return new XMLHttpRequest();
}
3 Réponses :
C'est ce que j'ai fini avec:
Voici un modèle que j'utilise actuellement, il est à la fois compatible AMD et nœud, bien que pas directement chargable autonome dans le navigateur ...
L'avantage principal de cette approche est que le code spécifique au domaine ne Besoin de se soucier de ce que l'importait, pour l'affaire Général. P>
/********************************************************************** * * * **********************************************************************/ ((typeof define)[0]=='u'?function(f){module.exports=f(require)}:define)( function(require){ var module={} // makes module AMD/node compatible... /*********************************************************************/ /*********************************************************************/ /********************************************************************** * vim:set ts=4 sw=4 : */ return module })
Cela peut être utile: github.com/umdjs/umd