摘要:我的入門到放棄之路最近看到很多相關(guān)的問題跟討論,越來越多的小伙伴喜歡這個框架了,同時也在看到了有些入門的小伙伴遇到了各種各樣的問題,本人也是框架使用都一枚,公司是騰訊阿里平安三巨頭合資的一家公司,分別上海深圳杭州北京廣州等多個分部,前端人員
我的react入門到放棄之路
最近看到很多react相關(guān)的問題跟討論,越來越多的小伙伴喜歡這個框架了,
同時也在看到了有些入門的小伙伴遇到了各種各樣的問題,本人也是react框架使用都一枚,
公司是騰訊、阿里、平安三巨頭合資的一家公司,分別上海、深圳、杭州、北京、廣州等多個分部,前端人員也有近100人,
框架也在統(tǒng)一往react靠齊,本人也在實際項目中應(yīng)用了蠻長一段時間,跟社區(qū)的很多新伙伴一樣,入坑的過程中,遇到過各種各樣的問題,
這里就不一一詳細吐槽了,吐下去,你們估計要罵我瘋了,重點就講講我們項目的一些整個框架結(jié)構(gòu)吧,
因為很多小伙伴在入門后,上手做項目時,都會苦腦于項目結(jié)構(gòu)如何構(gòu)建,便于后期維護、項目迭代等等的問題;
地址:github項目示例地址 ,如果覺得不錯,對你有幫助記得幫 轉(zhuǎn)發(fā) 和 star哦,感謝您的支持。
項目結(jié)構(gòu)示例:可以掃碼預(yù)覽哦
上面是項目的大體結(jié)構(gòu),有興趣的小伙伴,可以進入項目詳細看看,
1、首先我們會分不同的環(huán)境,寫不同的配置文件,便于結(jié)構(gòu)清晰,維護修改;
2、所有的項目組件都放在pages里,pages里再按項目模塊去劃分項目結(jié)構(gòu),actions、reducers內(nèi)也是如何,共用的組件放在components內(nèi),路由文件也是按項目模塊來劃分,不要全部放在一個文件內(nèi),找起來特別不方便,也不容易維護,
4、后面統(tǒng)一引入在一個入口文件內(nèi),對外輸出,
5、實現(xiàn)了按需加載,共用代碼提取,
6、該項目主要用到了
react、react-router、redux、redux-thunk、es6、babel、webpack、node、express、fetch等7、特別說明,window.devToolsExtension是redux的一個調(diào)試工具,在chrome瀏覽器應(yīng)用商店搜索redux后按裝,開發(fā)環(huán)境就能看到redux狀態(tài)的每一步變化了,便于調(diào)試提高開發(fā)效率;
8、當(dāng)然還有其他的,就不一一說明了,可進入項目細看,
/server/config.js var dev = require("./env/dev"), test = require("./env/test"), pre = require("./env/pre"), prd = require("./env/prd"); var defaults = { root: path.normalize(__dirname + "/..") }; module.exports = { dev: extend(dev, defaults), test: extend(test, defaults), pre: extend(pre, defaults), prd: extend(prd, defaults) }[process.env.DEPLOY_ENV || "dev"]; //DEPLOY_ENV 為 node服務(wù)端環(huán)境變量
路由文件也是按項目模塊來劃分 /src/pages/route.js import React from "react"; import ReactDOM from "react-dom"; import {Provider} from "react-redux"; import useBasename from "history/lib/useBasename"; import { hashHistory, browserHistory, Router } from "react-router"; import Store from "src/store"; import bridge from "src/utils/bridge" const rootRoute = { path: "/", component: require("../components/app/App"), childRoutes: [ require("./Home/route"),//引入不同模塊的路由 require("./Intro/route"), require("./Handler/route"), require("./Setting/route"), { path: "*", getComponent(location, cb) { require.ensure([], (require) => { cb(null, require("./NotFoundPage")); }); }, onEnter: () => bridge.doAction("setTitle", { title: "出錯啦" }) // onEnter: () => bridge.doAction("setWechat") } ], indexRoute:{ onEnter: (nextState, replace) => replace("/home") }, //默認重定向到->首頁 };
import {createStore,applyMiddleware} from "redux"; import thunk from "redux-thunk"; import reducers from "src/reducers"; function configStore (){ let createStoreWithMiddleware = applyMiddleware(thunk)(createStore); //dev環(huán)境開啟redux調(diào)試 let store = createStoreWithMiddleware(reducers,(__DEBUG__ && window.devToolsExtension ? window.devToolsExtension() : undefined)); return store; }; export default configStore();
地址:github項目示例地址 ,如果覺得不錯,對你有幫助記得幫 轉(zhuǎn)發(fā) 和 star哦,感謝您的支持。
想更詳細的了解我?還有更多疑惑?請猛戳這里吧,記得關(guān)注我們的公眾號哦!
作者:蘇南 - 首席填坑官
交流群:912594095,公眾號:honeyBadger8
本文原創(chuàng),著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系@IT·平頭哥聯(lián)盟獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明原鏈接及出處。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83808.html
摘要:導(dǎo)言最近發(fā)掘了一個特別的網(wǎng)頁小游戲。于是第二天我就繼續(xù)沉迷,隨著一陣抽搐,這個游戲索然無味之后,冷靜的我決定用和開發(fā)出一個低配版。我的低配版在交互操作比較高的情況下,還是比較卡的,沒有原網(wǎng)頁的流暢性,可能后續(xù)考慮版本實現(xiàn)。 導(dǎo)言 最近發(fā)掘了一個特別happy的網(wǎng)頁小游戲--MikuTap。打開之后沉迷了一下午,導(dǎo)致開發(fā)工作沒做完差點就要刪庫跑路了,還好boss瞥了我一眼就沒下文了。于是...
摘要:服務(wù)層這一層有點東西了,算是整個框架的核心,如果你跟敖丙一樣以后都是從事后端開發(fā)的話,我們基本上整個技術(shù)生涯,大部分時間都在跟這一層的技術(shù)棧打交道了,各種琳瑯滿目的中間件,計算機基礎(chǔ)知識,操作,算法數(shù)據(jù)結(jié)構(gòu),架構(gòu)框架,研發(fā)工具等等。 前言 自學(xué)/學(xué)習(xí)路線這樣的一期我想寫很久了,因為一直想寫的...
閱讀 2967·2021-11-24 09:39
閱讀 3643·2021-11-22 13:54
閱讀 3443·2021-11-16 11:45
閱讀 2483·2021-09-09 09:33
閱讀 3229·2019-08-30 15:55
閱讀 1317·2019-08-29 15:40
閱讀 951·2019-08-29 15:19
閱讀 3443·2019-08-29 15:14