2012-02-27 28 views
26

Trong/dự án Express.js Node của tôi, tôi có thể thiết lập các quan điểm thư mục trên toàn cầu như vậy:Node/Express.js - Trọng nơi để tìm kiếm thư mục 'Xem' cho mỗi yêu cầu

app.configure(function() { 
    app.set('views', __dirname + '/views'); 
    .... snip .... 
}); 

... và tất cả các mẫu xem của tôi đều đi vào thư mục lượt xem.

Có thể ghi đè nơi Express thể hiện giao diện theo yêu cầu theo yêu cầu không? Ví dụ, một cái gì đó như sau:

app.get('/', function(req, res) { 
    res.render('index', { viewFolder: 'otherViews' }); 
}); 

Lý do tôi hỏi là tôi đang cố gắng để tái tạo chức năng khu vực của Microsoft ASP.NET MVC nơi mỗi khu vực được nó là thư mục quan điểm riêng.

+0

hi bạn đã bao giờ tìm thấy một giải pháp tốt hơn để câu trả lời được chấp nhận? nơi các khu vực không phải là một thư mục con của thư mục views? –

Trả lời

22

Thiết lập 'views' là thư mục gốc, vì vậy bạn sẽ có thể chỉ định một thư mục con trong hệ thống phân cấp:

app.get('/', function(req, res) { 
    res.render('areaName/viewName'); 
}); 

Nó có nghĩa là nhu cầu của bạn 'lĩnh vực được các thư mục con, nhưng nó cho phép bạn hoàn thành việc tách mình đang tìm kiếm.

6

Là một giải pháp kiểu mô-đun hơn, tôi đã làm một cái gì đó như thế này trong sails.js. Chỉ cần vượt quá chức năng hiển thị cho yêu cầu đã cho trong phần mềm trung gian của bạn. :)

var curRender = res.render; 
res.render = function(path, locals, func) { 
    var args = [res.locals.explicitPath + '/' + path, locals, func]; 
    curRender.apply(this, args); 
}; 
0

Đường dẫn đầy đủ các công trình quá

app.get('/', function(req, res) { 
    res.render(path.join(__dirname, 'view.jade')); 
}); 
Các vấn đề liên quan