引言

两个月前用 Vue 全家桶实现过一次 酷狗音乐,最近又用 React 全家桶重构了下,最终成果和 Vue的实现基本一致,放个图:

手机预览戳 Vue 版本, React 版本。

demo 选择

本来想用 React 全家桶重新选个项目,但是没有找到合适的,最终就重构了下,因为这个项目难度适中,非常适合练手。

  • 接近 10 个单页,内容不多不少,需要 router
  • 音乐播放作为全局组件,数据全局共享增删改,需要 redux, vuex
  • 好几个公共组件,可以封装复用

项目源码在 这里,欢迎大家 star、fork

项目对比

我从根目录开始分析,左边 vue 右边 react

根目录

src 目录

这里有几个区别:

  • React 版本并没有 router 文件,因为它支持 pathcomponent 属性,来定位要渲染的组件,就像这样:

    Vue router 似乎并没有提供 pathcomponent API ,所以必须要到 Router 配置里去读取 pathcomponent 属性。

  • React 也没有 mixins, 因为用 HOC 取代了 mixins以我放在 components/HOC/index.js 里的代码为例:

    而且,你也可以在里面加上生命周期钩子等等,实际上,React 之前也是采用 mixins 实现的,不过后来改了。

  • 一个 .vue 组件对应 React 中三个文件?在很多情况下,是这样子。Vue 的行为结构表现分离,很明显,而 React 的分离虽然不是很明显,但实际上也是有的。以 App.vue 为例

    • App.vue 里的 style 对应 React 里的 App.less ,毫无疑问
    • App.vue 里的 templateprops 对应 React 里的 App.jsReact 称为 Presentational Components,一般只有一个 render 方法 return html, 譬如:

  • App.vue 里剩余的部分,包括 ajax, mapState, 状态的变更,以及生命周期钩子等等,都是对应 React 里的 AppContainer.jsReact 称为 Container Components. 如图:

实际上, AppContainer.js 负责行为逻辑,而 App.js 负责结构展示, App.less 负责样式表现,依旧是 行为/结构/表现 的分离。只不过与 Vue 稍有不同而已。这一点上,React 多费些脑力和胶水代码。

Vuex 和 redux 目录

这里跟我的实现有关系,redux 可能是比 Vuex 麻烦些,但不至于图示如此夸张。因为我重构的时候改了逻辑。

selectors

selectorsVue 中的 getters 有相似,但底层原理不同。举个例子,我们如果要从一个巨量的 array 里找到某个数据,比较耗性能怎么办?很明显可以对参数做个缓存,如果查询 id 和上一次一样,就返回上次的结果,不查询了。selectors 做的就是这个事。

actions

ReactactionsVuex 中的 actions 类似,都是发送指令,但不操作数据。

reducers

actions 发送指令,最终会到 reducers 里合并数据,与 Vue 中的 mutations 类似。

如果你注意的话,就会发现,reducers 里合并数据总是返回一个新对象。Vuex 中,我们是直接修改 state 的数据的。

这里其实牵涉到了 VueReact 中的一个大不同。

总结

总体的目录和架构是类似的,不过具体用起来差别还不小。

技术栈的广度

Vue 全家桶只要加上 VuexVue-router 就可以了,而 React 在读完 redux, react-redux, react-router 文档之后,会发现他们还拆分、引出了不少东西,譬如 reselect, redux-thunk 等等,并且 redux, reselect还不是局限于 React 的。

API

实践过程中,发现 Vue 中的一些类似的 API 在 React 中被进行了重构,比如 ReactcreateRef 取代了 ref="string",用 HOC 取代了 mixins 等等,虽然有些不习惯,但是感觉还好。

求职

本人最近正在找工作,有兴趣的欢迎私信哦,坐标上海,半年经验,比较了解 Vue+es6,了解一点 React,具体简历 戳这里

酷狗音乐- Vue / React 全家桶的两种实现相关推荐

  1. Vue 全家桶实现一个移动端酷狗音乐

    Vue 已经用了不少时间,最近抽空把以前的未完成的酷狗音乐做完了,过来分享下,也可以直接点这里预览,注意切换成手机模式. 技术栈: vue-router.eventBus.vuex.vue-aweso ...

  2. music功能 vue_Vue 全家桶实现移动端酷狗音乐功能

    Vue 已经用了不少时间,最近抽空把以前的未完成的酷狗音乐做完了,过来分享下,也可以直接点这里预览,注意切换成手机模式. 技术栈: vue-router.eventBus.vuex.vue-aweso ...

  3. vue全家桶和react全家桶

    感谢内容提供者:金牛区吴迪软件开发工作室 今天笔者就简单的给大家介绍一下一般项目在开发的时候所提到的vue全家桶和react全家桶分别都包括哪些内容. vue全家桶: vue(整体架构) +  vue ...

  4. 基于React全家桶开发「网易云音乐PC」项目实战(一)

    网易云音乐PC项目实战 项目简介 1.项目介绍 项目使用到的技术栈 CSS使用Flex进行布局 配置路径别名使用: carco 项目路由使用: react-router来管理 使用react-rout ...

  5. Vue 组件 全家桶

    Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,这里对vue插件汇总,提供vue组件 ...

  6. 【学习笔记】React+React全家桶学习笔记

    文章目录 1 为什么要使用React 2 React的定义 3 React的三大特性 4 React入门 4.1 hello_react 4.2 虚拟DOM的创建 4.3 JSX 4.4 模块与组件, ...

  7. 技术胖的2019新版React全家桶免费视频(84集)

    技术胖 2019年09月18日 阅读 29883 关注 技术胖的2019新版React全家桶免费视频(84集) 一共84集,从5月4日开始录制,到9月18日完成,5个月时间.如果是一个专业讲师,这进度 ...

  8. 小邵教你玩转Typescript、ts版React全家桶脚手架

    前言:大家好,我叫邵威儒,大家都喜欢喊我小邵,学的金融专业却凭借兴趣爱好入了程序猿的坑,从大学买的第一本vb和自学vb,我就与编程结下不解之缘,随后自学易语言写游戏辅助.交易软件,至今进入了前端领域, ...

  9. react全家桶实战(千峰教育)

    说明:本笔记为本人基于千锋教育2022版React全家桶教程_react零基础入门到项目实战完整版的学习笔记,知识点不清或不全,可以到视频教程中学习 文章目录 一.安装create-react-app ...

最新文章

  1. JVM的架构和执行过程
  2. R语言使用ggpubr包绘制出版社、编辑、审稿人要求的可视化图形实战
  3. web网站服务(二)
  4. Python语言精要---上
  5. 你提交代码前没有校验?巧用gitHooks解决
  6. kafka多个消费者消费一个topic_kafka:一文读懂消费者背后的那点quot;猫腻quot;
  7. Pentium Pro架构/流水线及其优化 (1) - 架构概述
  8. C#调用Microsoft.DirectX.DirectSound问题记录及解决
  9. 微信的9个隐藏功能,我不允许还有人不知道!
  10. android 添加一维数组,Android:打造“万能”Adapter与ViewHolder
  11. 中發白——企业软件公司的战略大三元
  12. python中ttk_ttk/Python中的按钮图像问题
  13. T9智能输入法实现原理和步骤
  14. iframe中加载html,在iframe中加载外部html并访问内容
  15. 使用动态规划弹性扩容机器。使用拉链法O(N)求所有集合
  16. 嵌入式Linux是学驱动还是应用,嵌入式LINUX应该学什么?做驱动还是做应用
  17. ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
  18. TI官方代码中的任务状态机
  19. keras读取后缀名为.h5的文件
  20. MSF生成一个木马与使用

热门文章

  1. 一分钟读懂一个数学时代,看完不跪算我输!
  2. 三流的团队是下跳棋,二流的团队是打扑克,一流的团队是搓麻将
  3. Rotating Data for Neural Network Computations
  4. 如何让apache支持.htaccess 解决Internal Server Error The server …错误
  5. 【总结整理】javascript进阶学习(慕课网)
  6. 树梅派学习 21. 串口连接
  7. 怎么预防DDOS攻击?ddos云防御
  8. Google照片批量下载所有相册
  9. JUC基础教程阶段一
  10. 数据仓库建设流程及概念