2013-08-21 40 views
0

我有一個活動的快速路線 - 已經定義了一個模板。更改活動ExpressJS路線的視圖 - Node.JS

app.get('/route', function route(req, res) { 
    db.get('db_ID', function compileAndRender(err, doc) { 
     var stream = mu.compileAndRender('theme-file.extension', doc) 
     stream.pipe(res) 
    }) 

})

現在,我希望能夠給後來更改視圖文件,該路線的應用程序。我將如何做到這一點?

基本上,如何告訴表達'/路線'應該有一個新的'theme-file.extension'?

回答

0

好的,所以我只好想出另一種思考問題的方式。我不是手動設置每個路由,而是使用一個參數變量來動態地執行它。

的代碼看起來是這樣的:

//Set up dynamic routes for all pages 
app.get('/:page_name', function(req, res) { 

    db.get('pages_routes', function(err, doc) { 
     var pure_routes = doc.pure_routes, 
      requested_page = req.params.page_name, 
      page_info = _.findWhere(pure_routes, { "url" : requested_page }) 

     if (page_info !== undefined) { 
      db.get(page_info.id, function compileAndRender(err, doc) { 
       var stream = mu.compileAndRender(page_info.theme, doc) 
       stream.pipe(res) 
      }) 
     } else { 
      res.redirect('/index.html') 
     } 
    }) 
}) 

這使得代碼有很多更簡潔,更容易使用,在我看來。如果你有興趣看到代碼更加實際,你可以看看here這個項目(如果你看到一些可以改進的東西,那就貢獻一下吧!)。希望這可以幫助別人!