【vue.js】一個簡易的登錄demo

前言

前端在我眼里一直不是一個省油的燈艇潭,這近一個月,也讓我走盡了彎路,要不是同事有相關(guān)的經(jīng)驗蹋凝,不知還要陷在其中多久鲁纠。說幾句牢騷話,信息爆炸的時代鳍寂,最可怕的不是找不到改含,而是找到的太多,無從辨別而無從下手迄汛。同時捍壤,技術(shù)的更新太快,人家的教程鞍爱,你用最新的工具可能就會報錯鹃觉。踩了很多坑,總歸想要留點新坑睹逃,所以就有了這篇文章盗扇。

需求分析

第一步,我們先嘗試回想下一個常見的登錄項目的場景是什么?

1)有一個登錄界面沉填,界面要求輸入用戶名和密碼疗隶,如果可以,還需要驗證碼模塊翼闹。登錄界面也應(yīng)該可以包含注冊功能斑鼻。這是登錄界面最基礎(chǔ)的功能要求。

2)有一個展示的界面猎荠,也就說登錄成功后得有一個界面來展示用戶所需的信息坚弱,存儲用戶特定的信息。

3)當我們不注銷用戶的情況下法牲,下一次進入登錄界面史汗,可以直接進入用戶界面,或者說直接進入用戶界面的地址拒垃,可以進入自己的用戶界面停撞;如果是未登錄狀態(tài),則無法直接進入展示界面

實現(xiàn)

設(shè)計

世界那么大悼瓮,我想要模板戈毒。這個模板,指的不是說完全可用的一個完整 demo 横堡,指的是組件 component 埋市。前輩們是寫了很多可用的組件并匯集起來了的。比如說官網(wǎng)命贴,在搜索框里面輸入要用的組件類型道宅,以 Form 為例食听,可以看到有不少的實例,最下面還有接口文檔污茵。而實例的第一個樱报,就是我們這個項目需要的登錄框。我的這個雛形項目就是使用了這個登錄框的源碼實現(xiàn)的泞当。

先說模板的事情是為了嘗試消除各位和我一樣的初學(xué)者的畏難心理迹蛤。其實我們更像是設(shè)計師,我們指定了一室一廳襟士,就可以找室的模板和廳的模板盗飒,將模板安裝上來,之后具體怎么造的陋桂,并不需要我們?nèi)リP(guān)心逆趣。

在有可用組件的基礎(chǔ)上,我們考慮下我們需要設(shè)計的東西:

1) 我們得有一個跳轉(zhuǎn)的系統(tǒng)章喉,當我們登錄成功之后汗贫,可以跳轉(zhuǎn)到展示的界面。同時秸脱,在展示界面得有一個注銷的按鈕落包,可以跳轉(zhuǎn)回登錄界面。

2)我們得有一個類似于 session 或者 cookie 的系統(tǒng)摊唇,不然的話當我們退出登錄后咐蝇,所有信息都會丟失。這個系統(tǒng)不能存儲在前端巷查,不然項目重啟意味著信息全部丟失有序。

初始化

vue 的下載,我參考的是菜鳥教程網(wǎng)站岛请,使用的方法是 npm 的下載方法旭寿。這個方法的好處是可以初始化一個項目模板,使用命令是 vue init webpack my-project 崇败。我寫文章的時候盅称,初始化的結(jié)果和網(wǎng)站上給的圖是一致的。

下載完成后后室,使用 idea 工具打開項目缩膝,配置運行的方式是:

Name任意, Command必須為run, Scripts必須為dev

配置完成后,就可以運行了岸霹,默認會打開 localhost 的 8080 端口疾层,可以使用瀏覽器訪問下默認效果。

界面的實現(xiàn)

界面的本質(zhì)是一個個的 vue 項目贡避,存儲地址是 /src/components 痛黎。打開這個目錄我們可以看到項目初始給的 HelloWorld.vue 予弧。可以清晰地看到項目分為三段結(jié)構(gòu):第一段是 <template> 湖饱,決定了網(wǎng)頁的布局桌肴;第二段是 <script>, 存儲著網(wǎng)頁內(nèi)部的數(shù)據(jù)和方法;第三段是 <style>, 決定了網(wǎng)頁的樣式琉历。第一段布局的內(nèi)容,就是設(shè)計中提到的模板的內(nèi)容水醋,也是寫慣后端的人最不熟悉的部分旗笔,第二段的內(nèi)容和后端的代碼是同源的,語法角度略有不同拄踪,第三段暫時不做討論蝇恶。

設(shè)計的實現(xiàn)

1)跳轉(zhuǎn)的實現(xiàn),主要借助于一個工具惶桐,名字叫做 vue-router 撮弧。安裝方法是在項目根目錄下安裝 vue-router。?

安裝命令是 npm install vue-router姚糊。顧名思義贿衍,這個工具主要是用來控制路由的。使用方法是修改 src 目錄下的 main.js 文件

先import后use最后實際使用

上圖還是比較好理解的救恨,當我們啟動應(yīng)用后贸辈, 訪問? /? 和? /login? 會進入登錄界面, 訪問 /display 會進入展示界面肠槽。另外細心的讀者可能發(fā)現(xiàn) ivew 和 axios 出現(xiàn)比較頻繁擎淤,前者是 css相關(guān)的樣式,后者是 vue 向后端發(fā)送 http 請求的工具秸仙,暫時和基礎(chǔ)的本項目無關(guān)嘴拢。

路由變更的具體方法如下,很方便理解寂纪。mounted?是寫在第二段 <script> 的內(nèi)容席吴,是進入頁面就會執(zhí)行一次的內(nèi)容。我們可以用這個來初始化頁面的數(shù)據(jù)弊攘。

this.$router.replace(目標目錄)

2) 存儲系統(tǒng)抢腐。我早先寫項目的時候,使用的 vuex襟交,參考了vuex學(xué)習(xí)迈倍。這個工具其實就是一個項目內(nèi)的全局變量,你可以在這個全局變量中存入數(shù)據(jù)捣域,這樣整個項目都可以取到啼染。比如說登錄成功后宴合,登陸的用戶名得從登錄組件傳遞到展示組件。而展示組件和登錄組件有沒有父子關(guān)系迹鹅,無法使用 emit 一類的方法卦洽,因此使用全局是比較方便的一種實現(xiàn)方法。但是這種方法有一個缺陷:每次新打開標簽斜棚,都相當于一個新的環(huán)境阀蒂,刷新也相當于一個新的環(huán)境,也就是說弟蚀,當你登錄后蚤霞,只要離開了當前標簽頁,所有信息都會丟失(當然如果你的項目本身要求就是這樣實現(xiàn)的义钉,那可以嘗試使用一下)昧绣。

我正式使用的是 localStorage 。 調(diào)用 SetItem 可以設(shè)置本地變量捶闸,然后調(diào)用 GetItem 可以獲取本地變量夜畴。這個變量是存在于本地的,因此即使關(guān)閉瀏覽器關(guān)閉服務(wù)删壮,數(shù)據(jù)依舊會存在贪绘。我設(shè)置了兩個變量,一個是用戶的名字醉锅,還有一個是登錄狀態(tài)兔簇。

細節(jié)

使用 mounted 在用戶進入具體的頁面時進行一次初始化,如果登錄狀態(tài)為登錄硬耍,則無論輸入什么地址都跳轉(zhuǎn)到當前用戶的展示頁面垄琐。如果狀態(tài)為未登錄,則無論如何跳轉(zhuǎn)到登錄界面经柴。設(shè)置注銷功能狸窘,可以設(shè)置登錄狀態(tài)為 false 且刪掉用戶。這些是實現(xiàn)的細節(jié)坯认。

代碼

有人需要了就放一下翻擒,git折騰了好久沒成,先把我修改過的src里的內(nèi)容上傳牛哺,用了度盤陋气。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌撰茎,老刑警劉巖搂妻,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件议慰,死亡現(xiàn)場離奇詭異蠢古,居然都是意外死亡,警方通過查閱死者的電腦和手機别凹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門草讶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炉菲,你說我怎么就攤上這事堕战。” “怎么了拍霜?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵践啄,是天一觀的道長。 經(jīng)常有香客問我沉御,道長,這世上最難降的妖魔是什么昭灵? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任吠裆,我火速辦了婚禮,結(jié)果婚禮上烂完,老公的妹妹穿的比我還像新娘试疙。我一直安慰自己,他們只是感情好抠蚣,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布祝旷。 她就那樣靜靜地躺著,像睡著了一般嘶窄。 火紅的嫁衣襯著肌膚如雪怀跛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天柄冲,我揣著相機與錄音吻谋,去河邊找鬼。 笑死现横,一個胖子當著我的面吹牛漓拾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播戒祠,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼骇两,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了姜盈?” 一聲冷哼從身側(cè)響起低千,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎贩据,沒想到半個月后栋操,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體闸餐,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年矾芙,在試婚紗的時候發(fā)現(xiàn)自己被綠了舍沙。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡剔宪,死狀恐怖拂铡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情葱绒,我是刑警寧澤感帅,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站地淀,受9級特大地震影響失球,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜帮毁,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一实苞、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧烈疚,春花似錦黔牵、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灯抛,卻和暖如春金赦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背对嚼。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工素邪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猪半。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓兔朦,卻偏偏與公主長得像,于是被迫代替她去往敵國和親磨确。 傳聞我的和親對象是個殘疾皇子沽甥,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

推薦閱讀更多精彩內(nèi)容