你们好,这里是@IT·平头哥联盟,我是首席填坑官——苏南(South·Su),今天要给你们分享的是<<个人react入门到放弃之路>>,这篇博客本来是从17年初写的,一直没有在掘金发布,但愿今天不会太晚,望各位老司机勿喷!前端
上图能够找亮点,留言答对有奖哦~~~~node
最近看到不少react相关的问题跟讨论,愈来愈多的小伙伴喜欢这个框架了, 同时也在看到了有些入门的小伙伴遇到了各类各样的问题,本人也是react框架使用都一枚, 公司是腾讯、阿里、平安三巨头合资的一家公司,分别上海、深圳、杭州、北京、广州等多个分部,前端人员也有近100人, 框架也在统一往react靠齐,本人也在实际项目中应用了蛮长一段时间,跟社区的不少新伙伴同样,入坑的过程当中,遇到过各类各样的问题, 这里就不一一详细吐槽了,吐下去,大家估计要骂我疯了,重点就讲讲咱们项目的一些整个框架结构吧,
react
由于不少小伙伴在入门后,上手作项目时,都会苦脑于项目结构如何构建,便于后期维护、项目迭代等等的问题;webpack
地址:[github项目示例地址] ,若是以为不错,对你有帮助记得帮 转发 和 star哦,感谢您的支持。git
项目结构示例:
能够扫码预览哦
上面是项目的大致结构,有兴趣的小伙伴,能够进入项目详细看看,下面重点列出一些细节特性:es6
一、首先咱们会分不一样的环境,写不一样的配置文件,便于结构清晰,维护修改;
/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服务端环境变量
复制代码
二、全部的项目组件都放在pages里,pages里再按项目模块去划分项目结构,actions、reducers内也是如何,共用的组件放在components内,github
三、路由文件也是按项目模块来划分,不要所有放在一个文件内,找起来特别不方便,也不容易维护,
四、后面统一引入在一个入口文件内,对外输出,
web
/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') }, //默认重定向到->首页
};
复制代码
五、实现了按需加载,共用代码提取,
六、该项目主要用到了 react、react-router、redux、redux-thunk、es六、babel、webpack、node、express、fetch等
七、特别说明,window.devToolsExtension是redux的一个调试工具,在chrome浏览器应用商店搜索redux后按装,开发环境就能看到redux状态的每一步变化了,便于调试提升开发效率;
import {createStore,applyMiddleware} from "redux";
import thunk from "redux-thunk";
import reducers from "src/reducers";
function configStore (){
let createStoreWithMiddleware = applyMiddleware(thunk)(createStore);
//dev环境开启redux调试
let store = createStoreWithMiddleware(reducers,(__DEBUG__ && window.devToolsExtension ? window.devToolsExtension() : undefined));
return store;
};
export default configStore();
复制代码
八、固然还有其余的,就不一一说明了,可进入项目细看,
chrome
地址:[github项目示例地址] ,若是以为不错,对你有帮助记得帮 转发 和 star哦,感谢您的支持。
express
最近才在开始尝试写博客,新手上路中,若是文章中有不对之处,烦请各位大神斧正。若是你以为这篇文章对你有所帮助,请记得点赞哦~(^_^)
想更详细的了解我?还有更多疑惑?关注下方公众号,直接向做者交流吧!
做者:苏南 -首席填坑官
交流群:912594095,公众号: honeyBadger8
本文原创,著做权归做者全部。商业转载请联系 @IT·平头哥联盟得到受权,非商业转载请注明原连接及出处。