原创 04-Vue的插件機制

Vue是支持插件的,而且它的插件機制很簡單。就是用Vue.use方法,接收一個函數。接收的這個函數就是用來插件,它能做的事情無非就是在Vue或Vue.prototoye上添加一些方法啥的。讓你在Vue上或Vue實例上可以調用你插件

原创 01-Vue源碼的構建過程解析

我把Vue源碼放到一個叫做reborn的目錄裏面了,因爲我想我的職業生涯和生活都得到重生!! 先過一下根目錄的目錄結構 .editorconfig 從名字上能看出來這是編輯器的配置文件,可是問題來了是什麼編輯器呢?這次我終於沒

原创 01-Vue源碼的構建過程解析之scripts/build.js

const fs = require('fs') // node內建的文件系統模塊 const path = require('path') // node內建的路徑模塊 const zlib = require('zlib')

原创 04-Vue的響應式機制淺談

嘗試總結一下Vue的響應式機制。主要是core/observer裏面的代碼。如果能把這些代碼抽出來實現一個自己的簡單的響應式就好了,目標是一個能夠監聽數據變化的小型demo框架,監聽後把事件暴露出來,具體要做什麼讓監聽回調函數去做

原创 0x-Vue選項的合併策略core/util/options.js

隨着對Vue源碼的深入,越來越覺得它的結構還是清晰的。想想也是這樣的,如果不清晰,它們的開發人員也很難維護的呀。 衆所周知在創建Vue實例是需要傳遞一個對象的,我們稱之爲選項(options)。最終每個實例會有一個options來

原创 05-core

Vue源碼中core是Vue的核心,它實現了Vue的主體功能,是平臺無關的,不論是web或是wexx都要依賴它。它的目錄結構很清晰,如下 components global-api instance observer util

原创 04-Vue中的資源全局註冊函數

在Vue源碼中有三個類型被稱爲資源(asset),爲什麼這麼叫我就不知道了。這三個是component、filter和directive。在shared/constants.js中有一個常量數組ASSET_TYPES,就是這三個東

原创 03-做一個通讀Vue源碼的計劃吧

先梳理一下此時我的理解。 src目錄: core Vue的核心,專注於數據驅動,響應式 platform 各個平臺的移植,負責模板的真正渲染工作 compiler 編譯器,把字符串模板轉換成render函數 server 服務器

原创 04-Vue的響應式機制淺談-Watcher

core/observer/watcher.js Watcher的註釋很能說明它的意圖 /** * A watcher parses an expression, collects dependencies, * and fi

原创 我是怎麼給Element UI的ElTable表頭添加雙擊事件的

先介紹一個背景。需要雙擊表格的表頭切換到編輯表頭文本的模式。衆所周知eltable沒有暴露表頭的插槽,我們想定製表頭幾乎不可能。我想過兩種方案: 擴展eltable,使其支持表頭插槽 攔截表頭單擊事件,觸發雙擊事件 第一種顯然

原创 初探Vue單元測試

說是初探其實我也不知道嘗試多少次了,但是每次也就看看那本《Testing Vue.js Applications》,書看了很多遍,真正操作起來就又是另一番光景了。 jest 從簡單的node項目開始說起 npm init -y /

原创 element-ui的el-switch在修改狀態之前做判斷,根據判斷來確定是否修改狀態

先說需求,在改變開關el-switch狀態時需要先彈框讓用戶確認,然後再根據用戶的操作(是點擊了確定還是取消)來改變開關的狀態。做法如下 <el-switch :value="value" @input="handleIn

原创 編譯metabase

雖然我對Clojure和React都不是很瞭解。這不影響我對Lisp的真愛,更不會影響我本地編譯Metabase。 我用的是windows操作系統。 讓我來總結一下我的編譯過程吧。 下載Metabase源碼 前端環境

原创 安裝配置metabase

剛開始瞭解metabase,先把讓它跑起來吧。 運行環境是阿里雲服務器上安裝的Ubuntu 18.04.3 獲取Metabase wget https://downloads.metabase.com/v0.35.3/metaba

原创 element-ui el-table表頭向前拖拽時觸發排序事件解決方案

大致問題就如標題所述,在el-table中開啓了排序和拖拽(border)的時候,在拖拽表頭,往前拖拽調小該列的寬度時,會觸發排序事件。 解決思路很簡單: 在觸發排序事件時判斷是否來源於拖拽的副作用,如果是的話就不觸發。 在tab