博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分享一个react单页应用脚手架
阅读量:6254 次
发布时间:2019-06-22

本文共 1305 字,大约阅读时间需要 4 分钟。

项目技术栈:react16+react-router4+antd-mobile2+mobx+axios+webpack4

项目github地址:
项目演示:

现在比较流行的react脚手架应该是create-react-app,由Facebook官方开发。我们可以发现用create-react-app生成的项目的目录结构是比较简洁的:

图片描述

需要我们自己根据实际的项目情况去创建对应的目录结构。网上关于react项目的目录结构也很多,那应该怎么合理地去组织我们的目录结构呢?

为了处理这个问题,我参考了一些react项目,然后把它们的优点结合起来,最后写了这个脚手架。

lt-self-cli是参照create-react-app的源码,去掉了其中关于下载模块的代码。用来生成我们的项目。

我们首先全局安装一下这个模块:

打开Windows PowerShell(mac的话打开终端),然后执行npm install -g lt-self-cli
图片描述
然后就可以在自己的工作目录使用命令 lt-self-cli myapp
图片描述
工作目录下就会生成一个叫myapp的文件夹,我们用cd myapp进入该目录
图片描述
进入myapp目录后使用npm install安装模块,使用npm start就可以启动项目了。

我们先看看这个项目的目录结构:

图片描述

config目录里面存放的是webpack各个环境的编译文件

src目录里面是我们主要的开发文件
components目录存放的是containers引用的组件
containers目录存放的是react-router的路由组件
router目录存放的是项目的路由配置
static目录存放的是项目的静态文件
stores目录存放的是项目的mobx文件
utils目录里面是一些工具函数,目前写了一个axios的封装

使用npm run build进行编译,编译后的目录:

图片描述

基本的生产配置都加上了,比如:

css文件使用了autoprefixer自动添加浏览器私有前缀并用mini-css-extract-plugin提取出来,使用link标签加载。
react-router做了按需加载,把新增路由添加到router配置即可。
webpack-bundle-analyzer用于查看打包之后各个模块的体积大小,在webpack生产配置文件build.js中的plugins里面加上new BundleAnalyzerPlugin()即可使用。

目前该项目使用的是mobx作为数据管理方案,mobx使用起来比redux简单,开发起来比较快,没有那么多的模板代码。

而redux用起来就麻烦了,除了要写一堆模板代码之外,还需要引入redux-thunk或者redux-saga去处理异步问题。然后为了优化性能还会引入immutable.js。
当然redux比起mobx是更加符合react的思想,而且现在多数项目都是react+redux的模式。所以后面会用redux再写一版。

该项目会持续更新,有任何问题都可以指出。觉得有帮助的可以在github上点个Star,谢谢♪(・ω・)ノ。

转载地址:http://rzfsa.baihongyu.com/

你可能感兴趣的文章
扫码枪关闭常亮模式_生意好时最怕收银出故障,这几个扫码枪的常见问题你一定要知道...
查看>>
如何双击打开vivado工程_利用TCL重建vivado工程
查看>>
mysql的引双向链表_Mysql高手系列 - 第22篇:mysql索引原理详解(高手必备技能)
查看>>
mysql in 查询改成_MySQL not in嵌套查询改写成外连接方式
查看>>
mysql community安装_MySQL Community Server 5.7安装详细步骤
查看>>
python处理多行字符串_python多行字符串
查看>>
java冒泡排序_用java写个冒泡排序?
查看>>
linux 开发java_做开发环境的操作系统是 Linux 好还是 Windows 好?
查看>>
java正文提取_Java网页正文提取工具
查看>>
blocked java_使用jstack排查多线程死锁、阻塞
查看>>
centos7 nohup无法保持_CentOS 不间断会话(ssh关闭后如何保证程序继续运行)(nohup和screen)...
查看>>
显示图片java代码_用于显示下载或是显示图片的一段代码
查看>>
java scrip_js java scrip基本语法
查看>>
java 加上天数_java日期时间加上天数 | 学步园
查看>>
java 爬楼梯算法_9.1 爬楼梯
查看>>
java多态 动态绑定_Java JVM 多态(动态绑定)
查看>>
jpa 去重_JPA 查询Distinct Join条件示例
查看>>
mysql date 索引性能_【转】MYSQL数据库时间字段INT,TIMESTAMP,DATETIME性能效率比较
查看>>
java 加密解密算法_用JAVA设计一个简单的加密、解密算法,用该算法来实现对数据的加密、解密...
查看>>
java 窗口最小化_Java使窗口最小化为图标
查看>>