Index.jsgithub: 地址
gitbook: 地址
看一個(gè)代碼的時(shí)候首先當(dāng)然是從他的入口文件開始看起,所以第一份代碼我們看的是/index.js文件
開始打開index.js文件,代碼只有28行,其中包含了一個(gè)camelCase函數(shù)(看函數(shù)名就知道這是個(gè)給名稱進(jìn)行駝峰命名法的函數(shù)),一個(gè)req變量,以及這個(gè)的變量操作和export操作
在這個(gè)文件里面我首先查了require.context()這個(gè)函數(shù)的使用,可以參考這里,以及exports和module.exports的區(qū)別,可以參考這里,這里是一些鋪墊,下面進(jìn)入正題
通過上面兩個(gè)鋪墊,我們知道了req這個(gè)變量是用來循環(huán)拋出組件的一個(gè)對(duì)象,并且還拋出了每一個(gè)組件的樣式文件
// index.js function camelCase(name) { return name.charAt(0).toUpperCase() + name.slice(1).replace(/-(w)/g, (m, n) => { return n.toUpperCase(); }); } // 拋出樣式 這個(gè)正則是匹配當(dāng)前目錄下的所有的/style/index.tsx文件 const req = require.context("./components", true, /^./[^_][w-]+/style/index.tsx?$/); req.keys().forEach((mod) => { let v = req(mod); if (v && v.default) { v = v.default; } // 拋出組件 這個(gè)正則是匹配當(dāng)前目錄下的素有index.tsx文件 const match = mod.match(/^./([^_][w-]+)/index.tsx?$/); if (match && match[1]) { if (match[1] === "message" || match[1] === "notification") { // message & notification should not be capitalized exports[match[1]] = v; } else { exports[camelCase(match[1])] = v; } } }); module.exports = require("./components");
但是最后不知道為甚還需要加上對(duì)吼那一句module.exports = require("./components");
既然上面都已經(jīng)拋出,為什么這里還需要再次拋出,不過好像是跟什么環(huán)境和打包之后的一些操作有關(guān),所以這里一兩次拋出。這個(gè)地方還需要向大家請(qǐng)教。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/88981.html
摘要:結(jié)構(gòu)項(xiàng)目結(jié)構(gòu)如下,負(fù)責(zé)外層封裝,負(fù)責(zé)事件綁定與渲染控制。節(jié)點(diǎn)通過決定事件綁定情況,即通過屬性綁定事件情況,事件控制組件的屬性,這里就不詳細(xì)說了。為隱藏狀態(tài)下的添加的,并包裹懶加載組件。 引言 antd的Tooltip組件在react-componment/trigger的基礎(chǔ)上進(jìn)行封裝,而組件Popover和Popconfirm是使用Tooltip組件的進(jìn)行pop,在react-com...
摘要:作為開發(fā)當(dāng)中使用相對(duì)頻繁的一個(gè)組件,其實(shí)現(xiàn)也很簡單,但是其中比較麻煩的一部分是字體的制作,可以參看這篇文章。接口中的種屬性方法,不屬于上述六種。為事件屬性,可以大家也可以根據(jù)上面所提供的制作的方法和這樣的方式來實(shí)現(xiàn)自己的組件 Icon icon作為開發(fā)當(dāng)中使用相對(duì)頻繁的一個(gè)組件,其實(shí)現(xiàn)也很簡單,但是其中比較麻煩的一部分是icon字體的制作,可以參看這篇文章。 Antd的Icon組件使用...
摘要:這個(gè)組件是一個(gè)圖釘組件,使用的布局,讓組件固定在窗口的某一個(gè)位置上,并且可以在到達(dá)指定位置的時(shí)候才去固定。 Affix 這個(gè)組件是一個(gè)圖釘組件,使用的fixed布局,讓組件固定在窗口的某一個(gè)位置上,并且可以在到達(dá)指定位置的時(shí)候才去固定。 AffixProps 還是老樣子,看一個(gè)組件首先我們先來看看他可以傳入什么參數(shù) // Affix export interface Affix...
Button Button包括了兩個(gè)組件,Button與ButtonGroup。 ButtonProps 看一個(gè)組件首先看的是他的傳參也就是props,所以我們這里先看Button組件的ButtonProps export type ButtonType = primary | ghost | dashed | danger; export type ButtonShape = circl...
摘要:引言看過源碼的都知道,其實(shí)是在一組組件的基礎(chǔ)上進(jìn)行了一層封裝,本文主要解讀組件的基礎(chǔ)組件,另外會(huì)略過模式下的代碼。解讀源碼首先要從自己最常用的或者感興趣的入手,首先組件最主要的還是在這個(gè)裝飾器入手。 引言 看過antd源碼的都知道,antd其實(shí)是在一組react-componment組件的基礎(chǔ)上進(jìn)行了一層ui封裝,本文主要解讀antd組件Form的基礎(chǔ)組件react-componmen...
閱讀 1250·2023-04-26 01:38
閱讀 1462·2021-11-15 11:39
閱讀 3251·2021-09-22 15:43
閱讀 2638·2019-08-30 15:55
閱讀 2047·2019-08-30 14:17
閱讀 2851·2019-08-29 14:16
閱讀 3062·2019-08-26 18:36
閱讀 2607·2019-08-26 12:19