zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    P1440 求m区间内的最小值
    P1569 Generic Cow Protests
    P3252 [JLOI2012]树
    P3009 [USACO11JAN]Profits S
    <二分查找+双指针+前缀和>解决子数组和排序后的区间和
    常见算法技巧之——双指针思想
    设计模式——单例模式
    操作系统实验——读者写者模型(写优先)
    操作系统——内存管理学习笔记
    Altium Designer 16下载与安装教程
  • 原文地址:https://www.cnblogs.com/kerry-xu/p/6358308.html
Copyright © 2011-2022 走看看