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

資訊專(zhuān)欄INFORMATION COLUMN

滾蛋吧!constant 君

huangjinnan / 2219人閱讀

摘要:引入,有效解決事件分發(fā)時(shí),事件類(lèi)型的一致性以及清晰邏輯性。其實(shí),細(xì)心思考,不難發(fā)現(xiàn),隨著項(xiàng)目增大。目錄將會(huì)隨著數(shù)據(jù)處理事件迅速膨脹。大家一直維護(hù)著這個(gè)事件命名機(jī)制,身心疲憊有木有。其實(shí),隨著項(xiàng)目增大,獨(dú)立出來(lái)的也會(huì)導(dǎo)致非常麻煩的維護(hù)問(wèn)題。

作者:Jogis
原文鏈接:https://github.com/yesvods/Blog/issues/4
轉(zhuǎn)載請(qǐng)注明原文鏈接以及作者信息

前言

事情經(jīng)過(guò)是這樣的,某個(gè)陽(yáng)光明媚的晚上,跟大多數(shù)人一樣,在MacBook前靜靜地寫(xiě)著redux/flux“優(yōu)美”的詩(shī)句。劇情急轉(zhuǎn)直下:

└── constants
    ├── comA.js
    ├── comB.js
    ├── comC.js
    ├── comD.js
    ├── comE.js
    └── index.js

index.js看起來(lái)是這樣的:

import * from "./a";
import * from "./b";
...

好像沒(méi)什么不對(duì)勁,然后看了一下a.js和b.js..

//a.js
export const OPEN_SIDEBAR = "OPEN_SIDEBAR";
export const CLOSE_SIDEBAR = "CLOSE_SIDEBAR";
export const HIDE_ITEM = "HIDE_ITEM";

//b.js
export const TOGGLE_LIST = "TOGGLE_LIST";
export const CHANGE_WIDTH = "CHANGE_WIDTH";
export const HIDE_ITEM = "HIDE_ITEM";

。。
。。。
。。。。

喵的,不同組件的constant又寫(xiě)重復(fù)了。于是開(kāi)始漫長(zhǎng)的改constant之旅:

名字改成 COMB_HIDE_ITEM

reducers/comB.js改幾個(gè)store/reducer

actions/comB.js改幾個(gè)action

慢著....
好像comC,comD,comE都有這個(gè)constant

問(wèn)題由來(lái)

咳咳,膝蓋中箭的有木有,站出來(lái)!其實(shí)constant這個(gè)常量在react界最先被flux框架采用,再后來(lái)著名的redux(star數(shù)已經(jīng)超過(guò)flux),也采用同樣方式定義action與reducer之間的事件分發(fā)機(jī)制。引入constant,有效解決事件分發(fā)時(shí),事件類(lèi)型的一致性以及清晰邏輯性。

constant的悲慘經(jīng)歷

其實(shí)一直以來(lái),業(yè)界津津樂(lè)道的是react的vm,flux/redux的狀態(tài)管理機(jī)制webpack開(kāi)發(fā)技巧以及插件使用react-router入門(mén) etc.

constant如此重要的事件結(jié)構(gòu)機(jī)制因?yàn)榭蓪⑿蕴停淮蠹液雎浴F鋵?shí),細(xì)心思考,不難發(fā)現(xiàn),隨著項(xiàng)目增大。constants目錄將會(huì)隨著數(shù)據(jù)處理事件迅速膨脹。大家一直維護(hù)著這個(gè)事件命名機(jī)制,身心疲憊有木有。

constant發(fā)展 constant由一開(kāi)始的flux風(fēng)格,配合facebook插件庫(kù)
export KeyMirror({
    ADD_TODO: null,
    COMPLETE_TODO: null,
    SET_VISIBILITY_FILTER: null
})
再到小項(xiàng)目維護(hù)的constant,非常容易導(dǎo)致重復(fù)
export const ADD_TODO = "ADD_TODO"
export const COMPLETE_TODO = "COMPLETE_TODO"
export const SET_VISIBILITY_FILTER = "SET_VISIBILITY_FILTER"

引用redux文檔的原話(huà):

Types should typically be defined as string constants.
 Once your app is large enough, 
 you may want to move them into a separate module.

看到剛剛LZ的經(jīng)歷,大家可以發(fā)現(xiàn)。其實(shí),constant隨著項(xiàng)目增大,獨(dú)立出來(lái)的constants也會(huì)導(dǎo)致非常麻煩的維護(hù)問(wèn)題。

constant的進(jìn)化

類(lèi)似constant-mirror、flux-constants的庫(kù)都耐不住寂寞了,站出來(lái)聲張正義。
但是,這些庫(kù)其中一個(gè)致命共同點(diǎn):

我們都依舊需要維護(hù)一套constants

不同組件使用的constants依舊有可能會(huì)因?yàn)橹貜?fù)導(dǎo)致不可預(yù)知的問(wèn)題

react-constant 簡(jiǎn)介

就一句話(huà):

Fuck Off constants.js

我們?cè)僖膊恍枰ゾS護(hù)任何的與constant有關(guān)的文件,也不需要到處去找constants/comA.jsreducer/comA.jsaction/comA.js一個(gè)個(gè)去改命名。

把所有constant相關(guān)文件去掉,react-constant為您打理得井井有條

自定義命名空間的constant,comA的HIDE_ITEM和comB的HIDE_ITEM可不一樣,自家用自家的,互不侵犯。

自動(dòng)生成偽uuid格式的constant,不用再為生成格式打個(gè)null

2kb大小(minified),任何地方的貼心小助手

單元測(cè)試,100% coverage

使用過(guò)程相當(dāng)簡(jiǎn)單,沒(méi)有任何多余的代碼 Usage Install
npm install react-constant --save
Import & Instance Webpack/Browserify
//ES5 version
var Constant = require("react-constant").Constant;
var constants = Constant("mynamespace");

//ES6 version
import { Constant } from "react-constant";
let constants = Constant("mynamespace");
browser
Just do it

reducer.js

function reducer(state, action){
  switch(action.type){
  case constants.of("ON"):
    //TODO
    break;
  case constants.of("OFF"):
    //TODO
    break;
  default: 
    return state;
  }
}

action.js

function toggleLight(flag){
  return {
    type: constants.ON,
    flag: flag
  }
}

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

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

相關(guān)文章

  • 滾蛋constant

    摘要:引入,有效解決事件分發(fā)時(shí),事件類(lèi)型的一致性以及清晰邏輯性。其實(shí),細(xì)心思考,不難發(fā)現(xiàn),隨著項(xiàng)目增大。目錄將會(huì)隨著數(shù)據(jù)處理事件迅速膨脹。大家一直維護(hù)著這個(gè)事件命名機(jī)制,身心疲憊有木有。其實(shí),隨著項(xiàng)目增大,獨(dú)立出來(lái)的也會(huì)導(dǎo)致非常麻煩的維護(hù)問(wèn)題。 作者:Jogis原文鏈接:https://github.com/yesvods/Blog/issues/4轉(zhuǎn)載請(qǐng)注明原文鏈接以及作者信息 前言 事情...

    ideaa 評(píng)論0 收藏0
  • 圖表碎碎念-- 填坑

    摘要:,之前在介紹的時(shí)候圖表君還是留了問(wèn)題。下邊說(shuō)幾句非技術(shù)的話(huà)題,技術(shù)的道路做久了,都會(huì)考慮到技術(shù)路線(xiàn)的問(wèn)題,作為一個(gè)年輕人圖表君并沒(méi)有太多的經(jīng)驗(yàn),但是上周看到了池建強(qiáng)老師的一篇文章,說(shuō)的挺好,在這里分享給大家。 大家周末好,天氣這是越來(lái)越冷了,冬季到來(lái)了。西安冬日的傳統(tǒng)霧霾又上演了,不過(guò)最近又限行了,希望能有點(diǎn)用處吧。好了今天不說(shuō)什么新的東西,把之前的坑給填一填吧。 上篇文章的最后給大家...

    goji 評(píng)論0 收藏0
  • 圖表聊Docker-開(kāi)篇

    摘要:圖表君聊開(kāi)篇今天是圖表君聊的第一篇,為什么會(huì)有這個(gè)系列呢容器技術(shù)出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過(guò)一些文章,圖表君的項(xiàng)目上也在使用。至于,圖表君沒(méi)試過(guò),官網(wǎng)有的教程,大家可以參考。上的官網(wǎng),安裝,然后跟著圖表君一起學(xué)習(xí)吧。 圖表君聊Docker-開(kāi)篇 今天是圖表君聊Docker的第一篇,為什么會(huì)有這個(gè)系列呢?容器技術(shù)Docker出現(xiàn)已經(jīng)有一段時(shí)間了,之前零零星星的也看過(guò)一些文章...

    z2xy 評(píng)論0 收藏0
  • 「前端早讀006」移動(dòng)開(kāi)發(fā)必備:那些玩轉(zhuǎn)H5的小技巧

    摘要:今日勵(lì)志語(yǔ)錄有志者自有千計(jì)萬(wàn)計(jì),無(wú)志者只感千難萬(wàn)難。三動(dòng)畫(huà)技術(shù)越來(lái)越不陌生,使用門(mén)檻也漸漸降低,而且動(dòng)畫(huà)還可以使用控制。掃一掃查看效果打開(kāi)微掃一掃關(guān)注早讀君,每天早晨為你推送前端知識(shí),度過(guò)擠地鐵坐公交的時(shí)光 今日勵(lì)志語(yǔ)錄有志者自有千計(jì)萬(wàn)計(jì),無(wú)志者只感千難萬(wàn)難。 文章原出處:騰訊ISUX 開(kāi)始閱讀之前你可以先掃一掃體驗(yàn)demoshowImg(https://segmentfault.co...

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

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

0條評(píng)論

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