成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

vue源碼解讀-構(gòu)造函數(shù)

KunMinX / 2080人閱讀

摘要:此文件主要實(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

相關(guān)文章

  • Vue源碼解讀(1)--src/core/index.js 入口文件

    摘要:生產(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 }...

    tangr206 評(píng)論0 收藏0
  • vue源碼解讀-目錄結(jié)構(gòu)

    摘要:目錄結(jié)構(gòu)構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)鱼^子別名配置 目錄結(jié)構(gòu) ├── scripts ------------------------------- 構(gòu)建相關(guān)的文件,一般情況下我們不需要?jiǎng)萤? ├── git-hooks ------------------------- git鉤子│ ├── alias.js -------------------------- 別名配...

    philadelphia 評(píng)論0 收藏0
  • (解析)vue源碼解讀

    摘要:前言為什么要做源碼解讀我們新到一個(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: 我們完全...

    mingde 評(píng)論0 收藏0
  • Vue 2.0】核心源碼解讀 -- 不定期更新

    摘要:觀(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...

    sunsmell 評(píng)論0 收藏0
  • vuex 2.0源碼解讀(一)

    摘要:簡(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)什么...

    luqiuwen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<