2012-04-19 49 views
3

我想使用node.js呈現部分。這是我的代碼。在node.js中使用快速部分使用

app.js:

var express = require('express') 
    , routes = require('./routes'); 

var app = module.exports = express.createServer(); 

// Configuration 

app.configure(function(){ 
    app.set('views', __dirname + '/views'); 
    app.set('view engine', 'jade'); 
    app.use(express.bodyParser()); 
    app.use(express.methodOverride()); 
    app.use(app.router); 
    app.use(express.static(__dirname + '/public')); 
}); 

app.configure('development', function(){ 
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
}); 

app.configure('production', function(){ 
    app.use(express.errorHandler()); 
}); 

// Routes 

app.get('/', routes.index); 

var products = require('./products.js'); 

app.get('/products', function(req, res) { 
    res.render('products/index', {locals: { 
       products: products.all 
       } 
       }); 
}); 

app.listen(3000); 

當我去到localhost:3000 /產品應該呈現index.jade這是在產品的文件夾這是在意見folder.Above我使用設置views目錄app.set('views', __dirname + '/views');

index.jade:

h1 Products: 
#products!= partial('partials/product', {collection: products}) 

這應該使局部等效於(諧音/ product.jade),因爲玉是我的視圖引擎。

我正在回話說「部分沒有定義」錯誤

任何幫助將是巨大的。謝謝

更新:

這解決了我的部分錯誤謝謝你。我重新安裝了2.5.9。

回答

8

檢查你所安裝的高速JS的版本 - 你可能有3.0阿爾法:

$ npm ls 
... 
└─┬ [email protected] 
... 

如果你有興趣嘗試的α,一定要簽上Migrating from 2.x to 3.x的文檔。在這裏面,你會發現res.partial()partial()(內模板)已被刪除 - 根據所描述的「查看系統的變化:」

通過去除的「佈局」 &諧音在快車3的概念。 x模板引擎將更好地控制文件I/O。這意味着與模板引擎的集成更容易,並且大大簡化了視圖系統的內部。

您可以在鏈接文章Use Jade blocks, not layouts中看到意向示例。

如果你不感興趣,那麼只要確保你安裝了2.x。

$ npm install [email protected] 

或通過package.json

{ 
    ... 
    "dependencies": { 
     ... 
     "express": "2.x" 
    } 
} 
+0

'NPM表達-v'快遞剛剛版本,如果你安裝了很多包 – jopfre 2016-10-03 10:20:07