国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

面試官常問——vue篇

quietin / 1941人閱讀

摘要:如果要相應狀態改變,通常最好使用計算屬性或取而代之。那解決問題的思路便是在改變的情況下,保證頁面的不刷新。后面值的變化,并不會導致瀏覽器向服務器發出請求,瀏覽器不發出請求,也就不會刷新頁面。

1.vue生命周期
2.vue 雙向綁定原理
3.vue router原理
4.vue router動態路由

1.vue 生命周期鉤子

注意:所有的生命周期鉤子自動綁定this上下文到實例中,因此你可以訪問數據,對屬性和方法進行運算。這意味著你不能使用箭頭函數來定義一個生命周期方法(例如:created:() => this.fetchTodos() )。這是因為箭頭函數綁定了父級上下文,因此this與你期待的vue實例不同,this.fetchTodos的行為未定義。

beforeCreate 
在實例初始化之后,數據觀測(data observer)和 event/watcher事件配置之前被調用。
created  
在實例創建完成后被立即調用.在這一步,實例已完成以下的配置:數據觀測(data observer),屬性和方法的運算,watch/event 事件回調。然而,掛載階段還沒開始,$el屬性目前不可見。
beforeMount 
在掛載開始之前被調用:相關的 render 函數首次被調用。該鉤子在服務器端渲染期間不被調用。該鉤子在服務器渲染期間不被調用。
mounted 
el被新創建的 vm.$el 替換,病掛載到實例上去之后調用該鉤子。如果root實例掛載了一個文檔內元素,當 mounted
被調用時 vm.$el 也在文檔內。 注意: mounted 不會承諾所有子組件也都一起被掛載。如果你希望等到整個視圖都渲染完畢,可以用
vm.$nextTick 替換調 mounted:(該鉤子在服務器端渲染期間不被調用)
    mounted:function() {
        this.$nextTick(function () {
        //code that will run only after the 
        //entire view has been rendered
   }) } 
beforeUpdate  
數據更新時調用,發生在虛擬 DOM 打補丁之前。這里適合在更新之前訪問現有的DOM,比如
手動移除已經添加的事件監聽器。
該鉤子在服務器端渲染期間不被調用,因為只有初次渲染會在服務端進行。
updated 
由于數據更改導致的虛擬 DOM 重新渲染和打補丁,在這之后會調用該鉤子。

當這個鉤子被調用時,組件DOM已經更新,所以你現在可以執行依賴于DOM的操作。然而在大多數情況下,你應該避免在此期間更改狀態。如果要相應狀態改變,通常最好使用計算屬性或watcher取而代之。

注意 updated 不會承諾所有的子組件都一起被重繪。如果你希望等到整個視圖都重繪完畢,可以用vm.$nextTick 替換調
mounted:(該鉤子在服務器端渲染期間不被調用)

mounted:function() {
    this.$nextTick(function () {
    //code that will run only after the 
    //entire view has been rendered
}) } 
activated 
keep-alive 組件激活時調用。該鉤子在服務器端渲染期間不被調用。
構建組件 keep-alive
動態組件 keep-alive
deactivated 
keep-alive組件停用時調用。 該鉤子在服務器端渲染期間不被調用
構建組件 keep-alive
動態組件 keep-alive
beforeDestory 
實例銷毀之前調用。在這一步,實例仍然完全可用。
該鉤子在服務器端渲染期間不被調用。
destoryed 
vue實例銷毀后調用。調用后,vue實例指示的所有東西都會解綁定,所有的事件監聽器會被移除,所有的子實例也會被銷毀。
該鉤子在服務器端渲染期間不被調用。
2.vue 雙向綁定原理

Object.defineProperty是ES5新增的一個API,其作用是給對象的屬性增加更多的控制
Object.defineProperty(obj,prop,descriptor)
參數:

 obj: 需要定義屬性的對象(目標對象)
 prop:需要定義或修改的屬性名(對象上的屬性或方法)
 對于setter和getter,我的理解是它們是一對鉤子hook函數,當你對一個對象的某個屬性賦值時,則會自動調用相應的setter函數;
 而當獲取屬性時,則調用getter函數。這也是實現雙向數據綁定的關鍵。
 




    
    vue 雙向綁定


    

3.vue router原理

路由這個概念最先是后端出現的。在以前用模板引擎開發頁面時,經常會看到這樣

http://www.xxx.com/login

大致流程可以看成這樣:

1.瀏覽器發出請求
2.服務器監聽到80端口(或443)有請求過來,并解析url路徑
3.根據服務器路由配置,返回相應的信息(可以是html字串,也可以是json數據,圖片等)
4.瀏覽器根據數據包`Content-Type`來決定如何解析數據

簡單來說路由就是用來跟后端服務器進行交互的一種方式,通過不同的路徑,來請求不同的資源,請求不同的頁面是路由的其中一種功能。

前端路由
1.hash模式
隨著ajax的流行,異步數據請求交互運行在不刷新瀏覽器的情況下進行。而異步交互體驗的更高級版本就是SPA——單頁應用。單頁應用不僅僅在頁面交互是無刷新的,連頁面跳轉都是無刷新的,為了實現單頁應用,所以就有了前端路由。
類似于服務器路由,前端路由實現起來其實也很簡單,就是匹配不同的url路徑,進行解析,然后動態的渲染出區域html內容。但是這樣存在一個問題,就是URL每次變化的時候,都會造成頁面的刷新。那解決問題的思路便是在改變URL的情況下,保證頁面的不刷新。在2014年之前,大家是通過hash來實現路由,URL hash 就是類似于:

http://www.xxx.com/login

這種#。后面hash值的變化,并不會導致瀏覽器向服務器發出請求,瀏覽器不發出請求,也就不會刷新頁面。另外每次hash值的變化,還會觸發
hashchange這個事件,通過這個事件我們就可以知道hash值發生了哪些變化。然后我們便可以監聽hashchang來實現更新頁面部分內容的操作:

function matchAndUpdate () {
    // todo 匹配 hash 做 DOM 更新
}
window.addEventListener("hashchange",matchAndUpdate)

2.history 模式
14年后,因為HTML5標準發布。多了兩個API,pushStatereplaceState,通過這兩個API 可以改變url地址且不會發送請求。同時還有 popState 事件。通過這些就能用另一種方式來實現前端路由了,但原理都是跟 hash 實現相同的。用了 HTML5 的實現,單頁路由的 url 就不會多出一個#,變得更加美觀。但因為沒有 # 號,所以當用戶刷新頁面之類的操作時,瀏覽器還是會給服務器發送請求。為了避免出現這種情況,所以這個實現需要服務器的支持,需要把所有路由都重定向到根頁面。

function matchAndUpdate () {
    // todo 匹配 hash 做 DOM 更新
}
window.addEventListener("popstate",matchAndUpdate)

vue router實現
我們在使用vue-router的時候,主要有以下幾步:

// 1. 安裝 插件 Vue.use(VueRouter); // 2. 創建router對象 const router = new VueRouter({ routes // 路由列表 eg: [{ path: "/foo", component: Foo }] }); // 3. 掛載router const app = new Vue({ router }).$mount("#app");

vue-router 實現 -- install
理解Object.defineProperty的作用

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/53727.html

相關文章

  • 面試常問——vue

    摘要:如果要相應狀態改變,通常最好使用計算屬性或取而代之。那解決問題的思路便是在改變的情況下,保證頁面的不刷新。后面值的變化,并不會導致瀏覽器向服務器發出請求,瀏覽器不發出請求,也就不會刷新頁面。 1.vue生命周期2.vue 雙向綁定原理3.vue router原理4.vue router動態路由 1.vue 生命周期鉤子 showImg(https://segmentfault.com/...

    BlackMass 評論0 收藏0
  • 面試常問——vue

    摘要:如果要相應狀態改變,通常最好使用計算屬性或取而代之。那解決問題的思路便是在改變的情況下,保證頁面的不刷新。后面值的變化,并不會導致瀏覽器向服務器發出請求,瀏覽器不發出請求,也就不會刷新頁面。 1.vue生命周期2.vue 雙向綁定原理3.vue router原理4.vue router動態路由 1.vue 生命周期鉤子 showImg(https://segmentfault.com/...

    xingqiba 評論0 收藏0
  • 2019-我的前端面試

    摘要:先說下我面試情況,我一共面試了家公司。篇在我面試的眾多公司里,只有同城的面問到相關問題,其他公司壓根沒問。我自己回答的是自己開發組件面臨的問題。完全不用擔心對方到時候打電話核對的問題。 2019的5月9號,離發工資還有1天的時候,我的領導親切把我叫到辦公室跟我說:阿郭,我們公司要倒閉了,錢是沒有的啦,為了不耽誤你,你趕緊出去找工作吧。聽到這話,我虎軀一震,這已經是第2個月沒工資了。 公...

    iKcamp 評論0 收藏0
  • 后臺開發常問面試題集錦(問題搬運工,附鏈接)

    摘要:基礎問題的的性能及原理之區別詳解備忘筆記深入理解流水線抽象關鍵字修飾符知識點總結必看篇中的關鍵字解析回調機制解讀抽象類與三大特征時間和時間戳的相互轉換為什么要使用內部類對象鎖和類鎖的區別,,優缺點及比較提高篇八詳解內部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區別詳解-備忘筆記 深入理解Java Stream流水...

    spacewander 評論0 收藏0
  • 后臺開發常問面試題集錦(問題搬運工,附鏈接)

    摘要:基礎問題的的性能及原理之區別詳解備忘筆記深入理解流水線抽象關鍵字修飾符知識點總結必看篇中的關鍵字解析回調機制解讀抽象類與三大特征時間和時間戳的相互轉換為什么要使用內部類對象鎖和類鎖的區別,,優缺點及比較提高篇八詳解內部類單例模式和 Java基礎問題 String的+的性能及原理 java之yield(),sleep(),wait()區別詳解-備忘筆記 深入理解Java Stream流水...

    xfee 評論0 收藏0

發表評論

0條評論

quietin

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<