Windows下环境准备:
VirtualBox
CentOS
XShell
Sublime
安装相关指令:
yum install npm
npm install -g cnpm --registry=http://registry.npm.taobao.org/
cnpm install express
cnpm install -g nodemon
cnpm install -g pm2
cnpm install-g node-inspector
npm install morgan
cnpm install mongoose
cnpm install redis
create a Server:
http.createServer(function(req, res){
res.end('Hello World');
}).listen(80011)
sftp.config.json配置
"save_before_upload": true,
"upload_on_save": false,
"sync_down_on_open": false,
"sync_skip_deletes": false,
"sync_same_age": true,
"confirm_downloads": false,
"confirm_sync": true,
"confirm_overwrite_newer": false,
"host": "192.168.206.17",
"user": "root",
"password": "wy199366",
//"port": "22",
"remote_path": "/home/hello/"
连接redis
var redis = require("redis");
module.exports = redis.createClient(6379,"localhost");
初始package.Json
npm init
**********************Scrm小项目************************
【express.js】
var express = require('express');
var bodyParser = require('body-parser');
module.exports = function(){
console.log('init expesss...');
var app = express();
app.use(bodyParser.json());
require('../app/routes/news.server.routes')(app);
// 处理所有未知的请求
app.use(function(req, res, next){
res.status(404);
try {
return res.json('Not Found');
} catch(e) {
console.error('404 set header after sent');
}
});
// 统一处理出错的情况
app.use(function(err, req, res, next){
if(!err) {return next()}
res.status(500);
try {
return res.json(err.message || 'server error');
} catch(e) {
console.error('500 set header after sent');
}
});
return app;
};
【config.js】
var config = null;
if(process && process.env && process.env.NODE_ENV) {
config = require('./env/' + process.env.NODE_ENV + '.js');
} else {
config = require('./env/development.js');
}
module.exports = config;
【development.js】
module.exports = {
port: 7101,
mongodb: 'mongodb://localhost/scms'
}
【mongoose.js】
var mongoose = require('mongoose');
var config = require('./config');
module.exports = function(){
var db = mongoose.connect(config.mongodb);
// 导入 model
require('../app/models/news.server.model');
return db;
};
【app.js】
var express = require('./config/express');
var mongodb = require('./config/mongoose');
var db = mongodb();
var app = express();
module.exports = app;
【www】
#!/usr/bin/env node
var app = require('../app');
var config = require('../config/config');
app.listen(config.port, function(){
console.log('app started, listening on port:', config.port);
});
【news.server.model.js】
var mongoose = require('mongoose');
var NewsSchema = new mongoose.Schema({
title: String,
content: String,
// 设置默认值
createTime: {type: Date, default: Date.now}
});
var News = mongoose.model('News', NewsSchema);
【news.server.controller.js】
var mongoose = require('mongoose');
var News = mongoose.model('News');
module.exports = {
// 新闻的创建
create: function(req, res, next){
var news = new News(req.body);
news.save(function(err){
if(err) return next(err);
return res.json(news);
});
},
// 获取列表
list: function(req, res, next){
// 对于这两个参数,还需要思考,如果用户传入负数怎么办
var pagesize = parseInt(req.query.pagesize, 10) || 10;
var pagestart = parseInt(req.query.pagestart, 10) || 1;
News
.find()
// 搜索时,跳过的条数
.skip( (pagestart - 1) * pagesize )
// 获取的结果集条数
.limit( pagesize)
.exec(function(err, docs){
if(err) return next(err);
return res.json(docs);
});
},
// 处理路由参数
getById: function(req, res, next, id){
if(!id) return next(new Error('News not Found'));
News
.findOne({_id: id})
.exec(function(err, doc){
if(err) return next(err);
// 请思考一下,与 36 行的提示报错是一样的,这样做,有什么缺点
if(!doc) return next(new Error('News not Found'));
req.news = doc;
return next();
});
},
// 获取新闻详情
get: function(req, res, next) {
return res.json(req.news);
}
};
【news.server.routes.js】
var NewsController = require('../controllers/news.server.controller');
module.exports = function(app){
app.route('/news')
.get(NewsController.list)
.post(NewsController.create);
app.route('/news/:nid')
.get(NewsController.get);
app.param('nid', NewsController.getById);
};
node.js初识
最新推荐文章于 2024-09-15 14:31:48 发布