javascript - tutorial - nodejs app




variáveis globais node.js? (4)

As outras soluções que usam a palavra-chave GLOBAL são um pesadelo para manter / legibilidade (+ poluição de namespace e bugs) quando o projeto se torna maior. Eu vi esse erro muitas vezes e tive o incômodo de corrigi-lo.

Use um arquivo JS e use as exportações do módulo.

Exemplo:

globals.js

var Globals = {
    'domain':'www.MrGlobal.com';
}

module.exports = Globals;

Então, se você quiser usá-los, use require.

var globals = require('globals'); //<< globals.js path
globals.domain //<< Domain.

Eu perguntei aqui: node.js requer herança?

e foi dito que eu posso definir variáveis ​​para o escopo global, deixando de fora o var.

Isso não funciona para mim.

ie:

_ = require('underscore');

Não disponibiliza o _ nos arquivos requeridos. Eu posso definir com app.set do app.set e tê-lo disponível em outro lugar embora.

Alguém pode confirmar que isso deveria funcionar? Obrigado.


Eu concordo que usar o namespace global / global para definir qualquer coisa global é uma má prática e não usá-la na teoria ( em teoria, sendo a palavra operativa). No entanto (sim, o operativo) eu usá-lo para definir classes de erro personalizadas:

// Some global/config file that gets called in initialisation

global.MyError = [Function of MyError];

Sim, tabu aqui, mas se o seu site / projeto usa erros personalizados em todo o lugar, você basicamente precisa defini-lo em todos os lugares, ou pelo menos em algum lugar para:

  1. Defina a classe Error em primeiro lugar
  2. No script onde você está jogando
  3. No script onde você está pegando

Definir meus erros personalizados no namespace global me poupa o incômodo de exigir minha biblioteca de erros do cliente. Imagem gerando um erro personalizado quando esse erro personalizado é indefinido.

Além disso, se isso está errado, por favor, deixe-me saber como eu só comecei a fazer isso recentemente


Que tal um namespace global como global.MYAPI = {}

global.MYAPI._ = require('underscore')

Editar após o comentário de camilo-martin : Todos os outros cartazes falam sobre o padrão ruim envolvido. Deixando de lado essa discussão, a melhor maneira de ter uma variável definida globalmente (a pergunta do OP) é ​​através dos namespaces.

@tip: http://thanpol.as/javascript/development-using-namespaces


Você pode apenas usar o objeto global.

var X = ['a', 'b', 'c'];
global.x = X;

console.log(x);
//['a', 'b', 'c']






express