web-dev-qa-db-fra.com

En quoi les dossiers de packages UMD et CommonJS (CJS) sont-ils différents et lesquels dois-je utiliser?

J'ai installé reactjs et react-dom comme ceci avec package.json

"dependencies": {
   "bootstrap": "^v4.1.1",
   "popper.js": "^1.14.3",
   "react": "^v16.4.1",
   "react-dom": "^16.4.1"
}

Il a correctement téléchargé le dossier React et le dossier React-Dom.

Les deux dossiers ont le dossier cjs et umd et ils ont beaucoup de fichiers js.

Pour moi, il est impossible de trouver la différence entre les fichiers dans deux dossiers.

Comme ça:

URL: node_modules/react/umd
  react-development.js
  react-production.min.js



URL : node_modules/react/cjs
   react-development.js
   react-production.min.js

presque la même chose avec react-dom. Il a également un dossier cjs et umd et je ne sais pas quel fichier à partir de quel dossier dois-je utiliser pour développer une application ou un site Web React.

16
kust kust

JavaScript était à l'origine réservé aux navigateurs interactifs. Avec Node, il est utilisé dans des contextes non liés à un navigateur. Pour cette raison et d'autres facteurs, il existe des formats incompatibles pour les modules:

  • La spécification " CommonJS " décrit l'utilisation d'un objet exports qui est l'API pour déclarer et découvrir quels noms sont exportés à partir d'un module. Il n'est pas prévu de charger un module CommonJS dans un navigateur interactif. NodeJS est l'implémentation la plus populaire du format CommonJS.

  • Le " définition du module asynchrone " (AMD) décrit comment regrouper les modules JavaScript en supposant qu'ils seront chargés dans un navigateur interactif. RequireJS est l'une des bibliothèques de support de modules les plus populaires, et elle consomme des modules AMD.

  • Parce que AMD et CommonJS sont tous deux très populaires et mutuellement inintelligibles l'un à l'autre, le " niversal Module Definition " (UMD) est un modèle qui tente de créer un module qui peut être consommé par les deux, au prix coûtant d'un format plus compliqué.

  • Plus récemment, ECMAScript 2015 définit la syntaxe export et import (différent de tout ce qui précède) pour prendre en charge les modules.

Que devez-vous utiliser? Vous devrez répondre à cette question en fonction de ce qui, dans votre système de génération, consommera ces modules.

Aujourd'hui, la réponse la plus probable est: utilisez le module UMD . Dans le futur, cela peut être: utiliser des modules ECMAScript; mais nous n'avons pas encore (2019) de consensus sur la façon dont ceux-ci seront distribués.

16
bignose