亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue cli實現(xiàn)項目登陸頁面流程詳解

 更新時間:2022年10月28日 15:56:38   作者:.十六分的音符.  
CLI是一個全局安裝的npm包,提供了終端里的vue命令。它可以通過vue create快速搭建一個新項目,或者直接通過vue serve構(gòu)建新想法的原型。你也可以通過vue ui通過一套圖形化界面管理你的所有項目

1. 搭建項目

工程方式搭建項目,請將測試需要用的后臺web服務(wù)程序事先準備好。

1.1 使用vue-cli創(chuàng)建項目

在命令行,到自己的vue工程存放的目錄,運行一下命令,前提是vue-cli先安裝好。

vue init webpack vuepro

1.2 通過npm安裝element-ui

npm install element-ui -S

1.3 導(dǎo)入組件

打開 src目錄下的main.js,該文件是項目的入口文件,所以在這里導(dǎo)入,其他組件均可使用,不用再導(dǎo)入。

import Vue from 'vue'
//新添
import ElementUI from 'element-ui' 
//新增
import 'element-ui/lib/theme-chalk/index.css'
//新增
Vue.use(ElementUI) 

2 創(chuàng)建登錄頁面

2.1 創(chuàng)建登錄組件

1) 新建views目錄,在目錄上右擊,選擇新建vue(簡單模塊)創(chuàng)建Login

<template>
</template>
<script>
</script>
<style>
</style>

2)在element-ui組件,在form組件中找到與登錄頁面類似的組件,拷貝代碼到剛新建的Login組件中,修改為自己需要的登錄頁面,頁面包含:賬戶,密碼, 提交按鈕

<template>
    <div>
        <el-form >
            <el-form-item label="賬戶" >
              <el-input type="password" v-model="userName" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item label="密碼" >
              <el-input type="password" v-model="passWord" autocomplete="off"></el-input>
            </el-form-item>
            <el-form-item>
              <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
            </el-form-item>
         </el-form>
    </div>
</template>
<script>
  export default {
    name: 'Login',
    data: function() {
      return {
         userName: null,
         passWord: null,
      }
    },
    methods: {
      submitForm: function() {
          console.log("fdfdd");
      }
    }
  }
</script>
<style>
</style>

2.2 引入css(css.txt)

按照css.txt中的說明進行引入,用于控制樣式,加入樣式

base64編碼:基于64個可打印字符來表示二進制數(shù)據(jù),用于傳輸8Bit字節(jié)代碼,可用于在HTTP環(huán)境下傳遞較長的標識信息。采用Base64編碼具有不可讀性,需要解碼后才能閱讀。

2.3 配置路由

router/index.js

import Vue from 'vue'
import Router from 'vue-router'
import HelloWorld from '@/components/HelloWorld'
//首先導(dǎo)入組件
import Login from '@/views/Login'
Vue.use(Router)
export default new Router({
  routes: [
    {
      //配置路由,根路徑訪問Login組件
      path: '/',
      name: 'Login',
      component: Login
    }
  ]
})

2.4 在Login組件中將提交按鍵調(diào)整為100%寬度

<el-button type="primary" @click="submitForm('ruleForm')" style="width:100%">提交</el-button>

2.5 運行效果

在項目目錄,運行一下命令,啟動服務(wù):

npm run dev

界面效果:

3. 后臺交互

3.1 引入axios

axios是vue2提倡使用的輕量版的ajax。它是基于promise的HTTP庫。它會從瀏覽器中創(chuàng)建XMLHttpRequests,與Vue配合使用非常好。

vue.js有著名的全家桶系列:vue-router,vuex, vue-resource,再加上構(gòu)建工具vue-cli,就是一個完整的vue項目的核心構(gòu)成。其中vue-resource是Vue.js的一款插件,它可以通過XMLHttpRequest或JSONP發(fā)起請求并處理響應(yīng),但在vue更新到2.0之后,作者就宣告不再對vue-resource更新,而是推薦的axios

3.2 axios/qs/vue-axios安裝與使用

注:qs.js它是一個url參數(shù)轉(zhuǎn)化的js庫。用法就兩個:

var obj = qs.parse('a=b&c=d');  //將URL解析成對象的形式:{a:'b',c:'d'}
var str = qs.stringify(obj);    //將對象 序列化成URL的形式,以&進行拼接:a=b&c=d'

vue-axios是在axios基礎(chǔ)上擴展的插件,在Vue.prototype原型上擴展了$http等屬性,可以更加方便的使用axios

3.2.1 安裝axios

npm install axios -S

2)在Login組件中導(dǎo)入axios

  import axios from 'axios'
  export default {
  ......

3.2.2 發(fā)送get請求

在提交按鈕的監(jiān)聽函數(shù)中加入發(fā)送get請求的代碼:

//請求url,需要保證服務(wù)可用
let url = 'http://localhost:8080/webserver/userMsg/userAction!login.action';
//注意數(shù)據(jù)是保存到j(luò)son對象的params屬性
axios.get(url, {
  params: {
    userNo: this.userNo,
    userPwd: this.userPwd
  }
}).then(function(response) {
  console.log(response);
}).catch(function(error) {
  console.log(error);
});

請注意下面圖上的錯誤信息,請求發(fā)生了跨域錯誤問題:

跨域請求問題:因為我們采用的是前后端分離的方式進行開發(fā),前端和后端分別泡在不同的服務(wù)器上,基于安全性考慮,瀏覽器有同源策略,所以出現(xiàn)了跨域問題。 同源策略[same origin policy]是瀏覽器的一個安全功能,不同源的客戶端腳本在沒有明確授權(quán)的情況下,不能讀寫對方資源。 同源策略是瀏覽器安全的基石。

4)跨域問題的處理

在filter中處理跨域問題,關(guān)鍵代碼:

// Access-Control-Allow-Origin就是我們需要設(shè)置的域名
// Access-Control-Allow-Headers跨域允許包含的頭。
// Access-Control-Allow-Methods是允許的請求方式
httpResponse.setHeader("Access-Control-Allow-Origin", "*");// *,任何域名
httpResponse.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, DELETE");
filterChain.doFilter(servletRequest, servletResponse);

在課件資料中提供了CorsFilter,配置到web.xml中,對所以請求進行攔截處理,可解決跨域問題。注意:請配置在struts中央控制器之前

3.2.3 發(fā)送post請求

//注意數(shù)據(jù)是直接保存到j(luò)son對象
axios.post(url, {
    userNo: 'admin',
    userPwd: '123'
}).then(function(response) {
    console.log(response);
}).catch(function(error) {
    console.log(error);
});

輸入的測試賬號和密碼均正確,使用get發(fā)送請求獲取的響應(yīng)為“密碼正確”,但post方式發(fā)送的請求獲取的響應(yīng)為“密碼不正確”!原因分析:通過觀察控制臺可以發(fā)現(xiàn),post發(fā)送請求時,請求參數(shù)是以json格式通過request payload進行傳送的,的struts的并沒有處理這種方式傳遞的參數(shù)(起碼是我們使用的struts版本),所以傳遞到服務(wù)器的參數(shù)并沒有得到有效的解析。

問題處理:

第一種方式: 在服務(wù)端編碼實現(xiàn)request payload參數(shù)解析。在BaseAction中加入一個方法,該方法從request payload中獲取json數(shù)據(jù),并轉(zhuǎn)化為指定的類。

public Object getRequestBody(Class clazz) {   
        BufferedReader br;
        HttpServletRequest request = ServletActionContext.getRequest();
        try {
            br = request.getReader();
            String str, aStr = "";
            while((str = br.readLine()) != null){
                aStr += str;
            }
            System.out.println(aStr);
            Object obj = JSONObject.parseObject(aStr, clazz);
            return obj;
        } catch (IOException e) {
           throw new RuntimeException("獲取請求參數(shù)異常: " + e);
        }
    }

獲取參數(shù)時調(diào)用該方法獲取

User user = (User)this.getRequestBody(User.class);

第二種方式:使用qs.js庫,將{a:'b',c:'d'}轉(zhuǎn)換成'a=b&c=d'。

1) 安裝qs和vue-axios

npm install qs -S
npm install vue-axios -S

安裝成功后會在package.json中“dependencies”中會看到安裝的新庫。

在提交請求時使用qs對json對象進行轉(zhuǎn)換

//注意數(shù)據(jù)是直接保存到j(luò)son對象
let params = {
  userNo: 'admin',
  userPwd: '123'
};
//參數(shù)格式轉(zhuǎn)換
let paramStr = qs.stringify(params);
console.log(paramStr);
//提交時使用轉(zhuǎn)換之后的參數(shù)
axios.post(url, paramStr).then(function(response) {
  console.log(response);
}).catch(function(error) {
  console.log(error);
});

觀察控制臺中的輸出,已經(jīng)將json格式轉(zhuǎn)化為&連接的格式。查看返回結(jié)果是否是預(yù)期值。

3.2.4 簡化axios使用

為簡化axios使用,還可以使用axios全局配置及攔截器 1) 安裝vue-axios

npm install vue-axios -S

2) 將隨課件提供的api目錄考到src根路徑下

現(xiàn)在可以將在Login組件中的導(dǎo)入axios和qs語句刪除, action.js和http.js的配置詳見代碼中的注釋。 3)將action中的配置修改為自己的后臺服務(wù)配置

export default {
	'SERVER': 'http://localhost:8080/webserver', //服務(wù)器
	'SYSTEM_USER_DOLOGIN': '/userMsg/userAction!login.action', //登陸
	'SYSTEM_USER_DOREG': '/userAction.action', //注冊
  //獲取完整的請求地址
	'getFullPath': k => { //獲得請求的完整地址,用于mockjs測試時使用
		return this.SERVER + this[k];
	}
}

4)配置main.js

import Vue from 'vue'
//vue項目對axios的全局配置(增加配置)
import axios from '@/api/http'
import VueAxios from 'vue-axios'
Vue.use(VueAxios,axios)
......

5) 在提交時不需要手動處理轉(zhuǎn)換,全局配置進行轉(zhuǎn)換。

//修改url的獲取方式,url已經(jīng)配置在了action.js中,這里只要指定action路徑
//服務(wù)地址和服務(wù)上下文已經(jīng)在http.js中設(shè)置了axios.defaults.baseURL,
//axios會根據(jù)配置自動獲取。
let url = this.axios.urls.SYSTEM_USER_DOLOGIN;
this.axios.post(url, params).then(resp => {
  console.log(resp);
}).catch(resp => {});

到此這篇關(guān)于vue cli實現(xiàn)項目登陸頁面流程詳解的文章就介紹到這了,更多相關(guān)vue cli登陸頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Vue實現(xiàn)我的錢包充值功能的示例代碼

    基于Vue實現(xiàn)我的錢包充值功能的示例代碼

    這篇文章主要為大家詳細介紹了如何基于Vue實現(xiàn)我的錢包充值功能,文中的示例代碼簡潔易懂,具有一定的借鑒價值,有需要的小伙伴可以參考一下
    2024-01-01
  • vue頂部菜單欄實現(xiàn)小結(jié)

    vue頂部菜單欄實現(xiàn)小結(jié)

    這篇文章主要介紹了vue頂部菜單欄實現(xiàn)小結(jié),本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Vue.extend 編程式插入組件的實現(xiàn)

    Vue.extend 編程式插入組件的實現(xiàn)

    這篇文章主要介紹了Vue.extend 編程式插入組件的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼

    vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼

    這篇文章主要介紹了vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue使用canvas的教程詳解

    vue使用canvas的教程詳解

    Vue.js?是一個流行的?JavaScript?框架,用于構(gòu)建用戶界面,它提供了一種簡潔的方式來管理和渲染數(shù)據(jù),同時也支持與其他庫和工具的集成,本文主要來和大家聊聊如何在vue中使用canvas,有需要的可以參考下
    2023-09-09
  • vue3中el-table實現(xiàn)表格合計行的示例代碼

    vue3中el-table實現(xiàn)表格合計行的示例代碼

    這篇文章主要介紹了vue3中el-table實現(xiàn)表格合計行,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • vue實現(xiàn)橫向時間軸

    vue實現(xiàn)橫向時間軸

    這篇文章主要為大家詳細介紹了vue實現(xiàn)橫向時間軸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue項目登錄模塊滑塊拼圖驗證功能實現(xiàn)代碼(純前端)

    vue項目登錄模塊滑塊拼圖驗證功能實現(xiàn)代碼(純前端)

    滑塊驗證作為一種反機器人的工具,也會不斷發(fā)展和演進,以適應(yīng)不斷變化的威脅,這篇文章主要給大家介紹了vue項目登錄模塊滑塊拼圖驗證功能實現(xiàn)的相關(guān)資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • VUE中watch的詳細使用教程(推薦!)

    VUE中watch的詳細使用教程(推薦!)

    這篇文章主要給大家介紹了關(guān)于VUE中watch的詳細使用教程,watch是vue實例的一個屬性,主要用來監(jiān)聽數(shù)據(jù)的變化,并做出一些操作,需要的朋友可以參考下
    2023-08-08
  • vue中this.$emit使用方法的實際案例

    vue中this.$emit使用方法的實際案例

    this.$emit()的作用大家應(yīng)該也都知道,主要用于子組件像父組件傳值,這篇文章主要給大家介紹了關(guān)于vue中this.$emit使用方法的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02

最新評論