É fácil / possível include('./path/to/file')
executar um tipo simples de comando no node.js?
Tudo o que eu quero fazer é ter acesso a variáveis locais e executar um script. Como as pessoas geralmente organizam projetos node.js. maiores que um simples mundo olá? (Um site dinâmico totalmente funcional)
Por exemplo, eu gostaria de ter diretórios como:
/models
/views
... etc
javascript
node.js
Travis
fonte
fonte
downloadedModules
no mesmo diretório que o script.Respostas:
Basta fazer um
require('./yourfile.js');
Declare todas as variáveis que você deseja acesso externo como variáveis globais. Então, ao invés de
var a = "hello"
seráGLOBAL.a="hello"
ou apenasa = "hello"
Isso é obviamente ruim. Você não quer poluir o escopo global. Em vez disso, o método sugerido é para
export
suas funções / variáveis.Se você deseja o padrão MVC, dê uma olhada no Geddy.
fonte
require
olhares em seus módulos NPM se você não prefixar o seu caminho com algo como./
Você precisa entender o CommonJS, que é um padrão para definir módulos. Você não deve abusar do escopo GLOBAL, que é sempre uma coisa ruim a se fazer; em vez disso, você pode usar o token 'export', assim:
E o código do cliente que usará nosso módulo:
Este código foi extraído da API de documentação do node.js.
http://nodejs.org/docs/v0.3.2/api/modules.html
Além disso, se você quiser usar algo como Rails ou Sinatra, eu recomendo o Express (não consegui postar a URL, que vergonha no Stack Overflow!)
fonte
Se você estiver escrevendo código para o Node, usar os módulos do Node, conforme descrito por Ivan, é sem dúvida o caminho a percorrer.
No entanto, se você precisar carregar o JavaScript que já foi gravado e não está ciente do nó, o
vm
módulo é o caminho a seguir (e definitivamente preferíveleval
).Por exemplo, aqui está o meu
execfile
módulo, que avalia o scriptpath
em umcontext
ou no contexto global:Observe também: os módulos carregados com
require(…)
não têm acesso ao contexto global.fonte
require.cache
, portanto, um único arquivo pode ser carregado várias vezes.require
como o normal:function loadService(name) { return require('./services/' + name); }
em seguida, listar os serviços no entanto faz sentido para a aplicação.Se você planeja carregar funções ou objetos de um arquivo javascript externo, carregue neste contexto usando o seguinte código - observe o método runInThisContext:
fonte
Expandindo @Shripad 's e @Ivan resposta' s, eu recomendo que você use o padrão de Node.js module.export funcionalidade.
No seu arquivo para constantes ( por exemplo
constants.js
), você escreveria constantes assim:Em seguida, no arquivo em que você deseja usar essas constantes, escreva o seguinte código:
Se você nunca viu a
const { ... }
sintaxe antes: é uma tarefa de desestruturação .fonte
Desculpe pela ressurreição. Você poderia usar o módulo child_process para executar arquivos js externos no node.js
fonte