node.js初識

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);
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章