define
n'est pas spécifique à RequireJS, il fait partie de la spécification AMD. Burke notera que RequireJS n'implémente pas exactement comme AMD le spécifie, car AMD n'a pas vraiment pris en compte les navigateurs.
define
n'a pas de fonction anonyme en elle. define
est une méthode mise à disposition des fichiers JavaScript basés sur AMD pour charger leurs données. Des bibliothèques comme RequireJS mettent cela à votre disposition. La mise en œuvre spécifique n'est probablement pas précieuse pour vous. Alors je vais passer en revue celle que vous avez fournie car c'est la façon la plus courante de déclarer un module.
define(
[array]
, object
);
Array est une liste de modules sur lesquels ce module dépend. Il y a une relation 1 à 1 entre les modules et les fichiers. Vous ne pouvez pas avoir plusieurs modules dans un fichier ni plusieurs fichiers pour un module.
Object est le module que vous définissez. Cela peut être n'importe quoi, une structure ou une fonction renvoyant une structure. Lisez la documentation sur RequireJS pour plus de détails.
Si object est une fonction, les arguments passés à la fonction sont les modules listés comme dépendances dans le premier argument de définition. Il est également important de noter que lorsque vous passez une fonction comme object
, elle ne s'exécutera qu'une seule fois. Les méthodes ou propriétés créées lors de cette unique instantiation peuvent être accédées à tout moment et donc être accédées par d'autres modules qui répertorient ce module comme une dépendance.
Bonne chance, je vous recommande d'expérimenter avec cela et de lire la documentation lorsque les choses ne semblent pas claires. Les docs RequireJS sont très utiles pour comprendre rapidement comment fonctionnent les modules AMD.