nodejs+webpack+vue之node

本项目是基于node环境下运行的,首先需安装node.js,下载地址http://www.nodejs.org/,安装完成后,在安装express(web 开发框架)。

var express = require('express');
var app = express();

本项目的数据存储方式有两种,一种是mysql,另一种是文件形式。如需用mysql,必须先安装mysql,再在node环境下安装mysql。

nodejs连接mysql

var mysql = require('mysql');

var pool = mysql.createPool({  //连接池
    host:'localhost',
    user:'root',
    password:'root',
    port:'3306',
    database:'mystudy'  //数据库名称
})

pool.getConnection(function(err,conn){  
    if(err){  
        ......
    }else{  
        var selectSQL= "select * from usersinfo";
        conn.query(selectSQL,function(err,result){  
            ......
            //释放连接  
            conn.release();           
        });  
    }  
});          

nodejs以文本的方式数据存储

var fs = require('fs');

//读取usersinfo.json里的数据
fs.readFile('usersinfo.json',function(err,data){                
    if(err){            
        ......                
     }else{            
        var result=JSON.parse(data.toString());                    
    }
    res.send(result);
})    

判断采用哪种数据存储方式

var datasource="file";// file or mysql

//发送请求时
if(datasource=="file"){
    //采用文本的数据存储方式
    fileManger.getItemList(req,res);
}else{
     //采用mysql数据存储方式
    databaseManger.getItemList(req,res);
}   

nodejs跨域支持,*号代表允许任何请求

app.all('*', function(req, res, next){
  const origin = req.headers.origin;
  res.header('Access-Control-Allow-Origin', origin);
  res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, Content-Type, Accept, token,sign');
  res.header('Access-Control-Allow-Credentials', true);
  res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, OPTIONS, DELETE');
  next();
});

安全认证:判断客户端与服务端的签名是否一致,采用了crypto模块,crypto模块主要提供了加密、解密、签名、验证等功能。

var crypto = require('crypto');

function checkSign(req,res){
    var appSecret = '!Q@W#E$R';
    var sign;
    var md5Conent;
    if(req.method=='GET'){
        sign=req.headers.sign;   
        md5Conent = JSON.stringify(req.query) + "|" + appSecret;        
    }
    else{
        sign=req.body.headers.sign;
        md5Conent = JSON.stringify(req.body.params) + "|" + appSecret;        
    }
    var newSign = crypto.createHash('md5').update(md5Conent).digest('hex');
    if(sign==newSign){
        return true;
    }   return false;
}

上一篇:nodejs+webpack+vue之webpack

下一篇:nodejs+webpack+vue之vue

posted @ 2017-01-30 20:00  白色斑马线  阅读(2733)  评论(0编辑  收藏  举报