express是在nodejs的基础上,拓展出的一个简洁实用的框架结构,更方面处理事情
搭建框架
- 安装nodejs、npm包管理
- 安装express:npm install -g express;(express -V查看版本);
- 安装express的debug工具:npm install -g node-inspector(调用:node-debug app.js)
问题:解决express -V不是内部命令的问题:
解答:npm install -g express 最新版本会安装到 C:\Users\username\AppData\Roaming\npm\node_modules下,4.x.x以上版本必须安装npm install express-generator -g;(-g将自动设置环境变量;)
- 创建工程:D:\workspace\project>express -e nodejs-demo(注意:-e指ejs模板;-J指jade模板)
- 根据package.json(express和ejs)下载依赖包:D:\workspace\project\nodejs-demo>npm install
- 运行D:\workspace\project\nodejs-demo>node app.js;
- 访问localhost:3000,每次改动代码都需重启;
- 安装supervisor每次修改代码自动重启,节省时间(npm install supervisor)
- 启动服务supervisor app.js
- 项目框架搭建完成,目录结构:
- app.js程序启动文件
- public静态文件夹(img、css、js)
- routes路由文件夹(mvc中的c)
- views页面文件(ejs模板)
- package.json项目依赖配置和开发者信息
- node_modules存放所有的项目依赖
使用模板Ejs
目的:将模板后缀改为.html,用app.engine(extname,callback)重设模板文件扩展名,如果用ejs模板引擎来处理.html后缀
(1)修改app.js:
- 模块依赖区域(加):var ejs=require(‘ejs’);>
- 环境变量区域:修改app.set(‘view engine’, ‘ejs’);为
app.engine(‘.html’,ejs.__express);
app.set(‘view engine’,’html’);- 将view文件夹中的index.ejs修改为index.html
- 访问localhost:3000
(2)增加html页面:
- 增加header.html、footer.html、index.html
- index.html:<% include header.html %>
<%= title %>
<% include footer.html %>
注意事项:
3. app.engine(ext,callback):ext替换后的扩展名;callback处理ext扩展名的文件,__express是ejs的公共属性,要渲染的文件扩展名,替换前的扩展名;
4. app.set(name,value)和app.get(name)如var一样,设置变量
5. app.use([path],function);使用中间件function,path默认’/’;当请求来时,依次去请求这些中间件;例如:
- 设置静态文件目录,为当前目录的public,将静态文件放入public,就能读取;(注意加载顺序)
- app.use(‘/static’,express.static(__dirname+’/public’));//GET /static/javascript/jquery.js …
&
7. app.render(view,[option],callback)渲染view,callback来处理返回的渲染后的字符串,如:res.render(‘index’, { title: ‘Express’ })渲染view/index.html下面<%= title %>
路由功能
所谓路由:访问一个服务器的路径,服务器对我们访问的路径做出响应,采取一定的动作,这一个过程即为一个路由;一般由get|post|all实现;
session使用
session:回话,进行某活动连续的一段时间;
在这里,选用session-mongoose的原因:nodejs和mongoose都基于js且数据存储都是json,前后端都能直接处理json,减少转换;
- 安装参照:
http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html
程序启动:cdm中执行
(1)D:\test\test-express\mongodb\bin>mongod –dbpath “D:\test\test-express\mongodb\data\db”成功后,数据库已经启动,该界面为mongo的启动程序;
(2)关闭后,双击bin下的mongod.exe,启动程序开启;
(3)在D:\test\test-express\mongodb\bin>mongo,如图:
(4)开始数据库操作:help- 修改app.js:
- 引入:
SessionStore = require(“session-mongoose”)(express);
var store = new SessionStore({
url: “mongodb://localhost/session”,interval: 120000});- 插入:
app.use(express.cookieParser());
app.use(express.cookieSession({secret : ‘fens.me’}));
app.use(express.session({
secret : ‘fens.me’, store: store, cookie: { maxAge: 900000 }
}));
app.use(function(req, res, next){
res.locals.user = req.session.user;
next();
});
app.use(app.router);
对于session-mongoose(https://github.com/donpark/session-mongoose)的操作,简要介绍一下:
引用块内容