Code Monkey home page Code Monkey logo

music-mobile's Introduction

music-mobile

点击进入JS分支
项目预览

项目简介

使用react hooks+redux+typescript+immer编写的仿网易云音乐移动端web项目。
特别鸣谢huangyi大佬的课程Vue2.0开发企业级移动端音乐Web App,以及神三元大佬的小册React Hooks 与 Immutable 数据流实战

技术栈

已完成功能

  • 推荐页面

    • 轮播图
    • 推荐歌单
    • 推荐新歌
  • 歌手列表页面

    • 选择分类(根据歌手首字母筛选)
    • 歌手列表
    • 上拉刷新、下拉加载更多(分页功能)
  • 歌手详情页面

    • 歌曲列表
  • 排行榜页面

    • 官方榜单
    • 全球榜单
  • 歌单页面

    • 歌曲列表
  • 搜索页面

    • 防抖远程搜索
    • 热门搜索关键词
    • 搜索结果列表
  • 歌曲播放

    • 只要有歌曲列表的地方,都可以直接点击播放
    • 全屏播放
    • 底部播放
    • 歌曲控制(暂停、播放、上一首、下一首)
    • 歌词解析、展示、滚动
    • 播放列表

项目规范

  1. 所有组件的文件夹命名用大驼峰,文件命名用小驼峰,出口文件使用index命名;
  2. 插件命名使用大驼峰,其他所有文件和文件夹均使用小驼峰;
  3. 样式通过scss和css Modules结合来进行编写,所有的css类名全部小写,并用-连接;
  4. 定义scss变量,并配置webpack全局注入;
  5. 网络请求相关requests文件夹中;
  6. 全局类型声明统一放在typings文件夹中,再分类管理,组件类型声明放在各组件文件夹的typing.ts文件中;
  7. 工具方法统一放在utils文件夹中,再分类管理;
  8. 插件统一放在plugins文件夹中;
  9. 页面组件和业务模块组件统一放在pages文件夹中,页面组件作为容器组件,用于处理数据、逻辑和布局,业务模块组件是对应页面的UI组件,只负责UI不负责逻辑;
  10. 通用组件和其它UI组件统一放在components中;
  11. 不使用class组件,统一使用函数式组件和hooks;
  12. 所有组件使用memo进行包裹,避免不必要的渲染;
  13. 组件内部状态使用useState,业务数据全部用redux管理;
  14. 组件内部书写顺序:
    • 解构props的属性
    • 解构props的方法
    • 解构redux中的数据
    • useState管理组件内部状态
    • useRef
    • useEffect
    • 其他逻辑代码
    • jsx代码
  15. redux规范:
    • redux结合immerjs
    • 每个页面模块有自己独立的reducer,放在对应文件夹下的store文件夹下,在全局的store中通过combineReducer合并
    • ajax请求放在actions中,由redux-thunk处理
    • 使用react-redux hooks的useSelector和useDispatch,不再使用connect

项目运行

clone项目

git clone https://github.com/sanjings/react-hooks-ts-music.git

拉取后端项目

cd react-hooks-music-h5
git submodule init
git submodule update

安装依赖(推荐使用pnpm)

npm install pnpm -g
cd NeteaseCloudMusicApi
pnpm install
cd ..
pnpm install

本地运行

yarn start or npm run start

打包

yarn build or npm run build

最后

欢迎pr,喜欢就赏个⭐吧,谢谢支持

music-mobile's People

Contributors

sanjings avatar

Stargazers

saber avatar mafeixiong avatar 派大星星 avatar li feng avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.