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