4 votes

Comment emballer une bibliothèque Javascript côté client aujourd'hui ?

J'ai rattrapé mon retard sur l'écosystème JS moderne côté client et j'ai lu sur les systèmes de modules tels que CommonJS et AMD (y compris les outils associés - browserify, requirejs, onejs, jam, des douzaines d'autres). Si j'écris une bibliothèque Javascript, comment dois-je l'empaqueter pour qu'elle soit le plus largement accessible (idéalement par des utilisateurs qui ne jurent que par CommonJS, AMD, et surtout ni l'un ni l'autre) ?

Les bibliothèques populaires comme jQuery semblent utiliser la concaténation de fichiers à l'ancienne pour se construire elles-mêmes et détecter dynamiquement si elles doivent écrire dans une exportation ou dans le contexte global. Je fais actuellement la même chose, mais le principal inconvénient est que si (contrairement à jQuery) je dépend de quelques bibliothèques, il est agréable de ne pas avoir à demander aux utilisateurs de pré-inclure manuellement l'ensemble transitif. (Bien que je n'ai actuellement que deux dépendances.) Et bien sûr, la pollution de l'espace de noms global.

Ou peut-être est-il plus propre de générer plusieurs versions de ma bibliothèque, pour chaque contexte ?

Cela concerne également l'emballage et l'édition. Il existe plusieurs systèmes, mais je crois que le principal est bower, qui est facile à gérer puisque tout ce qu'il fait est de récupérer. Cependant, si je veux l'empaqueter pour un composant, cela nécessite un module CommonJS.

Y a-t-il d'autres aspects pertinents que je devrais connaître ? Existe-t-il de bons exemples de projets à suivre dans ce domaine ?

3voto

ZenMaster Points 4209

J'ai moi-même réfléchi à cette question et j'en suis arrivé à plusieurs conclusions :

  1. Créer une version du cadre qui puisse être utilisée à la fois dans le cadre global et dans le cadre de la DMA.
  2. Ne soyez pas obsédés par le fait de devoir demander à vos clients d'inclure manuellement les dépendances, il s'agit d'une activité propre à chaque projet et qui doit être réalisée. Quoi qu'il en soit que vous fournissiez un framework AMD ou global (le placement des dépendances tierces devra de toute façon être ajusté, c'est ce que je veux dire).
  3. J'utilise Grunt pour la construction de projets, l'empaquetage, les tests, l'étiquetage, etc., donc pour toutes les autres alternatives d'empaquetage, j'ai des tâches différentes.

En résumé, il faut d'abord construire pour "l'ancienne école/AMD", puis préparer un paquet pour "l'ère nouvelle".

P.S.

Je suis également convaincue que votre processus d'emballage et de livraison/besoin en matière d'emballage et de livraison est un élément essentiel de votre stratégie. ne doit pas (dans la mesure du possible) dicter vos décisions en matière d'architecture et de développement .

J'essaie de construire le code le plus personnalisable, le plus modulaire et le plus utilisable possible, tout en utilisant le paradigme d'emballage de mon choix. alternative l'emballage. Si j'ai réussi la première partie, la seconde est normalement soit directe, soit nécessite très peu de changements dans la base de code (en raison de la modularité et de l'application des principes appropriés lors de la première étape).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X