国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

詳解前后端分離之VueJS前端

2019-11-19 16:30:27
字體:
來源:轉載
供稿:網友

前言

前端用什么框架都可以,這里選擇小巧的vuejs。

要實現的功能很簡單:

1、登錄功能,成功將服務器返回的token存在本地

2、使用帶token的header訪問服務器的一個資源

本次實驗環境:

"dependencies": {  "vue": "^2.2.1" }, "devDependencies": {  "babel-core": "^6.0.0",  "babel-loader": "^6.0.0",  "babel-preset-latest": "^6.0.0",  "cross-env": "^3.0.0",  "css-loader": "^0.25.0",  "file-loader": "^0.9.0",  "vue-loader": "^11.1.4",  "vue-template-compiler": "^2.2.1",  "webpack": "^2.2.0",  "webpack-dev-server": "^2.2.0" }

開發IDE:Atom

首先建一個項目

使用webpack構建

/Atom# vue init webpack-simple vue-jwt-demo.../Atom# cd vue-jwt-demo//Atom/vue-jwt-demo# cnpm install/Atom/vue-jwt-demo# npm run dev

安裝插件

/Atom/vue-jwt-demo# cnpm install vue-router/Atom/vue-jwt-demo# cnpm install vue-resource

整體目錄

1

auth.js

完成token的存取

const SERVER_URL = 'http://localhost:8081'const LOGIN_URL = SERVER_URL+'/login2'export default{  data:{    authenticated:false  },  login(context,info){    context.$http.post(LOGIN_URL,info).then(function(data){      console.log(data.bodyText)      localStorage.setItem('token',data.bodyText);      this.authenticated = true      //跳到home頁      this.$router.push('home')    },function(err){      console.log(err+","+err.body.message)      context.error = err.body.message    })  },  getAuthHeader(){    return {      'Authorization':'Bearer '+localStorage.getItem('token')    }  },  checkAuth(){    var token = localStorage.getItem('token')    if(token){      this.authenticated = true    }else{      this.authenticated = false    }  }}

main.js

程序入口:完成路由和初始化

import Vue from 'vue'import App from './App.vue'import Login from './component/Login.vue'import Home from './component/Home.vue'import VueRouter from 'vue-router'import VueResource from 'vue-resource'import auth from './auth/auth'Vue.use(VueRouter)Vue.use(VueResource)//在啟動APP時進行校驗是否有tokenauth.checkAuth()const routes= [  {    path:'/',redirect:'/login'  },  {    path:'/login',component:Login  },  {    path:'/home',component:Home  }]const router = new VueRouter({  routes})new Vue({ router, render: h => h(App)}).$mount('#app')

App.vue

頁面載體

<template> <div id="app">  <h1>{{msg}}</h1>  <router-view></router-view> </div></template><script>export default { name: 'app', data () {  return {   msg: 'Vue前后端分離demo'  } }}</script>

Login.vue

登錄頁面

<template> <div>  <h2>登錄</h2>  <p>{{ error }}</p>  <div>   <input    type="text"    placeholder="Enter your username"    v-model="info.username"   >  </div>  <div>   <input    type="password"    placeholder="Enter your password"    v-model="info.password"   >  </div>  <button @click="submit()">登錄</button> </div></template><script>import auth from '../auth/auth'export default { data() {  return {   info: {    username: '',    password: ''   },   error: ''  } }, methods: {  submit() {   var info = {    username: this.info.username,    password: this.info.password   }   auth.login(this, info)  } }}</script>

效果:丑是丑了點

2

Home.vue

主頁面,訪問一個獲取郵箱的請求

<template> <div id="home">  <h1>{{msg}}</h1>  <button @click="getEmail()">Get Email</button>  <h2>Email:{{email}}</h2> </div></template><script>import auth from '../auth/auth'export default { name: 'home', data () {  return {   msg: '歡迎您登錄成功',   email:''  }  },  beforeCreate(){    //如果沒有token的話需要重新登錄     if(!auth.authenticated){      this.$router.push('login')    }  },  methods:{    getEmail(){      this.$http.get('http://localhost:8081/user/getEmail',{        headers:auth.getAuthHeader()      }).then(function(re){        this.email = re.bodyText      },function(){        console.log("get email error")      })    }  }}</script><style>#app { font-family: 'Avenir', Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px;}h1, h2 { font-weight: normal;}a { color: #42b983;}</style>

對應在服務端:

@GetMapping("/getEmail")  public String getEmail() {    return "xxxx@qq.com";  }

3

可看到瀏覽器的本地存儲:

4

代碼:https://github.com/jimolonely/vue-jwt-demo

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 平凉市| 庆元县| 承德市| 临桂县| 仁寿县| 右玉县| 唐山市| 雷山县| 佛坪县| 来安县| 阿城市| 自贡市| 廊坊市| 广灵县| 柏乡县| 砚山县| 宁夏| 新兴县| 临城县| 北宁市| 金川县| 石渠县| 玛纳斯县| 辽源市| 讷河市| 九龙县| 雷波县| 东港市| 日土县| 漯河市| 洛隆县| 蒙山县| 大理市| 泾阳县| 高密市| 沈阳市| 青冈县| 凭祥市| 乌拉特后旗| 济源市| 惠州市|