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初識
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.