Pergunta

Qual é a melhor maneira de compartilhamento de código entre o frontend e back-end usando javascript, especificamente dizendo entre nodejs e angularjs?

Coisa é que estamos usando o mesmo enums e constant values como error codes em ambos os backend e frontend.Agora nós simplesmente copiar e colar cada alteração tanto da plataforma, o que não é uma boa solução.Existem também alguns serviços que podem ser compartilhados.

Eu tenho visto bibliotecas, tais como browserify;mas isso não é exatamente o que eu estou procurando.Eu estou procurando uma solução semelhante para maven dependency no java.No java, as bibliotecas podem ser facilmente compartilhados usando maven, enquanto eu não encontrar um semelhante modo de fazer no javascript.Existe uma maneira de isolar esses serviços e dar-lhes como dependência para nodejs usando npm e angularjs usando bower de forma independente?Ou quais são as maneiras para compartilhar o mesmo código entre o frontend e back-end?

Foi útil?

Solução

Há várias maneiras para fazer isso.A primeira é que você pode fazer um novo pacote que é necessário através de bower para o front-end do código e via npm para o painel de código.Eu tenho vários pacotes publicado para ambos os sistemas.

Instalar com Bower -- informações sobre como instalar os módulos que não estão no registro

NPM Install docs -- todas as maneiras de instalar com o ngp (privada github com auth: git+ssh://git@github.com/[org]/[repo])

Basta criar um novo módulo com seus dados compartilhada e instale-a usando ambos os gerenciadores de pacotes.Ambos permitem que você instale um inédito módulo de então, se é privada de dados você pode mantê-lo como tal.

Se o seu front-end requer require.js você pode usar algo como amdefine para torná-lo disponível para o seu nó de back-end, ou se você está apenas usando o legado da janela de código, você pode fazer algo como:

var mydata = {};

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

Se você estiver compartilhando um monte de dados que eu recomendo a olhar para browserify para escrever todo o seu código base no commonjs e usando browserify para gerar o pacote de cliente.Há um lista de lavandaria de recursos sobre o uso de browserify, incluindo coisas como use browserify e angular juntos

Outras dicas

Disclaimer - eu ainda estou desenvolvendo esta abordagem e um pouco de manual.Eu fiz isso usando a ngp, uma npm cli chamado pac, e bower.Pac vamos me evitar o uso de npm install na produção, mantendo os módulos .os arquivos tgz (confirmadas para o projeto de controle de origem).Com o pac, quando alguém dá o nó de projecto, de execução pac install em seguida, npm rebuild em vez de npm install.

Meu código compartilhado é mantido em um diretório (meu-módulo).Tem pacote.json e um pavilhão.json.

Meu consumir nó app tem um pacote.json dependência para:"o meu módulo" :"x.y.z"

Meu consumir cliente tem um pavilhão.json dependência para:"o meu módulo" :"../parente/path/to/my-módulo"

Quando eu fizer as atualizações para o meu módulo, eu atualizar o meu nó de aplicativo:

  1. Fazendo um tar.gz o conteúdo do meu-módulo:tar -czvf my-module.tar.gz -C my-module
  2. Remover a versão antiga do nó de aplicativo node_modules
  3. Novamente npm install path/to/my-module-tar.gz
  4. Novamente o pac (isso faz com que um .tgz de node_modules/meu-módulo)
  5. Cometer atualizado pac .módulos/meu-módulo.tgz

Eu atualizar o meu cliente por:

  1. Remover o antigo cliente/bower_components/meu-módulo
  2. Novamente bower install ou bower update
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top