2016-03-03 3 views
0

я решил принять вертикальную структуру для моего Node.js + Экспресс проекта, как следствие, у меня есть подпроекты/подпапки (Управления пользователей, Корзина, инвентарь) от функции:Как установить переменные вида в проекте вертикальной структуры Node.js + Express?

Project 
--core 
----views 
----(...) 
--usermgmt 
----views 

и, очевидно, контроллеры, маршруты, модели и виды определены для каждой функции. Моя проблема теперь в том, как установить каталог представлений для проекта. Я имею в виду, когда я делаю что в горизонтальной структуре, я пишу:

app.set('views', path.join(__dirname, 'views')); 

Это легко, так как каталог вида уникален

, но теперь у меня есть много точек зрения каталогов, так что я не знаю, что лучше практика есть. На данный момент я устанавливаю переменные виды to __dirname, а когда визуализую, я перехожу из корневого каталога в соответствующий.

Любые советы?

+0

Пожалуйста, обратитесь MEAN JS, которые могут дать вам некоторые знания http://meanjs.org/ – Prasad

ответ

1

Я бы процитировал из самой документации.

Каталог или массив каталогов для представлений приложения. Если массив, представления просматриваются в порядке их возникновения в массиве .

http://expressjs.com/en/4x/api.html#app.set (Прокрутка вниз и найти views в таблице чуть ниже)

enter image description here

ИЛИ

Вы можете создать каждый из ваших feature как отдельное приложение (просто не делают app.listen), то в своем главном приложении вы можете сделать что-то вроде этого

Launch.js

#!/usr/bin/env node 

var http = require('http'); 
var app = require('express')(); 

app.use('/feature1',require('./feature1'); 
app.use('/feature2',require('./feature2'); 

// Setup port 
var port = process.env.PORT || 3000; 
app.set('port', port); 

//Create HTTP server. 

var server = http.createServer(app); 


//Listen on provided port, on all network interfaces. 
server.listen(port); 

server.on('listening', function(){ 
    var addr = server.address(); 
    var bind = typeof addr === 'string' 
    ? 'pipe ' + addr 
    : 'port ' + addr.port; 

    //You can open browser -- uncomment below line 
    //require("openurl").open("http://localhost:3000"); 

    debug('Magic happens at : http://localhost:' + addr.port); 
}); 

ваших feature каталогов будет содержать index.js, которые могли бы сделать ...

.js вар экспресс = требуют ('экспресс'); var path = require ('path'); var cookieParser = require ('cookie-parser'); var bodyParser = require ('body-parser');

var settings = require('./lib/settings'); 

//Import your routes 
var defRoute = require('./defRoute'); 
var users = require('./users'); 
var someOtherResource = require('./someOtherResource');  

var app = express(); 

// view engine setup 
//This sets view for `this` app to relative `views` folder 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'hbs'); 

app.use(logger('dev')); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

app.use(cookieParser()); 

app.use(express.static(path.join(__dirname, 'public'))); 


//Mount your routes 
app.use('/',defRoute); 
app.use('/users', users); 
app.use('/someOtherResource', someOtherResource') 

//Other awesome code 

//Return this app. 
module.exports = app; 

Надеется, что это помогает!

0

Спасибо! Таким образом, он хорошо работает с использованием каталога представлений. Я попробую второй вариант, пока я буду делать большой рефакторинг

мили/ч