前端VUE知識點鞏固

2021-03-02 前端考拉

一個vue的生命周期執行順序,邏輯,執行次數

vue每個組件都是獨立的,每個組件都有一個屬於它的生命周期。從一個組件的創建、掛載、更新、銷毀,這就是一個組件的生命周期。

(1)單組件執行順序

進入頁面默認會自動執行beforeCreate -> created -> beforeMount -> mounted

beforeCreate:在執行該函數時,$el、$data、methods、computed在this中【無法獲取】
created:在執行該函數時,$data、methods、computed在this中【可以】獲取(Tip:如果我們不用操作DOM可以發起網絡請求)
beforeMount:template準備掛載
mounted:在執行該函數時,$el可以在this中訪問(Tip:可以發起網絡請求)

(3)父子組件執行順序

首先會自動執行【父組件】的生命周期鉤子beforeCreate -> created -> beforeMount
然後會自動執行【子組件】的生命周期鉤子 beforeCreate -> created -> beforeMount-> mounted
最後在自動執行【父組件】的生命周期鉤子mounted

父組件自己的數據發生改變執行自己的生命周期鉤子beforeUpdate、updated
子組件自己的數據發生改變執行自己的生命周期鉤子beforeUpdate、updated

父組件會先執行beforeDestroy
子組件在執行beforeDestroy、destroyed
最後父組件執行destroyed

2.如果父子組件這種模式,那這個page的執行順序是什麼?

父組件created -> 子組件created -> 子組件mounted -> 父組件mounted

個人理解:這也說明了為什麼父組件得到的異步數據(一般後端接口返回)通過props傳遞在子組件的created中得不到,而是通過watch監聽後再進行處理

3.watch 監聽路由

watch除了可以監聽data中數據的變化,還可以監聽路由的變化。監聽 $route.path屬性

二話不說先上代碼:

watch:{      '$route.path':function(newVal,oldVal){        //console.log(newVal+"---"+oldVal);        if(newVal === '/login'){          console.log('歡迎進入登錄頁面');        } else if(newVal === '/register'){          console.log('歡迎進入註冊頁面');        }      } }

以下是完整代碼:

<html>  <head>   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />  </head><body>  <div id='app'>    <router-link to="/login">登錄</router-link>    <router-link to="/register">註冊</router-link>    <router-view></router-view>  </div></body><script src="../lib/vue.js"></script><script src="../lib/vue-router-3.0.1.js"></script><script>  var login = {    template:'<h3>這是登錄子組件,這個組件是奔波開發的</h3>'  }  var register = {    template:'<h3>這是註冊子組件,這個組件是霸波奔開發的</h3>'  }  var router = new VueRouter({    routes:[      {path:"/",redirect:'/login'},      {path:'/login',component:login},      {path:'/register',component:register}    ]  })  var vm = new Vue({    el:'#app',    data:{    },    methods:{    },    router,    watch:{      // this.$route.path      '$route.path':function(newVal,oldVal){        //console.log(newVal+"---"+oldVal);        if(newVal === '/login'){          console.log('歡迎進入登錄頁面');        } else if(newVal === '/register'){          console.log('歡迎進入註冊頁面');        }      }    }  })</script></html>

3.路由傳參

(1)路由傳值

通過路由的路徑帶參數(url中顯示參數),同時配置路由的時候也要帶上參數,獲取參數使用this.$route.params.id,直接拿路由裡面的參數。

toRouter(){    var id = 1;    this.$router.push({        path:'/content/${id}',    });}

router.js需配置

{    path:"index/:id",    name:"index",    component: Index}
//傳多個參數{ path:"index/:id1/:id2", name:"index", component: Index}
//相同路由有參數和無參數(需把有參數的放在無參數的前面){ path:"index/:id", name:"index", component: Index},{ path:"index", name:"index", component: Index}

(2)不用在router.js路由頁配置參數來接收(url中不顯示參數,刷新頁面會丟失傳遞過來的參數),而是通過name或者path去跳轉(name和path寫法一樣,區分name和path)。

//通過name跳轉toRouter(){    this.$router.push({        name:"content",        params:{            content:this.content,//指定值或者獲取的值            page:"1", //其他需要傳遞的參數        }    })}
//通過path跳轉toRouter(){ this.$router.push({ path:"/content", params:{ content:this.content,//指定值或者獲取的值 page:"1", //其他需要傳遞的參數 } })}

目標接收組件,例如:content.vue

created(){    this.getRouter();}methods:{    getRouter(){        this.content = this.$route.params.content;        this.page = this.$route.params.page;    }}

擴展:

$router和$route的區別

Vue Router對$router和$route的解釋:

$router是router構造方法全局路由的實例。當導航到不同url,可以使用this.$router.push方法,這個方法則會向history裡面添加一條記錄,當點擊瀏覽器回退按鈕或者this.$router.back()就會回退之前的url。

$route對象表示當前的路由信息,包含了當前 URL 解析得到的信息。如path,name等。

路由跳轉分為編程式和聲明式

聲明式:

//路由入口<router-link :to="路由地址">//視圖出口 在一個頁面嵌套子路由,並且不跳轉頁面,子頁面就會渲染在router-view的地方<router-view></router-view>
<router-link to="/index">首頁</router-link>

編程式:(如提供了path,那麼params和query的配置就會被忽略)


router.push('millia')router.push({ path: 'millia' })router.push({ name: 'user', params: { userId: 'millia' }})

router.push({ path: 'register', query: { plan: 'private' }})

path:'name'和path:'/name'的區別

this.$router.push({path:'name'})this.$router.push({path:'/name'})

相關焦點

  • 前端框架VUE,理解這一點,快速成為大咖
    首先大家要知道,IT行業迅速發展,想成為一個全棧開發工程師,你就要精通後端到前端,進大公司可能要求你在某個技術點有深入研究或者精通。進創業型公司或者小公司,你要明白老闆是招來幹活的,而不是培養你的技術,最後你跳槽,那人家不損失大。
  • 2020年的前端工程師請收下這幾個Vue.js開源框架
    vue是一套用於構建用戶界面的漸進式JavaScript框架,簡單說Vue是類似於view的前端框架。vue開發核心是關注視圖層,同時它更加容易與第三方庫結合,再者我們在現有的項目中可以直接整合一起。目前vue技術社區在英文或中文都非常豐富,社區都有很多經驗豐富的開發人員,其功能也非常豐富與使用性,屬於輕量級框架。
  • 用Vue 和Bootstrap 4 來構建Web前端界面
    儘管前端程序現在發展迅速,各種框架層出不窮,但是對廣大非前端碼農來說構建Web界面的最好的選擇仍然還是Bootstrap 4。但是Bootstrap依賴於已經嚴重過時,被拋棄的jQuery組件,那麼如何解決這個問題就迫在眉睫了。
  • 前端技術棧:5分鐘入門VUE+Element UI
    vue-cli是vue的腳手架,所謂腳手架說白了就是快速創建模板化的項目,不用每次創建項目都去重複那些固定化的操作,注意我們安裝的是vue2.0的腳手架npm install -g vue-cli不要和vue3.0的混淆,vue3.0是npm install -g @vue/cli,此處不需要安裝3.0,否則會衝突全局安裝webpackwebpack
  • 前端面試題——Vue
    說一下 Vue 的雙向綁定數據的原理vue 實現數據雙向綁定主要是:採用數據劫持結合「發布者 - 訂閱者」模式的方式,通過 Object.defineProperty() 來劫持各個屬性的 setter、 getter,在數據變動時發布消息給訂閱者,觸發相應監聽回調。2.
  • 前端諸神大戰,Vue、React 依舊笑傲江湖
    整理 | 彎月 責編 | 張文頭圖 | CSDN 下載自視覺中國自 2010 年 AngularJS 第一版發布以來,前端框架的發展經歷了十個年頭,前端框架大戰也幾乎告一段落。毫無疑問,現在基本上是 React、Angular(包括 AngularJS 和後來的 Angular)和 Vue.js 三分天下。
  • 你不可不知的前端進階知識:Vue事件總線(EventBus)使用詳細介紹
    vue組件非常常見的有父子組件通信,兄弟組件通信。而父子組件通信就很簡單,父組件會通過props向下傳數據給子組件,當子組件有事情要告訴父組件時會通過 $emit事件告訴父組件。今天就來說說如果兩個頁面沒有任何引入和被引入關係,該如何通信了?
  • 35道常見的前端vue面試題
    來源 | https://segmentfault.com/a/1190000021936876今天這篇文章給大家分享一些常見的前端vue面試題。對於前端來說,儘管css、html、js是主要的基礎知識,但是隨著技術的不斷發展,出現了很多優秀的mv*框架以及小程序框架。因此,對於前端開發者而言,需要對一些前端框架進行熟練掌握。這篇文章我們一起來聊一聊VUE及全家桶的常見面試問題。1、請講述下VUE的MVVM的理解?
  • 最全Vue2.0學習路線,各個階段適用
    這些都是新手很難理解的知識點,所以今天發個乾貨,希望幫助到有心的讀者和粉絲,也算好事一件。下面建議學習順序,從 新手起步,到實戰開發,到進階核心都有介紹,結合了自己查的資料和經驗和vue作者尤大的一些建議匯總而成,覺得好請轉發、收藏。
  • Vue、React、Angular之三國殺,web前端入坑第六篇(上)
    vue、react、angular對比和選擇 這個話題我在vue1.x 時代 2016年 就想寫了,可時光如梭,懶癌侵身,一個擱淺便是這麼多天。vue都2.5了,angular 都變成了另外一種框架了,不敢想,不敢想, JavaScript 開發框架發展的是如此之快。如果有不知道mvvm概念的同學,請先回顧我 入坑第五篇: 秒懂前端框架歷史和MVVM框架原理!
  • thinkphp如何使用vue進行web開發
    vue可以說是近幾年最火最流行的前端js框架,而thinkphp也是國內挺流行的後端框架。看到網上很多朋友的教程都是前端開發者寫的,難免對像自己一樣的後端程式設計師是一種打擊。「怎麼就沒有從後臺出發講講如何使用前端vue框架呢?」我時常這樣想。
  • 重學鞏固你的Vuejs知識體系(下)
    重學鞏固你的Vuejs知識體系,如果有哪些知識點遺漏,還望在評論中說明,讓我可以及時更新本篇內容知識體系。歡迎點讚收藏!生命周期首先:new Vue(),new一個Vue的實例,Observe data數據查看,init Events綁定事件,created執行created方法,判斷是否有el屬性,如果沒有,vm.
  • 2018web前端面試總結
    關於流程一般的實習&校招招聘大體有這麼一個流程:(這裡我個人都是走的官網投遞的渠道,沒有經歷過宣講會的環節,這一部分我沒啥經驗)筆試筆試作為招聘的第一個環節,一般考察的都是專業基礎知識,這裡會著重考察你在學校的計算機相關基礎,也就是很多人會發現,我明明考的是前端的卷子為啥前端的知識點考的這麼少,而且有時候也會發現,前端的卷子考的沒有前端的知識點
  • 手把手教你用JS/Vue/React實現幸運水果機(80後情懷之作)
    課程目標我們使用原生JS,Vue和React三種開發方法,來開發一個集趣味性與技術性於一體的H5小遊戲,通過這個小遊戲的開發,我們在鞏固常用的CSS和JS知識的同時,可以深刻地體會到Vue和React這種MVVM模式的框架的開發思想以及優於傳統DOM操作的地方,並且可以快速上手Vue和React這兩種當前最火熱的前端框架的使用
  • 基於 Vue 的前端架構,我做了這 15 點
    關注公眾號 前端開發博客,回復「加群」公司主要業務是 GIS 和 BIM,通常開發一些中大型的系統,所以 vue-router 和 vuex 都是必不可少的。放棄了 Element UI 選擇了 Ant Design Vue(最近 Element 好像復活了,麻蛋)。建立腳手架使用 Node 環境開發 CLI 工具,參考我自己寫過的一篇 -【 搭建自己的腳手架—「優雅」生成前端工程】。
  • 【初級】個人分享Vue前端開發教程筆記 | 打卡每天一份勸退技能
    每天學習編程,讓你離夢想更新一步,感謝不負每一份熱愛編程的程式設計師,不論知識點多麼奇葩,和我一起,讓那一顆四處流蕩的心定下來,一直走下去,加油,2021加油!Vue.js的發展前端發展的行業非常快,大部分學習者趕不上發展的速度,每天都在學習Google的AngularJS,Fackbook的ReactJS,這些前端MVC(MVVM)框架和組件化學習,加上Vue.js的出現,越來越多的前端投入了學習中。
  • Vue面試中,經常會被問到的面試題/Vue知識點整理
    2、vue生命周期的作用是什麼?答:它的生命周期中有多個事件鉤子,讓我們在控制整個Vue實例的過程時更容易形成好的邏輯。3、vue生命周期總共有幾個階段?答:它可以總共分為8個階段:創建前/後, 載入前/後,更新前/後,銷毀前/銷毀後。4、第一次頁面加載會觸發哪幾個鉤子?
  • 什麼是vue?在項目開發中為什麼要用vue?
    在近兩年的web及項目開發中,vue技術的使用越來越普遍,其各種資料、介紹以及使用攻略內容資料非常多,那麼vue到底什麼?在項目開發中,vue起到什麼作用?它與傳統的html+css+js+lamp開發網站項目又有什麼區別呢?
  • 009 | 快速入門Web前端開發的正確姿勢
    比如慕課網的《前端小白入門》+《前端進階:響應式開發與前端框架》兩套課程的組合套餐就要 988 元了,而內容還沒有上面免費教程的齊全。其實,和前面學習 Android 和 iOS 時一樣,我們主要還是為了了解各種核心概念,我們不可能在短期內熟悉所有知識點,因此,我還是和前面的文章一樣,也羅列出一些核心的知識點吧。
  • 2020大廠前端面試之vue專題
    將結果返回給前端,頁面重新渲染。MVVM :傳統的前端會將數據手動渲染到頁面上, MVVM 模式不需要用戶收到操作 dom 元素,將數據綁定到 viewModel 層上,會自動將數據渲染到頁面中,視圖變化會通知 viewModel層 更新數據。ViewModel 就是我們 MVVM 模式中的橋梁.