vue+express 构建后台管理系统的示例代码


Posted in Javascript onJuly 19, 2018

一个vue+express 构建的后台管理系统

说明:

vue+express 构建的后台管理系统,包括登录、注册、表格的增删改查

github 在线

搭建vue项目:

1.安装vue-cli脚手架

npm install -g vue-cli

2.创建基于webpack模版的项目

vue init webpack my-express

3.安装包依赖并运行

cd my-express
npm install
npm run dev

vue项目基于iview-admin改造的

通过应用生成器工具 express创建一个应用的骨架:

1.连接数据库

在config创建db.js

var mysql = require("mysql");
var connection = mysql.createConnection({
  host:"",
  port: 3306,
  user:"root",
  password:"",
  database:"",
  useConnectionPooling: true
});

function query(sql,data,callback){
  // connection.connect()
  // pool.getConnection(function(err,connection){
    connection.query(sql,data,function (err,rows) {
      callback(err,rows);
      // connection.release();
      // connection.end() 
    });
  // });
}

exports.query = query;

在routers路由文件下引入

var express = require('express');
var router = express.Router();
var db = require("../config/db");
const jwt = require('jsonwebtoken')
const token = require("../config/token")
var data={data:'',meta:{code:'200',message:''}}
/* GET users listing. */
router.post('/add', function(req, res, next) {
  let username = req.body.username;
  let password = req.body.password;
  db.query("SELECT username FROM users where username=(?)",[username],function(err,rows){
    console.log(err,rows)
    if(rows.length>0){
      data={data:'',meta:{code:'500',message:'用户名存在'}}
      res.send(data)
    }else{
      db.query("INSERT INTO `users` (`username`,`password`) VALUES (?,?)",[username,password],function(err,rows){
        data={data:'',meta:{code:'200',message:'注册成功'}}
        res.send(data)
      });  
    }
  });
});

2.加入token验证

安装jsonwebtoken

npm install jsonwebtoken

在config创建token.js

const crypto = require('jsonwebtoken')
const secret = "JWT-TOKEN"
const token={
  createToken:function(obj,timeout){
    // Token 数据
    let payload = {
      name: obj.username,
      admin: true
    };
    // 密钥
    
    // 签发 Token
    let tokens = crypto.sign(payload, secret, { expiresIn: 3600})
    return tokens;
  },
  decodeToken:function(tokens){
    console.log(tokens)
    let res = false;
    crypto.verify(tokens, secret , function(err,decoded) {
      if(err){
        res = {'flag':false,'decoded':decoded}
      }else{
        res = {'flag':true,'decoded':decoded}
      }
      })
    return res;
  },
  checkToken:function(token){
    var resDecode=this.decodeToken(token);
    if(!resDecode){
      return false;
    }
    //是否过期
    var expState=(parseInt(Date.now()/1000)-parseInt(resDecode.payload.created))>parseInt(resDecode.payload.exp)?false:true;
    if(resDecode.signature===resDecode.checkSignature&&expState){
      return true;
    }
    return false;
  }
};
module.exports=exports=token;

在app.js验证token是否过期,过去返回401

app.all('*', function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
  res.header("Access-Control-Allow-Headers", "Content-Type, access_token, X-Requested-With")
  // res.header("Content-Type", "application/json;charset=utf-8");
  console.log(req.originalUrl,'11111')
  if(rouetpass.indexOf(req.originalUrl) > -1 || req.originalUrl.split('/').indexOf('static') > -1){

    next()
  }else{
    if (req.method != "OPTIONS"){
      var accesstoken = req.headers['access_token'];
      let datatoken = token.decodeToken(accesstoken)
      // console.log(data)
      if(datatoken.flag){
        next()
      }else{
        data.meta.code=401;
        res.send(data) 
      }
    }else{
      next()
    }
  }
});

项目部署:

1.将vue项目打包后放在express项目public文件夹下,通http://localhost:3000即可以访问。

2.部署阿里云

创建实例

vue+express 构建后台管理系统的示例代码

添加安全组允许3000端口

vue+express 构建后台管理系统的示例代码

使用putty连接linux服务器,将express项目压缩上传

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一个可以显示阴历的JS代码
Mar 05 Javascript
javascript 跨浏览器开发经验总结(五) js 事件
May 19 Javascript
jQuery Ajax 仿AjaxPro.Utility.RegisterTypeForAjax辅助方法
Sep 27 Javascript
Js如何判断客户端是PC还是手持设备简单分析
Nov 22 Javascript
jQuery插件multiScroll实现全屏鼠标滚动切换页面特效
Apr 12 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
Nov 16 Javascript
JavaScript仿支付宝6位数字密码输入框
Dec 29 Javascript
vue.js 1.x与2.0中js实时监听input值的变化
Mar 15 Javascript
解决低版本的浏览器不支持es6的import问题
Mar 09 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
jQuery操作元素追加内容示例
Jan 10 jQuery
vue单应用在ios系统中实现微信分享功能操作
Sep 07 Javascript
微信小程序表单弹窗实例
Jul 19 #Javascript
vue用递归组件写树形控件的实例代码
Jul 19 #Javascript
如何理解Vue的v-model指令的使用方法
Jul 19 #Javascript
JavaScript去掉数组重复项的方法分析【测试可用】
Jul 19 #Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 #Javascript
浅谈Vue初学之props的驼峰命名
Jul 19 #Javascript
解决vue-cli3 使用子目录部署问题
Jul 19 #Javascript
You might like
PHP查找数值数组中不重复最大和最小的10个数的方法
2015/04/20 PHP
PHP与JavaScript针对Cookie的读写、交互操作方法详解
2017/08/07 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
jquery 常用操作整理 基础入门篇
2009/10/14 Javascript
jQuery asp.net 用json格式返回自定义对象
2010/04/07 Javascript
JavaScript 面向对象编程(1) 基础
2010/05/18 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
Javascript实现跑马灯效果的简单实例
2016/05/31 Javascript
使用BootStrap实现用户登录界面UI
2016/08/10 Javascript
深入理解bootstrap框架之入门准备
2016/10/09 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
web.js.字符串与正则表达式操作
2017/05/13 Javascript
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
你不可不知的Vue.js列表渲染详解
2019/10/01 Javascript
基于vue实现图片验证码倒计时60s功能
2019/12/10 Javascript
js实现数字滚动特效
2019/12/16 Javascript
vue路由传参的基本实现方式小结【三种方式】
2020/02/05 Javascript
在vue中axios设置timeout超时的操作
2020/09/04 Javascript
编写Python爬虫抓取暴走漫画上gif图片的实例分享
2016/04/20 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
2019/05/10 Python
python数据类型之间怎么转换技巧分享
2019/08/20 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python创建一个元素都为0的列表实例
2019/11/28 Python
解决Python命令行下退格,删除,方向键乱码(亲测有效)
2020/01/16 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
美国性感女装网站:bebe
2017/03/04 全球购物
Doyoueven官网:澳大利亚健身服饰和配饰品牌
2019/03/24 全球购物
初中生三年学习生活的自我评价
2013/11/03 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
Pytorch 如何加速Dataloader提升数据读取速度
2021/05/28 Python