node.js初识

本文详细介绍了一个基于Node.js的应用从环境搭建到部署的全过程,包括必要的软件安装、依赖管理、服务器创建及与数据库的交互等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值