国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

redux源碼閱讀--主模塊

testHs / 1800人閱讀

摘要:主模塊的入口模塊就是。主要就做兩件事引入個(gè)功能模塊,并掛載至同一個(gè)對(duì)象上,對(duì)外暴露。在非環(huán)境下壓縮代碼,給予警告。后續(xù)的源碼解讀和測試?yán)涌梢躁P(guān)注源碼解讀倉庫

主模塊

redux的入口模塊就是src/index.js。這個(gè)文件的代碼十分簡單。主要就做兩件事:

引入個(gè)功能模塊,并掛載至同一個(gè)對(duì)象上,對(duì)外暴露。

在非production環(huán)境下壓縮代碼,給予警告。

下面是模塊的源碼(只包含自己對(duì)代碼的理解,并不包含原注釋。)

// 引入createStore模塊,這個(gè)模塊就是`createStore`方法的實(shí)現(xiàn)
import createStore from "./createStore"
// 引入combineReducers模塊,這個(gè)模塊就是`combineReducers`方法的實(shí)現(xiàn)
import combineReducers from "./combineReducers"
// 引入bindActionCreators模塊,這個(gè)模塊就是`bindActionCreators`方法的實(shí)現(xiàn)
import bindActionCreators from "./bindActionCreators"
// 引入applyMiddleware模塊,這個(gè)模塊就是`applyMiddleware`方法的實(shí)現(xiàn)
import applyMiddleware from "./applyMiddleware"
// 引入compose模塊,這個(gè)模塊就是`compose`方法的實(shí)現(xiàn)
import compose from "./compose"
// warning在支持console對(duì)象的瀏覽器中可以看作是對(duì)console.error方法的一個(gè)便捷方法,否則就是一個(gè)Error的實(shí)例對(duì)象。
import warning from "./utils/warning"

// 這個(gè)函數(shù)唯一的作用就是:判斷代碼是不是處于壓縮模式下,如果代碼處于壓縮模式下,函數(shù)的名稱會(huì)改變,即
// isCrushed.name === "isCrushed" 為false
function isCrushed() {}

// 如果在非production模式下壓縮我們的js代碼,會(huì)拋出warning。
// if的判斷條件其實(shí)就是告訴我們,在production的模式下,一定要設(shè)置process.env.NODE_ENV為production
if (
  process.env.NODE_ENV !== "production" &&
  typeof isCrushed.name === "string" &&
  isCrushed.name !== "isCrushed"
) {
  warning(
    "You are currently using minified code outside of NODE_ENV === "production". " +
    "This means that you are running a slower development build of Redux. " +
    "You can use loose-envify (https://github.com/zertosh/loose-envify) for browserify " +
    "or DefinePlugin for webpack (http://stackoverflow.com/questions/30030031) " +
    "to ensure you have the correct code for your production build."
  )
}

// 這就是我們通常使用的redux的幾個(gè)常用的方法
export {
  createStore,
  combineReducers,
  bindActionCreators,
  applyMiddleware,
  compose
}

怎么設(shè)置環(huán)境變量NODE_ENV的值呢?對(duì)于我們使用webpack進(jìn)行開發(fā)的同學(xué)來說,我們可以通過如下方式設(shè)置。

plugins: [
  new webpack.DefinePlugin({
    "process.env": {
        NODE_ENV: JSON.stringify(process.env.NODE_ENV)
    }
  })
]

其中,JSON.stringify(process.env.NODE_ENV)是直接獲取的我們bash終端而言的。所以,在運(yùn)行我們的項(xiàng)目之前,我們必須確保制定了這個(gè)環(huán)境變量(注:NODE_ENV并不是不可變的,你也可以指定其他的名字,但是需要和自己項(xiàng)目中的獲取保持一致)

假設(shè)我們項(xiàng)目的啟動(dòng)腳本是yarn run start

Mac or Linux

可以通過下面兩種方式設(shè)置:

export NODE_ENV=production
yarn run start

# 或者

NODE_ENV=production yarn run start

Windows

可以通過下面這種方式指定:

set NODE_ENV=production yarn run start

這就是對(duì)redux源碼主模塊的一個(gè)整體解讀,水平有限,歡迎拍磚。后續(xù)的源碼解讀和測試?yán)涌梢躁P(guān)注:redux源碼解讀倉庫

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/89455.html

相關(guān)文章

  • redux源碼閱讀--基本概括

    摘要:總體概括是官方推薦的一個(gè)狀態(tài)管理庫。功能強(qiáng)大且代碼優(yōu)雅。在閱讀源碼的過程中可以看出,其只依賴這兩個(gè)庫的某幾個(gè)方法。從這里來看,可以看作是無依賴的一個(gè)庫。這就是對(duì)源碼的整體概括,水平有限,歡迎拍磚。后續(xù)的源碼解讀和測試?yán)涌梢躁P(guān)注源碼解讀倉庫 Redux總體概括 redux是react官方推薦的一個(gè)狀態(tài)管理庫。功能強(qiáng)大且代碼優(yōu)雅。從package.json文件中: dependencie...

    lauren_liuling 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 13 期

    摘要:前端支持同域才能發(fā)送本月初,瀏覽器發(fā)布。所謂攻擊,就是使用真實(shí)的進(jìn)行惡意行為。鏈接發(fā)布此次發(fā)布亮點(diǎn)包括類型以及對(duì)和映射對(duì)象類型中的符號(hào)和數(shù)字文字的支持。但直到看到了,總算覺得社區(qū)又進(jìn)了一步。微信已將對(duì)弈源碼和訓(xùn)練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發(fā)送 Cookie 本月初,F(xiàn)irefox 60 瀏覽器發(fā)布。它有一個(gè)很大的亮點(diǎn),就是它解決了 CSRF 攻擊。...

    Seay 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 13 期

    摘要:前端支持同域才能發(fā)送本月初,瀏覽器發(fā)布。所謂攻擊,就是使用真實(shí)的進(jìn)行惡意行為。鏈接發(fā)布此次發(fā)布亮點(diǎn)包括類型以及對(duì)和映射對(duì)象類型中的符號(hào)和數(shù)字文字的支持。但直到看到了,總算覺得社區(qū)又進(jìn)了一步。微信已將對(duì)弈源碼和訓(xùn)練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發(fā)送 Cookie 本月初,F(xiàn)irefox 60 瀏覽器發(fā)布。它有一個(gè)很大的亮點(diǎn),就是它解決了 CSRF 攻擊。...

    chnmagnus 評(píng)論0 收藏0
  • FCC 成都社區(qū)·技術(shù)周刊 第 13 期

    摘要:前端支持同域才能發(fā)送本月初,瀏覽器發(fā)布。所謂攻擊,就是使用真實(shí)的進(jìn)行惡意行為。鏈接發(fā)布此次發(fā)布亮點(diǎn)包括類型以及對(duì)和映射對(duì)象類型中的符號(hào)和數(shù)字文字的支持。但直到看到了,總算覺得社區(qū)又進(jìn)了一步。微信已將對(duì)弈源碼和訓(xùn)練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發(fā)送 Cookie 本月初,F(xiàn)irefox 60 瀏覽器發(fā)布。它有一個(gè)很大的亮點(diǎn),就是它解決了 CSRF 攻擊。...

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

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

0條評(píng)論

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