成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Vue.js實(shí)現(xiàn)用戶登錄退出和e2e測(cè)試

MycLambert / 2574人閱讀

摘要:前言本來(lái)只是想寫(xiě)個(gè)實(shí)現(xiàn)登錄退出的例子的,但是又覺(jué)得這樣干貨太少。哈哈,不小心被嚇到了吧,其實(shí)這些都是有辦法可以解決的,下次有機(jī)會(huì),我們可以再討論一下使用的正確姿勢(shì)。

前言

本來(lái)只是想寫(xiě)個(gè)Vuet實(shí)現(xiàn)登錄退出的例子的,但是又覺(jué)得這樣干貨太少。一個(gè)好的開(kāi)源項(xiàng)目,少不了單元測(cè)試和e2e測(cè)試,為了保證Vuet教程的豐富性和程序的穩(wěn)定性,所以我選擇了寫(xiě)的例子即能當(dāng)教程使用,也可以用于測(cè)試,豐富的應(yīng)用場(chǎng)景和測(cè)試,能保證日后的版本迭代不會(huì)因?yàn)樾迯?fù)了一個(gè)bug而引發(fā)了一大堆bug的尷尬。

源碼地址

例子源碼
測(cè)試源碼

運(yùn)行Vuet項(xiàng)目
git clone https://github.com/medevicex/vuet.git
npm install
npm run dev
npm run dev:test # 運(yùn)行測(cè)試,需要電腦本地安裝firefox和chrome瀏覽器
開(kāi)始

哈哈,上面直接拋源碼地址,感覺(jué)也是挺尷尬的,我們先分析一下我們這個(gè)登錄退出所需要所的功能

登錄頁(yè)面,用戶信息頁(yè)面,是兩個(gè)不同的頁(yè)面,就涉及到了多組件狀態(tài)共享

我期望用戶在已登錄的情況下,每次到用戶信息頁(yè)面時(shí),先渲染本地的用戶信息,然后再去請(qǐng)求服務(wù)器更新本地的用戶信息

將登錄退出的方法,集中起來(lái)管理,方面在在各個(gè)組件中調(diào)用

多組件共享狀態(tài)和方法

Vuet提供了全局的mapModules方法,可以讓我們連接到掛載在Vue實(shí)例上的Vuet實(shí)例

ages/Home.vue

  import { mapRules, mapModules } from "vuet"

  export default {
    mixins: [
      // manual:規(guī)則,可以將通用的更新模塊狀態(tài)的方法集中起來(lái),
      //        可以理解成vuex中的action,只不過(guò)他是可以允許在里面更改模塊狀態(tài)的
      // need 規(guī)則,會(huì)在組件每一次的beforeCreate鉤子中,發(fā)送請(qǐng)求更新一次用戶的信息
      mapRules({ manual: "user", need: "user" }),
      // 連接用戶模塊
      mapModules({ user: "user" })
    ]
  }
定義一個(gè)user模塊

vuet/user.js

export default {
  data () {
    // 一個(gè)Object對(duì)象中,是否有data方法,是構(gòu)成Vuet.js一個(gè)模塊的依據(jù)
    // 當(dāng)你調(diào)用reset方法時(shí),將會(huì)重置整個(gè)模塊的狀態(tài)
    // 例如在組件中:this.$vuet.reset("模塊名稱")
    return {
      name: null,
      age: null,
      sex: null,
      count: 0
    }
  },
  async fetch ({ state }) {
    // 當(dāng)need規(guī)則觸發(fā)更新時(shí),出調(diào)用一次fetch方法更新
    // 我們可以在這里直接更改state,也可以return一個(gè)Object對(duì)象來(lái)更新?tīng)顟B(tài)

    // 在實(shí)際項(xiàng)目中,用戶未登錄時(shí),我們并不需要向服務(wù)器發(fā)送真正的請(qǐng)求
    // 所以我們可以判斷一下用戶的名稱是否存在,否則的話不向服務(wù)器進(jìn)行真正的請(qǐng)求
    if (state.name === null) return
    
    // 下面數(shù)據(jù)因?yàn)槭悄M的,所以就直接return好了
    return {
      name: "Vuet",
      age: 18,
      sex: "male",
      count: ++state.count
    }
  },
  // 注:你要在組件中使用manual規(guī)則才能向組件注入這些方法
  // 例如:mapRules({ manual: "模塊名稱" }) 
  // 調(diào)用:this.$模塊名稱.xxx()
  manuals: {
    async signin ({ state }, from) { // 定義了一個(gè)登錄的方法
      if (from.name === "Vuet" && from.pass === "2017") {
        return {
          success: true,
          msg: "Login was successful",
          data: {
            name: "Vuet",
            age: 18,
            sex: "male",
            count: ++state.count
          }
        }
      }
      return {
        success: false,
        msg: "Logon failure",
        data: null
      }
    },
    async sigout () {
      // 用戶選擇退出后,直接調(diào)用reset的方法即可重置用戶信息
      this.reset()
    }
  }
}
實(shí)現(xiàn)用戶登錄

pages/Signin.vue




總結(jié)

其實(shí)教程并沒(méi)有寫(xiě)得特別詳細(xì)的過(guò)程,主要是為了體現(xiàn)出Vuet一種開(kāi)放的姿態(tài),它可以在任意組件直接對(duì)模塊的狀態(tài)進(jìn)行直接的賦值更新,也可以使用類似action的方法進(jìn)行更新,它可以讓你為所欲為,用得好的人可以讓你開(kāi)發(fā)的效率飆升,用得不好,也會(huì)導(dǎo)致你程序中的狀態(tài)難以追蹤變化的記錄。哈哈,不小心被嚇到了吧,其實(shí)這些都是有辦法可以解決的,下次有機(jī)會(huì),我們可以再討論一下使用Vuet的正確姿勢(shì)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/87079.html

相關(guān)文章

  • Vue.js項(xiàng)目重構(gòu),輕松實(shí)現(xiàn)上拉加載滾動(dòng)位置還原

    摘要:這是基于進(jìn)行狀態(tài)管理的完整項(xiàng)目,包含了用戶的登錄退出,路由頁(yè)面,滾動(dòng)位置還原,帖子編輯狀態(tài)保存等等,麻雀雖小,卻是五臟俱全。 前言 上一篇《Vue.js輕松實(shí)現(xiàn)頁(yè)面后退時(shí),還原滾動(dòng)位置》只是簡(jiǎn)單的實(shí)現(xiàn)了路由切換時(shí)進(jìn)行的滾動(dòng)位置還原,很多朋友就來(lái)問(wèn)上拉加載怎么實(shí)現(xiàn)?。∮谑俏蚁肫鹆艘郧白鲞^(guò)一個(gè)叫vue-cnode的項(xiàng)目,于是花了兩天時(shí)間進(jìn)行了重構(gòu),完全的移除了Vuex,使用了Vuet來(lái)做為...

    junbaor 評(píng)論0 收藏0
  • 2017-06-13 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)點(diǎn)關(guān)注,不迷路精選前端團(tuán)隊(duì)工作流遷移記譯新語(yǔ)法私有屬性知乎專欄前端每周清單大前端技術(shù)生命周期模型發(fā)布面向生產(chǎn)環(huán)境的前端性能優(yōu)化模塊實(shí)現(xiàn)入門(mén)淺析知乎專欄中文一個(gè)線下沙龍中國(guó)最大的前端技術(shù)社區(qū)單頁(yè)面博客從前端到后端基于 2017-06-13 前端日?qǐng)?bào) 點(diǎn)關(guān)注,不迷路:-P 精選 ESLint v4.0.0 released - ESLint - Pluggable JavaScri...

    曹金海 評(píng)論0 收藏0
  • Vue Cli安裝以及使用

    摘要:?jiǎn)卧獪y(cè)試前端的單元測(cè)試目前有兩個(gè)比較熱的框架,一個(gè)是的方式,一個(gè)是。小伙伴們不用急,關(guān)于單元測(cè)試這塊,我會(huì)找時(shí)間寫(xiě)博客的。首先前端的測(cè)試分為兩種,一個(gè)是單元測(cè)試,另一個(gè)就是測(cè)試了。? ? ? ? 因?yàn)楣卷?xiàng)目要用vue框架,所以會(huì)用vue-cli來(lái)新建項(xiàng)目。用過(guò)vue的都知道,要全局安裝vue以及腳手架vue-cli,然后執(zhí)行vue init webpack projectname來(lái)新建vu...

    lemanli 評(píng)論0 收藏0
  • vue-cli 構(gòu)建 vue 項(xiàng)目詳解

    摘要:打開(kāi)瀏覽器輸入,會(huì)看到構(gòu)建的項(xiàng)目的主頁(yè)目錄結(jié)構(gòu)使用編輯器打開(kāi)推薦使用,下面具體看看目錄結(jié)構(gòu)在中,根據(jù)我們?cè)跇?gòu)建項(xiàng)目的時(shí)候的選項(xiàng),有以下幾個(gè)命令。 構(gòu)建一個(gè) vue 項(xiàng)目最簡(jiǎn)單的方式就是使用腳手架工具 vue-cli 。前端的三大框架都有自己的腳手架工具,其作用就是用配置好的模板迅速搭建起一個(gè)項(xiàng)目工程來(lái),省去自己配置 webpack 配置文件的基本內(nèi)容,大大降低了初學(xué)者構(gòu)建項(xiàng)目的難度。這...

    JeOam 評(píng)論0 收藏0
  • Vue 2.0 開(kāi)發(fā)聊天程序(一): 初建項(xiàng)目

    摘要:它采用集中式存儲(chǔ)管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測(cè)的方式發(fā)生變化。安裝和使用在之后的實(shí)踐過(guò)程中講解。有一套良好的代碼規(guī)范,對(duì)于項(xiàng)目的開(kāi)發(fā)和維護(hù)都很友好。 努力了,不一定能成功,但是不努力,感覺(jué)好舒服啊                   ——努訓(xùn) 沒(méi)有了解過(guò)vue1.*,直接上手vue2.0;雖然有些吃力但還是很愉快了學(xué)下來(lái)了。 一丶環(huán)境配置 node.js...

    荊兆峰 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<