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 相关文章推荐
Locate a File Using a File Open Dialog Box
Jun 18 Javascript
Ajax,UTF-8还是GB2312 eval 还是execScript
Nov 13 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
Aug 13 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
Aug 18 Javascript
JavaScript实现将数组中所有元素连接成一个字符串的方法
Apr 06 Javascript
JavaScript代码判断点击第几个按钮
Dec 13 Javascript
AngularJs concepts详解及示例代码
Sep 01 Javascript
jQuery.cookie.js实现记录最近浏览过的商品功能示例
Jan 23 Javascript
Vue官网todoMVC示例代码
Jan 29 Javascript
js实现京东秒杀倒计时功能
Jan 21 Javascript
微信小程序实现的一键拨号功能示例
Apr 24 Javascript
vue实现侧边栏导航效果
Oct 21 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+AJAX实现无刷新注册(带用户名实时检测)
2007/01/02 PHP
php 去除html标记--strip_tags与htmlspecialchars的区别详解
2013/06/26 PHP
PHP Primary script unknown 解决方法总结
2019/08/22 PHP
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
JavaScript语言对Unicode字符集的支持详解
2014/12/30 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
详解javascript实现瀑布流列式布局
2016/01/29 Javascript
js canvas仿支付宝芝麻信用分仪表盘
2016/11/16 Javascript
JS实现类似51job上的地区选择效果示例
2016/11/17 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
angularjs中回车键触发某一事件的方法
2017/04/24 Javascript
详解vue.js2.0父组件点击触发子组件方法
2017/05/10 Javascript
12条写出高质量JS代码的方法
2018/01/07 Javascript
分析javascript原型及原型链
2018/03/18 Javascript
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
关于TypeScript模块导入的那些事
2018/06/12 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
2018/09/13 Javascript
vue 微信扫码登录(自定义样式)
2020/01/06 Javascript
解决Nuxt使用axios跨域问题
2020/07/06 Javascript
如何在 ant 的table中实现图片的渲染操作
2020/10/28 Javascript
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
在Python中使用next()方法操作文件的教程
2015/05/24 Python
Python简单爬虫导出CSV文件的实例讲解
2018/07/06 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
Python文件循环写入行时防止覆盖的解决方法
2018/11/09 Python
Python如何把十进制数转换成ip地址
2020/05/25 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
基于python tkinter的点名小程序功能的实例代码
2020/08/22 Python
Python 2.6.6升级到Python2.7.15的详细步骤
2020/12/14 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
学生感冒英文请假条
2014/02/04 职场文书
小组合作学习反思
2014/02/18 职场文书
施工安全汇报材料
2014/08/17 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
pandas 操作 Excel操作总结
2021/03/31 Python