酷狗音乐- Vue / React 全家桶的两种实现
引言
两个月前用 Vue
全家桶实现过一次 酷狗音乐,最近又用 React
全家桶重构了下,最终成果和 Vue
的实现基本一致,放个图:
手机预览戳 Vue
版本, React
版本。
demo 选择
本来想用 React
全家桶重新选个项目,但是没有找到合适的,最终就重构了下,因为这个项目难度适中,非常适合练手。
- 接近 10 个单页,内容不多不少,需要
router
- 音乐播放作为全局组件,数据全局共享增删改,需要
redux
,vuex
- 好几个公共组件,可以封装复用
项目源码在 这里,欢迎大家 star、fork
项目对比
我从根目录开始分析,左边 vue
右边 react
根目录
src 目录
这里有几个区别:
React
版本并没有router
文件,因为它支持path
和component
属性,来定位要渲染的组件,就像这样:而
Vue router
似乎并没有提供path
和component
API ,所以必须要到Router
配置里去读取path
和component
属性。React
也没有mixins
, 因为用HOC
取代了mixins
。以我放在 components/HOC/index.js 里的代码为例:而且,你也可以在里面加上生命周期钩子等等,实际上,
React
之前也是采用mixins
实现的,不过后来改了。一个 .vue 组件对应
React
中三个文件?在很多情况下,是这样子。Vue 的行为结构表现分离,很明显,而 React 的分离虽然不是很明显,但实际上也是有的。以 App.vue 为例- App.vue 里的
style
对应React
里的 App.less ,毫无疑问 - App.vue 里的
template
和props
对应React
里的 App.js ,React
称为Presentational Components
,一般只有一个render
方法return
html
, 譬如:
- App.vue 里的
- App.vue 里剩余的部分,包括
ajax
,mapState
, 状态的变更,以及生命周期钩子等等,都是对应React
里的 AppContainer.js ,React
称为Container Components
. 如图:
实际上, AppContainer.js 负责行为逻辑,而 App.js 负责结构展示, App.less 负责样式表现,依旧是 行为/结构/表现 的分离。只不过与 Vue
稍有不同而已。这一点上,React 多费些脑力和胶水代码。
Vuex 和 redux 目录
这里跟我的实现有关系,redux
可能是比 Vuex
麻烦些,但不至于图示如此夸张。因为我重构的时候改了逻辑。
selectors
selectors
和 Vue
中的 getters
有相似,但底层原理不同。举个例子,我们如果要从一个巨量的 array
里找到某个数据,比较耗性能怎么办?很明显可以对参数做个缓存,如果查询 id
和上一次一样,就返回上次的结果,不查询了。selectors
做的就是这个事。
actions
React
的 actions
和 Vuex
中的 actions
类似,都是发送指令,但不操作数据。
reducers
actions
发送指令,最终会到 reducers
里合并数据,与 Vue
中的 mutations
类似。
如果你注意的话,就会发现,reducers
里合并数据总是返回一个新对象。而 Vuex
中,我们是直接修改 state
的数据的。
这里其实牵涉到了 Vue
和 React
中的一个大不同。
总结
总体的目录和架构是类似的,不过具体用起来差别还不小。
技术栈的广度
Vue
全家桶只要加上 Vuex
和 Vue-router
就可以了,而 React
在读完 redux
, react-redux
, react-router
文档之后,会发现他们还拆分、引出了不少东西,譬如 reselect
, redux-thunk
等等,并且 redux
, reselect
还不是局限于 React
的。
API
实践过程中,发现 Vue
中的一些类似的 API 在 React
中被进行了重构,比如 React
用 createRef
取代了 ref="string"
,用 HOC
取代了 mixins
等等,虽然有些不习惯,但是感觉还好。
求职
本人最近正在找工作,有兴趣的欢迎私信哦,坐标上海,半年经验,比较了解 Vue+es6,了解一点 React,具体简历 戳这里
酷狗音乐- Vue / React 全家桶的两种实现相关推荐
- Vue 全家桶实现一个移动端酷狗音乐
Vue 已经用了不少时间,最近抽空把以前的未完成的酷狗音乐做完了,过来分享下,也可以直接点这里预览,注意切换成手机模式. 技术栈: vue-router.eventBus.vuex.vue-aweso ...
- music功能 vue_Vue 全家桶实现移动端酷狗音乐功能
Vue 已经用了不少时间,最近抽空把以前的未完成的酷狗音乐做完了,过来分享下,也可以直接点这里预览,注意切换成手机模式. 技术栈: vue-router.eventBus.vuex.vue-aweso ...
- vue全家桶和react全家桶
感谢内容提供者:金牛区吴迪软件开发工作室 今天笔者就简单的给大家介绍一下一般项目在开发的时候所提到的vue全家桶和react全家桶分别都包括哪些内容. vue全家桶: vue(整体架构) + vue ...
- 基于React全家桶开发「网易云音乐PC」项目实战(一)
网易云音乐PC项目实战 项目简介 1.项目介绍 项目使用到的技术栈 CSS使用Flex进行布局 配置路径别名使用: carco 项目路由使用: react-router来管理 使用react-rout ...
- Vue 组件 全家桶
Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,这里对vue插件汇总,提供vue组件 ...
- 【学习笔记】React+React全家桶学习笔记
文章目录 1 为什么要使用React 2 React的定义 3 React的三大特性 4 React入门 4.1 hello_react 4.2 虚拟DOM的创建 4.3 JSX 4.4 模块与组件, ...
- 技术胖的2019新版React全家桶免费视频(84集)
技术胖 2019年09月18日 阅读 29883 关注 技术胖的2019新版React全家桶免费视频(84集) 一共84集,从5月4日开始录制,到9月18日完成,5个月时间.如果是一个专业讲师,这进度 ...
- 小邵教你玩转Typescript、ts版React全家桶脚手架
前言:大家好,我叫邵威儒,大家都喜欢喊我小邵,学的金融专业却凭借兴趣爱好入了程序猿的坑,从大学买的第一本vb和自学vb,我就与编程结下不解之缘,随后自学易语言写游戏辅助.交易软件,至今进入了前端领域, ...
- react全家桶实战(千峰教育)
说明:本笔记为本人基于千锋教育2022版React全家桶教程_react零基础入门到项目实战完整版的学习笔记,知识点不清或不全,可以到视频教程中学习 文章目录 一.安装create-react-app ...
最新文章
- JVM的架构和执行过程
- R语言使用ggpubr包绘制出版社、编辑、审稿人要求的可视化图形实战
- web网站服务(二)
- Python语言精要---上
- 你提交代码前没有校验?巧用gitHooks解决
- kafka多个消费者消费一个topic_kafka:一文读懂消费者背后的那点quot;猫腻quot;
- Pentium Pro架构/流水线及其优化 (1) - 架构概述
- C#调用Microsoft.DirectX.DirectSound问题记录及解决
- 微信的9个隐藏功能,我不允许还有人不知道!
- android 添加一维数组,Android:打造“万能”Adapter与ViewHolder
- 中發白——企业软件公司的战略大三元
- python中ttk_ttk/Python中的按钮图像问题
- T9智能输入法实现原理和步骤
- iframe中加载html,在iframe中加载外部html并访问内容
- 使用动态规划弹性扩容机器。使用拉链法O(N)求所有集合
- 嵌入式Linux是学驱动还是应用,嵌入式LINUX应该学什么?做驱动还是做应用
- ROS tf::TransfromBroadcaster tf::TransformListener listener.lookupTransform listener.waitForTransfor
- TI官方代码中的任务状态机
- keras读取后缀名为.h5的文件
- MSF生成一个木马与使用