原创 vue-router源碼解析(四)路由匹配規則

前面我們講過,在使用 vue-router 的時候,主要有以下幾個步驟: // 1. 安裝 插件 Vue.use(VueRouter); // 2. 創建router對象 const router = new VueRouter({

原创 vue-router源碼解析(三)路由模式

路由模式及降級處理 vue-router 默認是 hash 模式 , 即使用 URL 的 hash 來模擬一個完整的 URL ,於是當 URL 改變時,頁面不會重新加載。 vue-router 還支持 history 模式,這種模式充分利用

原创 vue-router源碼解析(二)插件實現

vue-router 插件方式的實現 vue-router 是作爲插件集成到 vue 中的。 我們使用 vue-router 的時候,第一部就是要 安裝插件 Vue.use(VueRouter); 關於插件的介紹可以查看 vue 的官方文檔

原创 vue-router源碼解析(一)

準備工作 Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,讓構建單頁面應用變得易如反掌。 這裏主要通過閱讀 vue-router 的源碼,對平時使用較多的一些特性以及功能,理解其背後實現的思路。

原创 Js高級編程筆記--面向對象的程序設計

理解對象 屬性類型 1.數據屬性 特性: Configurable : 表示能否通過 delete 刪除屬性,能否修改屬性特性,能否把屬性改爲訪問器屬性 Enumerable : 表示能否通過 for in 循環返回 Writable :

原创 vue虛擬dom原理剖析

在vue2.0渲染層做了根本性的改動,那就是引入了虛擬DOM。 vue的虛擬dom是基於 snabbdom 改造過來的。瞭解 snabbdom的原理之後再回過頭來看 vue的虛擬dom結構的實現。就難度不大了! 於是,這裏將自己寫的 sna

原创 snabbdom源碼解析(七) 事件處理

事件處理 我們在使用 vue 的時候,相信你一定也會對事件的處理比較感興趣。 我們通過 @click 的時候,到底是發生了什麼呢! 雖然我們用 @click綁定在模板上,不過事件嚴格綁定在 vnode 上的 。 eventlisteners

原创 snabbdom源碼解析(五) 鉤子

文件路徑 : ./src/hooks.ts 這個文件主要是定義了 Virtual Dom 在實現過程中,在其執行過程中的一系列鉤子。方便外部做一些處理 // 鉤子 export interface Hooks { // 在 `pat

原创 snabbdom源碼解析(六) 模塊

模塊 在 ./src/modules 裏面,定義了一系列的模塊 , 這些模塊定義了相應的鉤子 。這些鉤子會在 patch 的不同階段觸發,以完成相應模塊的功能處理 瞭解生命週期更多的內容,請查看 鉤子 主要的模塊有 : attribut

原创 snabbdom源碼解析(四) patch 方法

patch 方法 前言 在開始解析這塊源碼的時候,先給大家補一個知識點。關於 兩顆 Virtual Dom 樹對比的策略 diff 策略 同級對比對比的時候,只針對同級的對比,減少算法複雜度。 就近複用爲了儘可能不發生 DOM 的移動,會

原创 snabbdom源碼解析(三) vnode對象

vnode 對象 vnode 是一個對象,用來表示相應的 dom 結構 代碼位置 :./src/vnode.ts 定義 vnode 類型 /** * 定義VNode類型 */ export interface VNode { /

原创 snabbdom源碼解析(一) 準備工作

準備工作 前言 虛擬 DOM 結構概念隨着 react 的誕生而火起來,之後 vue2.0 也加入了虛擬 DOM 的概念。 閱讀 vue 源碼的時候,想了解虛擬 dom 結構的實現,發現在 src/core/vdom/patch.js 的地

原创 snabbdom源碼解析(二) h函數

介紹 這裏是 typescript 的語法,定義了一系列的重載方法。h 函數主要根據傳進來的參數,返回一個 vnode 對象 代碼 代碼位置 : ./src/h.ts /** * 根據選擇器 ,數據 ,創建 vnode */ expor

原创 underscore中的小技巧

在閱讀 underscore 的過程中,發現了它的一些小技巧,對我們平時的編程很有用。在這裏向大家介紹一二 void 0 代替 underfined 首先,看源碼: _.isUndefined = function(obj) { r

原创 不定參數(rest 參數 ...)

不定參數 如何實現不定參數 使用過 underscore.js 的人,肯定都使用過以下幾個方法: _.without(array, *values) //返回一個刪除所有values值後的array副本 _.union(*arrays) /