日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
程序員是如何閱讀源碼的

最近寫了很多源碼分析相關(guān)的文章,React、Vue 都有,想把我閱讀源碼的一些心得分享給大家。

創(chuàng)新互聯(lián)公司長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為泗洪企業(yè)提供專業(yè)的成都做網(wǎng)站、網(wǎng)站設(shè)計,泗洪網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

React

  • React 架構(gòu)的演變 - 從同步到異步
  • React 架構(gòu)的演變 - 從遞歸到循環(huán)
  • React 架構(gòu)的演變 - 更新機(jī)制
  • React 架構(gòu)的演變 - Hooks 的實現(xiàn)

Vue

  • Vue 模板編譯原理
  • Vue3 模板編譯優(yōu)化
  • Vue3 Teleport 組件的實踐及原理

快速調(diào)試源碼

說到看源碼,很多人都有個誤區(qū),覺得看源碼必須要到 github 上把完整的代碼 clone 下來,認(rèn)為只有把完整的代碼下載下來,才能開始愉快的學(xué)習(xí)。

調(diào)試 React

這里我們先拿 React 舉例,把源碼 clone 下之后,整個人都懵逼了。

 
 
 
 
  1. git clone git@github.com:facebook/react.git

React 源碼目錄解構(gòu)

一般這時候會開始在網(wǎng)上搜文章,如何調(diào)試 React 源碼。但是這種大型項目的構(gòu)建流程較為復(fù)雜,如果只是想簡單了解源碼,不需要去了解這些復(fù)雜的東西。這里教大家一個簡單的方案,直接到 CDN 上下載官方編譯好了的開發(fā)版源碼(https://cdn.jsdelivr.net/npm/react@17.0.1/umd/react.development.js),中間的版本號可以替換成任何想看的版本。

react

有了源碼之后,我們要開始寫 Demo,這時候如果自己搭一個項目就比較麻煩了,因為寫 React 就會有 jsx,就需要 babel 進(jìn)行 jsx 轉(zhuǎn)義,這里推薦使用官方腳手架:create-react-app。

 
 
 
 
  1. npx create-react-app react-demo
  2. cd react-demo

這里我們需要稍微修改下 webpack 的配置,通過 react-app-rewired 修改配置。

 
 
 
 
  1. npm install react-app-rewired --save-dev

修改package.json

然后,在文件夾內(nèi)新建 config-overrides.js 文件,配置 webpack 的 externals 屬性,讓項目內(nèi)的 react、react-dom 都能夠走 window 下掛載的對象。

 
 
 
 
  1. /* config-overrides.js */
  2. module.exports = function override(config, env) {
  3.   // do stuff with the webpack config...
  4.   config.externals = {
  5.     'react': 'window.React',
  6.     'react-dom': 'window.ReactDOM',
  7.   };
  8.   return config;
  9. }

接下就是將 react 掛載到 window 上,把我們之前在 CDN 上下載的 develope 版的源碼放到 public 目錄,然后在 public/index.html 中引入源碼。

全局引入 react

然后通過 npm run start 正常啟動項目就好了。

React App

接下來就能愉快的搞事情,可以在 Chrome 的 Sources 面板里面開始 debug 之旅了,當(dāng)然如果你更喜歡 console.log ,也可以在 public/react.js 里打上心愛的 log 。

Sources

調(diào)試 Vue

調(diào)試 Vue 比 React 更加簡單,因為 Vue 支持瀏覽器進(jìn)行模板編譯。我們同樣在 CDN 直接下載已經(jīng)編譯好的完整開發(fā)版(https://www.jsdelivr.com/package/npm/vue?version=3.0.4&path=dist)。

image-20201205232605725

然后,新建一個 vue.html ,把文件丟到本地的 http 服務(wù)里面。

 
 
 
 
  1.   
  2.   Vue3 Demo
  3.   
  •   
  •   
  •  我們現(xiàn)在已經(jīng)可以直接開始調(diào)試 Vue3 的源碼了,就是這么簡單粗暴。當(dāng)然,如果想通過 .vue 的方式寫模板,還是得參照上面 React 提到的那種方式。

    找準(zhǔn)切入點(diǎn)

    有了調(diào)試源碼的方法,我們還需要找準(zhǔn)一個切入點(diǎn),不能為了看源碼而看源碼。所謂的切入點(diǎn)就是一個個小問題,比如我想要弄懂 Vue 的模板是如何轉(zhuǎn)變成虛擬 DOM 的,我們可以先在官方文檔查找資料,看有沒有相關(guān)說明,幸運(yùn)的是,Vue 官方文檔在渲染函數(shù)-模板編譯部分剛好這個問題有相關(guān)說明。

    Vue官方文檔

    文檔中提到了 Vue.compile ,然后我們就可以在源碼中搜索這個 Api 開始進(jìn)行調(diào)試。這就是帶著目的去看源碼,我們只有帶著問題出發(fā)的時候,才會具有更高的效率。

    除了帶著問題出發(fā),還可以參考其他優(yōu)秀的文章,集千萬網(wǎng)友的智慧于一體。當(dāng)然這也是個雙刃劍,因為你可能會搜到一些辣雞文章,反而降低你的效率。而且,框架在迭代的過程中,變化會很多,可能你學(xué)習(xí)的是 React 16 的源碼,搜到的 React 15 相關(guān)的文章,然后你會花很多時間和精力想去弄清楚為什么你看到的和別人寫的為什么不一樣,到底是你的打開方式不對,還是作者有筆誤。

    同時,還有一些文章喜歡畫一些吸引眼球的架構(gòu)圖(我本人),看完你會直呼內(nèi)行,但是這些架構(gòu)圖大多是站在作者個人的角度上的畫的,很可能和你之前的角度不一樣,又需要花一些時間來理解他的思路。如果,我們把龐大的項目拆分成一個個小小的問題之后,逐個擊破,這時候再從全局的角度來思考整個框架的設(shè)計思路以及運(yùn)行邏輯,就能事半功倍。

    強(qiáng)制輸出

    有輸出的學(xué)習(xí)才是學(xué)習(xí),在閱讀源碼的過程中,一定得邊看邊思考,思考的過程中,還需要形成文字記錄,如果只是一直盯著代碼看,很難理解。

    我在看源碼的過程中,會一直思考,怎么樣才能將這部分講給別人聽,是不是能寫個 Demo 之類的,讓大家跟著我的思路來學(xué)習(xí)。這樣即讓自己學(xué)懂了,又可以將學(xué)習(xí)的過程分享出來幫助到其他人,何樂而不為。


    當(dāng)前題目:程序員是如何閱讀源碼的
    新聞來源:http://m.5511xx.com/article/cdciioh.html