摘要:此文件主要實(shí)現(xiàn)了初始化引入模塊什么時(shí)候需要把代碼放到包呢,個(gè)人感覺(jué)如果代碼能夠復(fù)用而且脫離項(xiàng)目能夠應(yīng)用到另一個(gè)項(xiàng)目可以考慮放到構(gòu)造函數(shù)大家在這里可能會(huì)覺(jué)得,既然選擇打包工具,那為啥不選擇呢,應(yīng)該是和后邊需要定義靜態(tài)方法和屬性有關(guān),語(yǔ)法暫不支
src/core/instance/index.js
此文件主要實(shí)現(xiàn)了Vue初始化
// 引入模塊 import { initMixin } from "./init" import { stateMixin } from "./state" import { renderMixin } from "./render" import { eventsMixin } from "./events" import { lifecycleMixin } from "./lifecycle" import { warn } from "../util/index" // 什么時(shí)候需要把代碼放到util包呢,個(gè)人感覺(jué)如果代碼能夠復(fù)用而且脫離項(xiàng)目能夠應(yīng)用到另一個(gè)項(xiàng)目可以考慮放到util /* 構(gòu)造函數(shù) 大家在這里可能會(huì)覺(jué)得,既然選擇打包工具,那為啥不選擇class呢,應(yīng)該是和后邊需要定義Vue靜態(tài)方法和屬性有關(guān), es6語(yǔ)法暫不支持對(duì)靜態(tài)屬性的定義 */ function Vue (options) { // this instanceof Vue 可以判斷函數(shù)是不是 new關(guān)鍵字調(diào)用 if (process.env.NODE_ENV !== "production" && !(this instanceof Vue) ) { // 封裝好的警告方法 console.warn(); warn("Vue is a constructor and should be called with the `new` keyword") } // 調(diào)用初始化方法 this._init(options) } /* Mixin 混入的意思在這里大家可以理解成擴(kuò)展 以下方法在vue prototype 中擴(kuò)展方法 這里通過(guò)不同的函數(shù)來(lái)給vue prototye添加不同的功能, 這種代碼拆分思想很值得借鑒,尤其是在寫(xiě)復(fù)雜邏輯, 將復(fù)雜邏輯拆分成不同的功能,這樣代碼清晰方便維護(hù) */ // Vue 初始化 簡(jiǎn)言之就是 合并配置,初始化生命周期,初始化事件中心,初始化渲染,初始化 data、props、computed、watcher initMixin(Vue) // 在這里state可以理解為 在vue原型vue.prototype擴(kuò)展了vue實(shí)例中$date,$props,$set,$delete,$watch stateMixin(Vue) // 對(duì)事件的擴(kuò)展 包括$on,$once,$emit,$off 應(yīng)用的設(shè)計(jì)模式為觀(guān)察者模式 eventsMixin(Vue) /* 擴(kuò)展生命周期方法 Vue.prototype._update Vue.prototype.$forceUpdate 強(qiáng)制更新 Vue.prototype.$destroy 銷(xiāo)毀 */ lifecycleMixin(Vue) /* Vue.prototype.$nextTick = function (fn: Function) {} Vue.prototype._render = function (): VNode {} */ renderMixin(Vue) export default Vue
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108743.html
摘要:生產(chǎn)版本設(shè)為可以啟用檢查。只適用于開(kāi)發(fā)模式和支持的瀏覽器上指定組件的渲染和觀(guān)察期間未捕獲錯(cuò)誤的處理函數(shù)為的運(yùn)行時(shí)警告賦予一個(gè)自定義處理函數(shù)。注意這只會(huì)在開(kāi)發(fā)者環(huán)境下生效,在生產(chǎn)環(huán)境下它會(huì)被忽略。 Vue源碼主入口:src/core/index.js import Vue from ./instance/index // 引用Vue構(gòu)造器 import { initGlobalAPI }...
摘要:目錄結(jié)構(gòu)構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)鱼^子別名配置 目錄結(jié)構(gòu) ├── scripts ------------------------------- 構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)萤? ├── git-hooks ------------------------- git鉤子│ ├── alias.js -------------------------- 別名配...
摘要:前言為什么要做源碼解讀我們新到一個(gè)環(huán)境,第一件事情就是熟悉環(huán)境熟悉項(xiàng)目,這個(gè)很考驗(yàn)閱讀源碼的能力以及耐心。構(gòu)造函數(shù)拉到最下面,導(dǎo)出的是一個(gè)構(gòu)造函數(shù)。 前言 A: 為什么要做源碼解讀?Q: 我們新到一個(gè)環(huán)境,第一件事情就是熟悉環(huán)境熟悉項(xiàng)目,這個(gè)很考驗(yàn)閱讀源碼的能力以及耐心。vue是個(gè)很好的庫(kù),知名度高,對(duì)js的學(xué)習(xí)具有向上性,所以搞清楚邏輯是有好處的。A: 閱讀源碼的程度?Q: 我們完全...
摘要:觀(guān)察員由模板解析指令創(chuàng)建的觀(guān)察員負(fù)責(zé)模板中的更新視圖操作。觀(guān)察員種類(lèi)目前了解情況來(lái)看主要分三類(lèi)視圖指令的計(jì)算屬性的用戶(hù)自定義的 介紹 關(guān)于 Vue.js 的原理一直以來(lái)都是一個(gè)話(huà)題。經(jīng)過(guò)幾天的源碼學(xué)習(xí)和資料介紹,我將一些個(gè)人理解的經(jīng)驗(yàn)給寫(xiě)下來(lái),希望能夠與大家共勉。 附上GITHUB源碼地址, 如果有任何不解 可以在 文章下面提出或者寫(xiě)下issue, 方便大家回答和學(xué)習(xí), 有興趣可以St...
摘要:簡(jiǎn)單點(diǎn)說(shuō),當(dāng)你使用構(gòu)造函數(shù),它實(shí)際上做了這么幾件事,首先定義給實(shí)例定義一些內(nèi)部屬性,之后就是綁定和的上下文對(duì)象永遠(yuǎn)是實(shí)例上,之后根據(jù)傳入的充實(shí)內(nèi)部狀態(tài)等等。函數(shù)執(zhí)行的結(jié)果是返回一個(gè)對(duì)象,屬性名對(duì)應(yīng)于傳入的對(duì)象或者數(shù)組元素。 轉(zhuǎn)載請(qǐng)注明出處 https://segmentfault.com/a/11... vuex2.0 和 vuex1.x 相比,API改變的還是很多的,但基本思想沒(méi)什么...
閱讀 3104·2023-04-25 20:43
閱讀 1736·2021-09-30 09:54
閱讀 1604·2021-09-24 09:47
閱讀 2895·2021-09-06 15:02
閱讀 3528·2021-02-22 17:09
閱讀 1250·2019-08-30 15:53
閱讀 1452·2019-08-29 17:04
閱讀 1974·2019-08-28 18:22