全篇内容参考Node.js开发指南,部分因为版本问题有做说明改动
Node.js下载 下载对应操作系统的installer文件,双击安装 node -v npm -v
单文件运行
node xxx.js
web项目一般在项目根目录下使用npm start
启动
小技巧: supervisor可以不需要手动重启http容器,它可以自动将每次修改内容实时部署
npm install -g supervisor
supervisor xxx.js
注: npm 安装软件时-g代表全局安装,适用于要使用命令行的那些包安装,不带则直接在当前目录下下载到对应的node_modules目录下
老的资料中可能是npm install -g express
,新express4.x版本后部分功能与express分离,一些安装命令不同
npm install -g express-generator
express --version
3.x老版本产生的模版为ejs,新版本产生jade
express -t ejs microblog
4.x新版本初始化
express -e microblog //生成ejs
express -j microblog //生成jade
下载依赖包
cd xxx/xxx/your-project-root-dir
npm install
注: 在项目目录下运行npm install,npm命令会自动根据项目中的package.json文件配置自动下载安装对应模块功能
启动web项目
npm start
访问http://localhost:3000/查看效果 到此为止完成一个最简单的node.js项目
bootstrap下载页面 jquery下载页面 bootstrap下载下来后的文件
css/bootstrap-responsive.css
css/bootstrap-responsive.min.css
css/bootstrap.css
css/bootstrap.min.css
img/glyphicons-halflings-white.png
img/glyphicons-halflings.png
js/bootstrap.js
js/bootstrap.min.js
将三种文件放别放到项目public
下的三个文件夹内
需要注意的点:
- jquery下载最新版后名称带有版本号,需要改名为jquery.js
- 新版4.x express的public目录下存放图片的文件夹名为images,而bootstrap样式中引用的是img,需要修改bootstrap中两处css样式引用图片的文件路径
修改首页及layout.jade文件 见Node.js开发指南5.5.4章节
系统安装
brew install mongodb
mongo --version
启动数据库
mongod --config /usr/local/etc/mongod.conf
项目增加依赖包
在package.json
的dependencies
中增加一行
"mongodb": "~2.2.0"
在项目根目录执行
npm install
项目根目录增加数据库配置文件settings.js
,内容如下:
module.exports = {
db: 'microblog',
host: '127.0.0.1',
port: '27017',
url: 'mongodb://localhost:27017/demo',
cookieSecret: 'microblogbyvoid',
};
增加会话依赖包:
"connect-mongo": "~1.3.0"
npm install
使用,看看connect-mongo
的README,不同版本用法很不一样,很多网上的老材料都不靠谱
4.x express需要单独下载express-session
npm install express-session
Express 4.x
, 5.0
and Connect 3.x
:
const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));
Express 2.x
, 3.x
and Connect 1.x
, 2.x
:
const MongoStore = require('connect-mongo')(express);
app.use(express.session({
secret: 'foo',
store: new MongoStore(options)
}));
这边使用前面第一种方式 引入依赖
var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
var settings = require('./settings');
使用会话
app.use(session({
secret: settings.cookieSecret,
store: new MongoStore(settings)
}));
见Node.js开发指南5.6.3章节
Cannot read property 'DEFAULT_PORT' of undefined 修改db.js文件内容
var settings = require('../settings.js');
var Db = require('mongodb').Db;
var Connection = require('mongodb').Connection;
var Server = require('mongodb').Server;
module.exports = new Db(settings.db,new Server(settings.host, settings.port, {}),{safe:true});
app.dynamicHelpers is not a function
- 新版本已经摒弃dynamicHelpers,改用locals
- flash新版本需要单独下载
npm install connect-flash
var flash = require('connect-flash');
- app.use使用需要注意顺序,一般为
自带中间件——session——flash——路由控制器
项目中使用代码
app.use(flash());
app.use(function(req,res,next){
res.locals.user=req.session.user;
var err = req.flash('error');
var success = req.flash('success');
res.locals.error = err.length ? err : null;
res.locals.success = success.length ? success : null;
next();
});