Question

Quelle est la meilleure façon de partager du code entre frontend et backend à l'aide de javascript, spécifiquement dire entre nodejs et angularjs?

C'est que nous sommes en utilisant la même enums et constant values comme error codes dans les deux backend et frontend.Droit maintenant, il suffit de copier et coller chaque changement à la fois de plate-forme qui n'est pas une bonne solution.Il y a aussi certains services qui pourraient être partagées.

J'ai vu des librairies telles que browserify;mais ce n'est pas exactement ce que je recherche.Je suis à la recherche d'une solution similaire à maven dependency dans java.Dans java, les bibliothèques peuvent être partagées facilement à l'aide de maven, tandis que moi , je ne peux pas trouver de semblable façon de faire que dans javascript.Est-il un moyen d'isoler ces services et de leur donner comme la dépendance à l' nodejs à l'aide de npm et pour angularjs à l'aide de bower indépendamment?Ou quels sont les moyens pour le partage le même code entre frontend et backend?

Était-ce utile?

La solution

Il y a plusieurs façons de le faire.La première est que vous pouvez faire un nouveau paquet qui est requis par bower pour le front-end de code et via npm pour le backend de code.J'ai plusieurs packages publiés pour les deux systèmes.

Installer avec Bower -- informations sur la façon d'installer des modules qui ne sont pas dans le registre

NPM Install docs -- toutes les façons d'installer avec npm (privé github avec auth: git+ssh://git@github.com/[org]/[repo])

Il suffit de créer un nouveau module avec vos données partagées et l'installer en utilisant à la fois les gestionnaires de paquets.Deux d'entre eux vous permettent d'installer un inédit module, donc si il est privé de données, vous pouvez le conserver en tant que tel.

Si votre frontal exige require.js vous pouvez utiliser quelque chose comme amdefine pour le rendre disponible à votre nœud backend, ou si vous êtes juste en utilisant l'héritage de la fenêtre de code que vous pouvez faire quelque chose comme:

var mydata = {};

if(typeof window !== 'undefined'){
    window.mydata = mydata;
} else {
     module.exports = mydata;
}

Si vous partagez un grand nombre de données bien que je recommande fortement la recherche en browserify d'écrire l'ensemble de votre base de code dans commonjs et à l'aide de browserify pour générer votre lot de client.Il y a un liste de blanchisserie de ressources sur l'utilisation de browserify, y compris des trucs sur la façon de utilisation browserify et angulaire de l'ensemble

Autres conseils

Avertissement - je suis encore en train de développer cette approche et c'est un peu manuel.Je l'ai fait à l'aide de la ngp, d'un mécanisme de prévention de la cli appelé pac, et de verdure.Pac laissez-moi d'éviter à l'aide de npm install dans la production en gardant les modules .tgz fichiers (commis de projet en contrôle de code source).Avec le pac, quand quelqu'un vérifie le nœud de projet, ils courent pac install alors npm rebuild au lieu de npm install.

Mon code est conservé dans un répertoire (mon-module).Elle a un paquet.json et bower.json.

Mon consommer nœud application dispose d'un forfait.json de la dépendance:"mon-module" :"x.y.z"

Mon consommer client a une charmille.json de la dépendance:"mon-module" :"../relative/chemin/vers/mon-module"

Quand je fais des mises à jour de mon module, je l'ai mise à jour mon nœud de l'application:

  1. Faire un tar.gz le contenu de mon module:tar -czvf my-module.tar.gz -C my-module
  2. Retrait de l'ancienne version à partir du nœud de l'application node_modules
  3. La reprise de npm install path/to/my-module-tar.gz
  4. La reprise de pac (ce qui fait un .tgz de node_modules/mon-module)
  5. Commettre la mise à jour du pac .modules/mes-module.tgz

- Je mettre à jour mon client par:

  1. Le retrait de l'ancien client/bower_components/mon-module
  2. La reprise de bower install ou bower update
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top