1. 下载安装node环境,Mac、linux、windows各不相同

2. 安装后输入: node -v查看,出现版本号则安装成功

3. 打开terminal,安装express框架,(为了更快速,更易安装成功,建议先安装淘宝镜像,使用cnpm)

淘宝镜像地址:http://npm.taobao.org/mirrors/node

4. 开始安装

cnpm install -g express-generator
express server
cd server
cnpm install

bin:可执行文件,做封装,通过http模块创建server,监听端口、启动服务,通过www启动项目

app.js:入口,本身依赖express;

           path自带模块;

           favion浏览器logo;

           logger:日志输出;

           cookie-parser:cookie信息进行转化;

           bodyParser对返回值进行转化;

           先加载index再加载user两个路由

           express.static(path.jion)设置静态目录

public:静态文件js、css

routes:路由,浏览器访问地址,代表controller

views:jade或其他模版文件,运行时自动加载view文件夹中文件,模板引擎可以换成ejs或html等

package.json

  • 将模板引擎改为html(jade用起来还是不太习惯):将jade文件删掉,修改app.js
    app.engine('.html',ejs.__express);
    app.set('view engine', 'html');
    var ejs = require('ejs');
    
    
    • 回到上层菜单:cd ..
    • cnpm install ejs --save
    • 在views文件夹下建立一个index.html
    • 编辑app.js文件:
    • 启动npm start
5. 自动重启:cnpm install supervisor

启动命令:supervisor ./bin/www

在地址栏:localhost:3000启动


6. MongoDB,这个参考之前发的MongoDB环境搭建

7,基于express开发

安装Mongoose:cnpm install mongoose --save

创建model:在server中创建一个models文件夹

var mongoose = require('mongoose')
var Schema = mongoose.Schema;

var productSchema = new Schema({
  "productId":{type:String},
  "productName":String,
  "salePrice":Number,
  "checked":String,
  "productNum":Number,
  "productImage":String
});

module.exports = mongoose.model('Good',productSchema);

首先引入mongoose,然后定义model(productSchema)然后exports,后定义路由

创建路由:

1) 先在app里面定义一级路由,

var goods = require('./routes/goods')
app.use('/goods', goods);
2) 在 routes设置子路由,goods.js

var express = require('express');
var router = express.Router();
var mongoose = require('mongoose');
var Goods = require('../models/goods');//加载模型表

//连接MongoDB数据库
mongoose.connect('mongodb://127.0.0.1:27017/dumall');

mongoose.connection.on("connected", function () {
  console.log("MongoDB connected success.")
});

mongoose.connection.on("error", function () {
  console.log("MongoDB connected fail.")
});

mongoose.connection.on("disconnected", function () {
  console.log("MongoDB connected disconnected.")
});

//查询商品列表数据
router.get("/list", function (req,res,next) {
  let page = parseInt(req.param("page"));
  let pageSize = parseInt(req.param("pageSize"));
  let priceLevel = req.param("priceLevel");
  let sort = req.param("sort");
  let skip = (page-1)*pageSize;
  var priceGt = '',priceLte = '';
  let params = {};
  if(priceLevel!='all'){
    switch (priceLevel){
      case '0':priceGt = 0;priceLte=100;break;
      case '1':priceGt = 100;priceLte=500;break;
      case '2':priceGt = 500;priceLte=1000;break;
      case '3':priceGt = 1000;priceLte=5000;break;
    }
    params = {
      salePrice:{
          $gt:priceGt,
          $lte:priceLte
      }
    }
  }
  let goodsModel = Goods.find(params).skip(skip).limit(pageSize);
  goodsModel.sort({'salePrice':sort});
  goodsModel.exec(function (err,doc) {
      if(err){
          res.json({
            status:'1',
            msg:err.message
          });
      }else{
          res.json({
              status:'0',
              msg:'',
              result:{
                  count:doc.length,
                  list:doc
              }
          });
      }
  })
});

//加入到购物车
router.post("/addCart", function (req,res,next) {
  var userId = '100000077',productId = req.body.productId;
  var User = require('../models/user');
  User.findOne({userId:userId}, function (err,userDoc) {
    if(err){
        res.json({
            status:"1",
            msg:err.message
        })
    }else{
        console.log("userDoc:"+userDoc);
        if(userDoc){
          var goodsItem = '';
          userDoc.cartList.forEach(function (item) {
              if(item.productId == productId){
                goodsItem = item;
                item.productNum ++;
              }
          });
          if(goodsItem){
            userDoc.save(function (err2,doc2) {
              if(err2){
                res.json({
                  status:"1",
                  msg:err2.message
                })
              }else{
                res.json({
                  status:'0',
                  msg:'',
                  result:'suc'
                })
              }
            })
          }else{
            Goods.findOne({productId:productId}, function (err1,doc) {
              if(err1){
                res.json({
                  status:"1",
                  msg:err1.message
                })
              }else{
                if(doc){
                  doc.productNum = 1;
                  doc.checked = 1;
                  userDoc.cartList.push(doc);
                  userDoc.save(function (err2,doc2) {
                    if(err2){
                      res.json({
                        status:"1",
                        msg:err2.message
                      })
                    }else{
                      res.json({
                        status:'0',
                        msg:'',
                        result:'suc'
                      })
                    }
                  })
                }
              }
            });
          }
        }
    }
  })
});

module.exports = router;

实现功能:与前端交互时,因为vue用的是8080端口


改成以下,访问接口时转发到3000的node接口


Logo

前往低代码交流专区

更多推荐