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

資訊專欄INFORMATION COLUMN

javascript高級學習總結(二)

Songlcy / 3343人閱讀

摘要:那個率先改變的實例的返回值,就會傳遞給的回調函數。函數對函數的改進,體現在以下四點內置執行器。進一步說,函數完全可以看作多個異步操作,包裝成的一個對象,而命令就是內部命令的語法糖。中的本質就是沒有的隱藏的組件。

1、原型 - jquery使用

注釋 : 實例雖然不同,但是構造函數是同一個。

jquery源碼中,原型的使用:

為什么要把原型方法放在$.fn上?

好處:
只有 $ 會暴露在window全局變量
將插件擴展統一到$.fn.xxx這一個接口,方便使用

2、原型 - Zepto - 1 使用


3、什么是單線程,和異步的關系:
單線程 - 只有一個線程,只做一件事
原因 - 避免DOM渲染的沖突
解決方案 - 異步

4、 js單線程的原因
原因 - 避免DOM渲染沖突
瀏覽器需要渲染DOM
js可以修改DOM結構
js執行的時候,瀏覽器DOM渲染會暫停
兩段js也不能同時執行(都修改DOM就沖突了)
webworker支持多線程,但是不能訪問DOM

解決方案 - 異步
比如:

單線程 - 總結

問題解答:
單線程就是同時間只能做一件事,兩段js不能同時執行
原因就是為了避免DOM渲染的沖突
異步是一種“無奈”的解決方案,雖然有很多問題

解決方案 - 異步
問題1:沒按照書寫順序執行,可讀性差
問題2:callback中不容易模塊化

5、event -loop 事件輪詢
什么是event-loop:
事件輪詢,js實現異步的具體解決方案
同步代碼,直接執行
異步函數先放在異步隊列中
待同步函數執行完畢,輪詢執行異步隊列的函數

實例分析1:

實例分析2:

注釋:javascript引擎,輪詢機制會一直監視異步隊列,當異步隊列中有函數時,會拿到主線程中執行,然后再回來繼續監視異步隊列,當異步隊列有函數時,再拿到主線程中執行,然后回來繼續監視異步隊列....

6、jqueryy-deferred-介紹



jquery 1.5 的變化:
無法改變js異步和單線程的本質
只能從寫法上杜絕callback這種形式
它是一種語法糖形式,但是解耦了代碼
開放封閉原則(對擴展開放,對修改封閉)的很好體現

7、jquery - defered - 應用-1

改造后:

使用 dtd.promise

8、promise - 語法回顧

9、promise - 串聯

10、 promise-all-race

Promise.all()方法:最終promise的狀態有result1、result2決定,分成兩種情況:
1.只有result1、result2的狀態都變成fullfilled,promise的狀態才會變成fullfilled,此時result1、result2的返回值組成一個數組,傳遞給promise的回調函數
2.只要result1、result2之中有一個被rejected,promise的狀態就會變成rejected,此時第一個被reject的實例的返回值,會傳遞給promise的回調函數

Promise.race()方法:
只要result1、result2中有一個實例率先改變狀態,promise的狀態就跟著改變。那個率先改變的Promise實例的返回值,就會傳遞給promise的回調函數。

11、async-await
then只是將callback拆分了
async/await 是最直接的同步寫法

Generator函數,依次讀取兩個文件:

改寫成async函數,如下

一比較就會發現,async函數就是將Generator函數的星號(*)替換成async,將yield替換成await,僅此而已。

async函數對Generator函數的改進,體現在以下四點:
1.內置執行器。
2.更好的語義。
3.更廣的適用性。
4.返回值是Promise。
進一步說,async函數完全可以看作多個異步操作,包裝成的一個Promise對象,而await命令就是內部then命令的語法糖。

12、什么是vdom
virtual dom,虛擬DOM
用js模擬DOM結構
DOM變化的對比,放在js層來做(圖靈完備語言:能實現高復雜邏輯的語言),提高效率
提高重繪性能


用js來模擬dom

vdom - 總結
DOM操作是“昂貴”的,js運行效率高
盡量減少DOM操作,而不是“推倒重來”
項目越復雜,影響就越嚴重
vdom即可解決這個問題

13、使用 vdom-snabbdom-1

介紹 snabbdom:

介紹snabbdom - h函數:

介紹snabbdom - patch 函數

14、使用vdom -snabbdom 示例

15、使用vdom - 總結

16、Diff算法 - vdom 為何要使用Diff
DOM操作是“昂貴”的,因此盡量減少DOM
找出本次DOM必須跟新的節點來更新,其他的不更新
這個“找出”的過程,就需要diff算法

17、Diff算法 - 實現-1


18、Diff算法 - 總結
知道什么是diff算法,是linux的基礎命令
vdom中應用diff算法是為了找出需要更新的節點
diff實現,patch(container,vnode) patch(vnode,newVnode)
核心邏輯,createElement 和updateChildren

19、從jQuery 到框架 - 總結
數據和視圖的分離,解耦(開放封閉原則:對擴展開放,對修改封閉)
以數據驅動視圖,只關心數據變化,DOM操作給封裝

20、如何理解MVVM -MVC
MVC:

21、如何理解MVVM -MVVM
Model -模型、數據
View - 視圖、模板(視圖和模板是分離的)
ViewModel - 連接Model和View的橋梁

圖解:

注釋:View通過事件綁定來操作Model,Model通過數據綁定來操作View

關于ViewModel:
MVVM不算是一種創新
但其中的ViewModel卻是一種創新
真正結合前端場景應用的創建

22、Vue三要素(MVVM框架的三大要素)
響應式:vue如何監聽到data的每個屬性變化?
模板引擎:vue的模板如何被解析,指令如何處理?
渲染:vue的模板如何被渲染成html?以及渲染過程

23、響應式-介紹:修改data屬性之后,vue立刻監聽到。實現的核心函數:Object.defineProperty (vue2.0)


重寫 get和set函數。

響應式 - 模擬:

24、模板解析 - 模板是什么
本質:字符串
有邏輯,如v-if,v-for等
與html格式很像,但有很大區別
最終還要轉換為html來顯示

模板最終必須轉換成js代碼,因為:
模板有邏輯,必須用js才能實現(圖靈完備語言)
轉換為html渲染頁面,必須用js才能實現
因此,模板最終要轉換成一個js函數(render函數)

25、 render函數 - with的用法

26、render函數 - 講解

render函數:
模板中所有信息都包含在了render函數中
this即vm
price即this.price即vm.price,即data中的price
_c即this._c 即vm._c

如下圖:

27、如何在源碼中查找生成的render函數:
1.先寫一個簡單的vue-demo示例:

2.在未壓縮的源碼中搜索“code.render”。

3.打印出來。

此時,模板已經變成了render函數了。

render函數和vdom

vm._c 其實就相當于snabbdom中的h函數。
render函數執行之后,返回的是vnode。

渲染頁面:updateComponent

updateComponent中 實現了vdom的patch
頁面首次渲染執行updateComponent
data中每次修改屬性,執行updateComponent

28、vue的整個實現流程:
第一步:解析模板成render函數
第二步:響應式開始監聽
第三步:首次渲染,顯示頁面,且綁定依賴
第四步:data屬性變化,觸發rerender

第一步:

第二步:

第三步:

什么要監聽get,直接監聽set不行嗎:
data中有很多屬性,有些被用到,有些可能不被用到。被用到的會走到get,不被用到的不會走到get。未走到get中的屬性,set的時候我們也無需關心。避免不必要的重復渲染

第四步:

附加:
vuex的工作原理:
其本質就是講我們傳入的state作為一個隱藏的vue組件的data,也就是說:我們的commit操作,本質上其實就是修改這個組件的data的值。vuex中的store本質就是沒有template的隱藏的vue組件。

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

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

相關文章

  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0
  • SegmentFault 技術周刊 Vol.40 - 2018,來學習一門新的編程語言吧!

    摘要:入門,第一個這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數式編程語言,它的代碼運行在之上。它通過編輯類工具,帶來了先進的編輯體驗,增強了語言服務。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經到來了,總結過去的 2017,相信小伙們一定有很多收獲...

    Drummor 評論0 收藏0
  • JavaScript高級程序設計學習筆記一(JavaScript簡介)

    摘要:在上百種語言中算是命好的一個,還有就是最近納入高考體系的。由以下三個部分構成。就是對實現該標準規定的各個方面內容的語言的描述。是針對但經過擴展的用于的應用程序編程接口。將頁面映射為由節點構成的樹狀結構。 JavaScript的歷史這里就不再贅述了,當然JavaScript的歷史還是比較有意思的。在上百種語言中JavaScript算是‘命’好的一個,還有就是最近納入高考體系的python...

    supernavy 評論0 收藏0
  • JavaScript書籍測評

    摘要:前言今天和大家一起聊聊的推薦書籍,每一本都是精選,做前端開發的朋友們如果沒讀過,可以嘗試一下。如果怕麻煩,也可以關注曉舟報告,發送獲取書籍,四個字,就可以得到電子書的提取碼。 前言 今天和大家一起聊聊JavaScript的推薦書籍,每一本都是精選,做前端開發的朋友們如果沒讀過,可以嘗試一下。下面給大家簡單介紹了書的內容,還有讀書的方法,希望可以幫大家提升讀書效率。 一、《JavaScr...

    X1nFLY 評論0 收藏0

發表評論

0條評論

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