2013-11-27 9 views
6

Chcę oddzielić moją aplikację na części, aby mieć coś takiego jak MVC ... Obecnie zorientowałem się, że działa exports i jak komunikować się między różnymi plikami. Jedyne, czego nie rozumiem, to to, jak używać stałych w globalnym zasięgu? Obecnie mam coś takiego:Jak zdefiniować const w nodejs w zakresie globalnym?

// start.js 

const ROOT_DIR = __dirname; 
const APP_DIR = ROOT_DIR + '/app/'; 
const MODULES_DIR = '/usr/local/lib/node_modules/'; 
const APP_PORT = 4935; 

var server = require(APP_DIR + 'server.js'); 

server.start(); 

// server.js 

exports.start = function() { 
    var express = require(MODULES_DIR + 'express'), 
     app = express(), 
     http = require('http'), 
     server = http.createServer(app), 
     io = require(MODULES_DIR + 'socket.io').listen(server), 
     fs = require('fs'), 
     path = require('path'); 

    server.listen(APP_PORT); 

    app.use(express.static(ROOT_DIR + '/assets')); 

    app.get('/', function (req, res) { 
     res.sendfile(ROOT_DIR + '/views/index.html'); 
    }); 
} 

to możliwe, aby automatycznie przypisać ten stałe do server.js lub muszę przekazać je jako zmienne?

Odpowiedz

0

Stałe JavaScript nie będą działać globalnie w plikach w pliku Node.js. Musisz przekazać je do funkcji.

+0

ale id raczej argument zamiast funkcji ... Co więcej mogę nurkować w nodejs, bardziej zaczynam w przeciwieństwie do niego ... – Kin

+0

Eksportuj zmienną oznacza wyeksportować singleton, więc możesz wymagać modułu, zmienić niektóre wartości, a gdy będzie to wymagało ponownie, otrzymasz ten sam obiekt. To tylko wzorzec projektowy, a nie wada pliku node.js lub nawet dowolny język programowania. –

14

Myślę, że potrzebujesz utworzyć plik ze stałymi i użyć go jako pliku wymagającego w rozpoczęciu innego modułu.

consts.js pliku

exports.CONST_1 = 42, 
exports.CONST_2 = 123; 

W module miarę potrzeby:

var consts = require('path_to_consts.js'); 
var my_var = consts.CONST_1 + consts.CONST_2; 

Więc wszystkie zmienne globalne będą w jednym miejscu

+0

Tak, ale musisz zrozumieć, że nie są to zmienne globalne. Wzór Singleton jest być może lepszym sposobem na opisanie tego. –

1

Object.defineProperty(global, 'MY_CONST', { value : 123 })

PS: Nie rób tego

+1

"P.S." część jest niesamowita: D – olyv

0

Ta metoda jest taka sama, jak sugeruje użytkownik @ user3040347, ale niewiele się różni.

Tutaj musisz utworzyć plik ze stałymi i użyć go jako pliku wymagającego na początku modułu, w którym chcesz go użyć.

consts.js pliku

CONST_1 = 42, 
CONST_2 = 123; 
module.exports = {}; 

W module miarę potrzeby:

var consts = require('path_to_consts.js'); 
var my_var = CONST_1 + CONST_2; 
//Here you can access directly 
Powiązane problemy