摘要:主模塊的入口模塊就是。主要就做兩件事引入個功能模塊,并掛載至同一個對象上,對外暴露。在非環境下壓縮代碼,給予警告。后續的源碼解讀和測試例子可以關注源碼解讀倉庫
主模塊
redux的入口模塊就是src/index.js。這個文件的代碼十分簡單。主要就做兩件事:
引入個功能模塊,并掛載至同一個對象上,對外暴露。
在非production環境下壓縮代碼,給予警告。
下面是模塊的源碼(只包含自己對代碼的理解,并不包含原注釋。)
// 引入createStore模塊,這個模塊就是`createStore`方法的實現 import createStore from "./createStore" // 引入combineReducers模塊,這個模塊就是`combineReducers`方法的實現 import combineReducers from "./combineReducers" // 引入bindActionCreators模塊,這個模塊就是`bindActionCreators`方法的實現 import bindActionCreators from "./bindActionCreators" // 引入applyMiddleware模塊,這個模塊就是`applyMiddleware`方法的實現 import applyMiddleware from "./applyMiddleware" // 引入compose模塊,這個模塊就是`compose`方法的實現 import compose from "./compose" // warning在支持console對象的瀏覽器中可以看作是對console.error方法的一個便捷方法,否則就是一個Error的實例對象。 import warning from "./utils/warning" // 這個函數唯一的作用就是:判斷代碼是不是處于壓縮模式下,如果代碼處于壓縮模式下,函數的名稱會改變,即 // isCrushed.name === "isCrushed" 為false function isCrushed() {} // 如果在非production模式下壓縮我們的js代碼,會拋出warning。 // if的判斷條件其實就是告訴我們,在production的模式下,一定要設置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的幾個常用的方法 export { createStore, combineReducers, bindActionCreators, applyMiddleware, compose }
怎么設置環境變量NODE_ENV的值呢?對于我們使用webpack進行開發的同學來說,我們可以通過如下方式設置。
plugins: [ new webpack.DefinePlugin({ "process.env": { NODE_ENV: JSON.stringify(process.env.NODE_ENV) } }) ]
其中,JSON.stringify(process.env.NODE_ENV)是直接獲取的我們bash終端而言的。所以,在運行我們的項目之前,我們必須確保制定了這個環境變量(注:NODE_ENV并不是不可變的,你也可以指定其他的名字,但是需要和自己項目中的獲取保持一致)
假設我們項目的啟動腳本是yarn run start
Mac or Linux
可以通過下面兩種方式設置:
export NODE_ENV=production yarn run start # 或者 NODE_ENV=production yarn run start
Windows
可以通過下面這種方式指定:
set NODE_ENV=production yarn run start
這就是對redux源碼主模塊的一個整體解讀,水平有限,歡迎拍磚。后續的源碼解讀和測試例子可以關注:redux源碼解讀倉庫
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/89455.html
摘要:總體概括是官方推薦的一個狀態管理庫。功能強大且代碼優雅。在閱讀源碼的過程中可以看出,其只依賴這兩個庫的某幾個方法。從這里來看,可以看作是無依賴的一個庫。這就是對源碼的整體概括,水平有限,歡迎拍磚。后續的源碼解讀和測試例子可以關注源碼解讀倉庫 Redux總體概括 redux是react官方推薦的一個狀態管理庫。功能強大且代碼優雅。從package.json文件中: dependencie...
摘要:前端支持同域才能發送本月初,瀏覽器發布。所謂攻擊,就是使用真實的進行惡意行為。鏈接發布此次發布亮點包括類型以及對和映射對象類型中的符號和數字文字的支持。但直到看到了,總算覺得社區又進了一步。微信已將對弈源碼和訓練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發送 Cookie 本月初,Firefox 60 瀏覽器發布。它有一個很大的亮點,就是它解決了 CSRF 攻擊。...
摘要:前端支持同域才能發送本月初,瀏覽器發布。所謂攻擊,就是使用真實的進行惡意行為。鏈接發布此次發布亮點包括類型以及對和映射對象類型中的符號和數字文字的支持。但直到看到了,總算覺得社區又進了一步。微信已將對弈源碼和訓練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發送 Cookie 本月初,Firefox 60 瀏覽器發布。它有一個很大的亮點,就是它解決了 CSRF 攻擊。...
摘要:前端支持同域才能發送本月初,瀏覽器發布。所謂攻擊,就是使用真實的進行惡意行為。鏈接發布此次發布亮點包括類型以及對和映射對象類型中的符號和數字文字的支持。但直到看到了,總算覺得社區又進了一步。微信已將對弈源碼和訓練好的模型開源。 【前端】 1、Firefox 60 支持同域才能發送 Cookie 本月初,Firefox 60 瀏覽器發布。它有一個很大的亮點,就是它解決了 CSRF 攻擊。...
閱讀 2298·2021-11-15 11:37
閱讀 2974·2021-09-01 10:41
閱讀 801·2019-12-27 11:58
閱讀 756·2019-08-30 15:54
閱讀 724·2019-08-30 13:52
閱讀 2939·2019-08-29 12:22
閱讀 1083·2019-08-28 18:27
閱讀 1464·2019-08-26 18:42