1.npm?install?-g?express
2.npm?install?-g?express-generator
最新的express将命令行工具分离出来,放在express-generator组件中
3.express?-V查看版本,express是否安装成功
4.express?projectname在当前目录下创建命名为projectname的express工程文件
App.js路口文件
Public存放css、js文件和图片
Routes存放各路由具体操作的js文件,包括渲染模板
Views存放jade视图文件
5.cd?projectname
?npm?install
进入工程文件,安装所需的node依赖包
6.npm?start启动express工程文件,之前的版本该操作是node?app.js
7.访问localhost:3000浏览网页
?
?
Demo代码示例
?
app.js:
?
var?express?=?require(‘express‘);
var?path?=?require(‘path‘);
var?favicon?=?require(‘serve-favicon‘);//第三方中间件,网页图标中间件,域名前的图标
var?logger?=?require(‘morgan‘);//在控制台中输出request请求的信息,比如通过get方法加载css样式
var?cookieParser?=?require(‘cookie-parser‘);//解析cooike中间件
var?bodyParser?=?require(‘body-parser‘);//解析请求体中间件
?
var?routes?=?require(‘./routes/index‘);
var?users?=?require(‘./routes/users‘);
?
var?app?=?express();
?
app.set(‘views‘,?path.join(__dirname,?‘views‘));//模板文件的目录,__dirname当前文件所在路径
app.set(‘view?engine‘,?‘jade‘);//设置渲染引擎
?
//?uncomment?after?placing?your?favicon?in?/public
//app.use(favicon(path.join(__dirname,?‘public‘,?‘favicon.ico‘)));
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‘)));//静态文件处理中间件,模板的css、js文件路径命会拼接到public后
?
//配置路由规则,顺序执行,率先执行的规则有效,后面的会被忽略,使用next()方法可以使后续的路由规则得到执行
app.use(‘/‘,?routes);
app.use(‘/users‘,?users);
?
//?catch?404?and?forward?to?error?handler
app.use(function(req,?res,?next)?{
??var?err?=?new?Error(‘Not?Found‘);
??err.status?=?404;
??next(err);
});
?
//?error?handlers
?
//?development?error?handler
//?will?print?stacktrace
if?(app.get(‘env‘)?===?‘development‘)?{
??app.use(function(err,?req,?res,?next)?{
????res.status(err.status?||?500);
????res.render(‘error‘,?{
??????message:?err.message,
??????error:?err
????});
??});
}
?
//?production?error?handler
//?no?stacktraces?leaked?to?user
app.use(function(err,?req,?res,?next)?{
??res.status(err.status?||?500);
??res.render(‘error‘,?{
????message:?err.message,
????error:?{}
??});
});
module.exports?=?app;
?
?
?
routes/index.js:
?
var?express?=?require(‘express‘);
var?router?=?express.Router();
?
router.get(‘/‘,?function(req,?res,?next)?{
??res.render(‘index‘,?{?title:?‘Express‘?});
});
?
module.exports?=?router;
?
?
?
views/index.jade:
?
extends?layout
block?content
??h1=?title
??p?Welcome?to?#{title}
?
views/layout.jade:
?
doctype?html
html
??head
????title=?title
????link(rel=‘stylesheet‘,?href=‘/stylesheets/style.css‘)
??body<!--?拆分的模板只会渲染body内容?-->
????block?content
?
参考:
Nodejs基础中间件:http://blog.fens.me/nodejs-connect/
Express使用指南:http://www.expressjs.com.cn/guide/routing.html
原文:http://schifred.iteye.com/blog/2258347