RequireJS plusieurs module dans un seul fichier
Je veux fusionner plusieurs modules dans un seul fichier, mais je ne peux pas trouver un document officiel sur la façon de le faire. Maintenant, je suis en utilisant la méthode ci-dessous, il fonctionne, mais je m'interroge sur les points suivants:
- Est-il techniquement correct?
- Comment RequireJS vérifier si un module est chargé ou pas? En utilisant le module nom ou le nom de fichier?
- Cette solution init modules à plusieurs reprises, dans certaines situations?
index.html
<script src="require.js"></script>
<script>
requirejs.config({
paths: {
'a': 'test',
'b': 'test'
}
});
require(['a', 'b'], function () {
console.log('a & b loaded');
});
</script>
test.js
console.log('loading test.js');
//I have some init here, like "Avoid `console` errors in IE"
define('a', function () {
console.log('a module');
});
define('b', function () {
console.log('b module');
});
OriginalL'auteur Steely Wing | 2013-08-19
Vous devez vous connecter pour publier un commentaire.
C'est vieux mais je viens de tombé sur elle.
Bien sûr, vous pouvez avoir plusieurs définir dans le même fichier, et oui, c'est logique.
La seule chose que vous devez faire est d'utiliser nommé définit.
Pense que parfois, vous n'avez pas besoin de ressources pour être chargé dynamiquement, de les avoir chargé tous, au début peut-être nécessaire, co création d'un seul concaténées/minifiés fichier js à l'emballage du temps est la meilleure solution.
De sorte que vous ne prenez pas avantage de la "lazy loading" mais vous avez encore de la conception de votre application de façon modulaire en utilisant RequireJS.
OriginalL'auteur AlexCode
Shangan est droit. Dans http://requirejs.org/docs/api.html#define il y a une partie qui dit:
Il ne devrait être qu'un module de définition par fichier sur le disque.
Mais si vous voulez le faire de toute façon j'ai trouvé quelque chose comme ça: C'est à partir de la documentation officielle:
http://requirejs.org/docs/api.html#config-bundles
Il est dit que vous pouvez définir dans le fichier, vous pouvez trouver les modules par
bundles
de la propriété. Par exemple: j'ai un fichier appelémodules.js avec un tel contenu:
Ensuite dans mon main.js fichier je fais quelque chose comme ceci:
Et ça fonctionne comme je veux.
require(['bundle1']);
?Tu veux dire quelque chose comme:
require(['modules'])
? Ça ne marchera pas, parce que modules est un nom de fichier, et['module_one']
est un nom de module dans ce fichier. C'est la façon dont je le comprends, mais j'ai peut-être tort.OriginalL'auteur Prusdrum
est-ce exact ?
PAS. Il ne devrait être qu'un module de définition par fichier sur le disque.
comment RequireJS vérifier un module chargé ou pas ? en utilisant le nom du module ou de nom de fichier ?
Utilisant le nom de fichier.
sera que init plusieurs fois dans certaines situation ?
Les modules peuvent être regroupés en optimisée grappes par l'outil d'optimisation.
http://requirejs.org/docs/optimization.html
Exemple de Bonjour tout le Monde module est donné ici.
http://mydons.com/requirejs-hello-world/
Avoir un seul module def par fichier est recommandé, mais cela ne fait pas d'avoir 2 ou plus toujours tort. Le "NON" à cette réponse semble trop contraignant pour moi. Je pense que AlexCode est sur l'argent. Comme la plupart des choses, la clé est de comprendre pourquoi le 1 par module est conseillé - je crois que c'est pour permettre une utilisation efficace de la r.js, l'optimiseur. Nous avons de bonnes raisons pour ne pas utiliser r.js comme nous l'avons notre propre stratégie d'optimisation. Le chargement de plusieurs modules par fichier (dans notre cas, construit une de la mouche à côté serveur, puis livrés à partir d'une requête Ajax) est une partie de notre coutume d'optimisation. Son "acheteur averti".
Ouais, bien sûr, je vais avoir comme des millions de fichiers contenant chacun 10lines de la dérivée du module. J'ai pensé RequireJS promis efficacité...
OriginalL'auteur shangan