我学 dva 那些事儿

作者: dkvirus | 来源:发表于2017-07-01 00:30 被阅读6249次

    今天正式入驻简书,准备开一个专题总结下最近的学习成果 —— dva。

    dva 是由阿里架构师 sorrycc 带领 team 完成的一套前端框架,在作者的 github 里是这么描述它的:“dva 是 react 和 redux 的最佳实践”。

    antd-admin(推荐 x 1)

    antd-admin 是基于 dva + antd 的一个后管系统,作者:zuiidea,项目:antd-admin,github 上也有 2000+ stats,有 dva 经验的可以看下,楼主当时也是边学习 dva 概念,边研究这个项目的。

    这里面没有布局的概念,做到后面遇到一些坑。作者貌似因为 Ant Design Pro 的出现也不维护项目了。不建议以此学习了。

    Ant Design Pro(推荐 x 5)

    阿里自己整的一套开箱即用的中台前端/设计解决方案 Ant Design Pro github。初学者以这个入手,可以省很多事:框架搭建、布局、权限等等。点我在线预览效果官方文档

    umi(中文名:五米,推荐 x 5)

    同样是 dva 作者 sorrycc 最近整的新玩意,2018.2.26 发布的 1.0 版本。sorrycc 认为之前 dva 固然好,但还要用户自己引入 UI 工具 antd,打包工具 roadhog,路由 react-router,状态管理器 dva,这些很麻烦!前端发展越来越快,为什么不揉到一体呢!!

    antv(图表库,推荐 x 5)

    与 Antd 风格相同,阿里自己研发的图表库。值得关注。

    语雀(文档管理工具,推荐 x 5)

    阿里最新开源的在线文档管理工具,风格挺小清新的,适合记笔记、写博客、团队文档交流等。语雀

    先吐槽

    学习的过程并非一帆风顺,遇到的一些问题对于非科班出身的我来说简直不可思议。

    • 教程字典化

      • 现在的网络很发达,看似学习资料沧海星空,实则大多是一篇篇的字典,很难寻找到一篇用心编写的好教程。

      • 什么是字典化:复制的 API 文档。就像新华字典一样,我承认里面拥有所有的汉字,但是不知道查字典的方法抱着一本字典又有什么用呢?一个汉字一个汉字的去记忆会打击学习的兴趣。

      • 我理解的好教程 。花费80%的时间去跟你讲清楚这究竟是个什么东西——这就像查阅字典的方法。API 仅仅是“帮助文档”而已。

    • 学会 dva 和学会在项目中使用 dva 是两码事
      • 学会使用 dva 开发一个增删改查的模块是很快的,我花费了三天。

      • 写完代码还需要提交,这就接触了此前没有使用过的 git 分布式版本控制工具。

      • 老板告诉我,你写的代码不能直接提交,要经过 ESLint 工具做代码审查之后才能放心的提交到版本库。

      • 提交到版本库只是开发环境时做的事情,考虑到将来上线还需要学习诸如 webpack 构建工具来进行项目打包。

      • .............

      • 项目中的 dva 远不止用到这些工具,还需要其它的一系列技术点才能组成一套完整的体系。

    而我现在要做的事,就是将过程遇到的所有技术编写成一篇篇的好教程,便于需要它的人不会遇到我先前遇到的窘境。

    为什么写这篇 Blog

    起初,是由于项目的需要,开始正式接触 dva。

    dva 的开发模式不同于传统页面的开发,学习起来有一定的技术门槛。

    dva 的作者sorrycc Blog 里逗留了数个日夜,对新的开发模式好像是理解了,于是就迫不及待的下载了一个 demo,准备开发 CRUD。

    故事情节的发展往往不会这么顺利,开发过程中发现,学会 dva 和在项目中使用 dva 进行完整开发完全是两码事:因为项目不仅仅是代码开发,还要关注项目的整体生命周期,代码规范,打包上线等等。

    初学 dva 时心里变化

    如果你和我一样,不能容忍在你的项目存在看不懂的东东,哪怕是一个配置文件,存在必有价值,不明白的东东就该 DELETE 掉,那么来到这里就对了,本文就是对 dva 做一次“大手术”,肢解它的技术组成,掌握项目中的 dva。

    项目中的 dva

    项目中的 dva

    目录

    dva README.md 之外的文档

    dva 目前还没有自己的社区,如果学习过程中遇到问题可以去 dva 的 github issue 库去寻找答案,目前已经 close 了 1160 个问题,也就是你遇到的问题大多前人都已遇到过。当然也有人不愿意或不熟悉 github 的,这里也记录一些作者遇到的坑的解决方法。

    备注

    之前一直在开源中国上写博客,一些 dva 相关博客也在那上面,还没时间转过来,有需要的可以跳转看看。开源中国博客地址github 上博文地址

    如果你有关于 dva 的问题,欢迎下方留言。

    最后

    打个广告,最近忽悠了个程序媛入行,她也在简书记录自己学习历程,希望看到这里的看官们可以去 她的简书主页 点个关注,给入门者一点小小的鼓励。

    相关文章

      网友评论

      • 月肃生:希望作者就dva的出现原因,为什么要用dva?什么情况下适合使用dva?dva抛弃了react的state进行项目管理有什么好处?而且觉得这样好像对组件的复用性有一定的影响。最近在接触dva,以前是纯粹的react使用,所以对为啥会出现dva这个框架比较不懂,毕竟已经有很多各种react的脚手架了。
        月肃生:嗯嗯,有道理,我也是这么想的!redux无论怎么变化,我觉得都应该用来放一些共享数据,不过目前看使用dva的,连请求的组件数据,几乎所有的外来数据共享数据都放置到了redux,感觉不是很合理,我还是比较喜欢组件管理自己的状态,redux管理共享状态
        dkvirus:dva并没有抛弃react的state,使用类创建组件仍然可以使用state和生命周期函数,个人拙见,如果数据不需要和其它组件共享,完全可以写在内部state,感觉更合理一点,只有共享的数据才扔到model中。
        dkvirus:@月肃生 个人理解dva出现主要解决一个问题:组件之间通讯问题。你说到之前使用纯粹react,请问:父组件给子组件传值通过props,子组件给孙子组件传值也是通过props,现在父组件给孙子组件传值是不是要先父传子,再由子传孙子,这是原生react局限性。dva相当于提供一个全局环境(model),父组件、子组件、孙子组件将共享数据都扔进全局环境中。简言之,组件之间数据通讯由层层传递转换为同一级别的传递。
      • d915cea173cf:这就很舒服
      • 戎码一生12138:谢谢分享
      • 落雨:复习下前端
      • 3840d2462cce:你的Roadhog 专讲在哪里?
      • sherxia92:点个赞,然后开始学习!
        dkvirus:加油~
      • 77089d60ea4c:好东西!
      • alexsaurora:哎呦,刚出了umi,你就更新了内容,不错哦
        dkvirus:@alexsaurora 哈哈,体验挺嗨的,值得关注!
      • 04a92bd20bed:怎么升级dva-cli到最新版本啊,github上说版本要1.0.0-beta.2以上,可我最高到0.92
        dkvirus:@liijuu dva-cli 里也把 roadhog 给升级为 2.0 版本,2.0 版本的 roadhog 配置文件为 .webpackrc 或者 .webpackrc.js 文件。就是 1.0 版本的 .roadhogrc 文件。
        04a92bd20bed:@dkvirus 嗯嗯,我安装了0.92版本,可是遇到个问题,项目进去之后没有roadhogrc文件,只有个roadhogrc.mock.js文件,这是怎么回事啊
        dkvirus:@liijuu github 上面的版本也是 0.9.2: https://github.com/dvajs/dva-cli/blob/master/package.json,不太明白你说的 1.0.0-beta.2 是哪来的。npm 安装指定版本语法:npm install <package>@<version>
      • darrell:想请问您一下dva官网现在的getting-started项目,我复制了他一模一样的代码,但是在我点击之后,他不会出现官网给的点击一秒之后,计数器会变成零这个结果,这是为什么呢?
      • Suoz:特地登录点个赞...
        dkvirus:@Suoz 多谢支持。:grin:
      • 有一美人兮思之不忘:想请问那个,创建路由的时候报错是怎么回事呢?? dva generate is disabled since we don't have enough time currently.
        dkvirus:@只愿_96eb dva generate is disabled since we don't have enough time currently. 好吧,我自己试了一下。它这意思是说 dva-cli 这个项目暂时官方不支持维护了,just 初始化项目,因为他们没有足够的时间来维护这个项目。dva 作者 sorrycc 主要精力还是在 dva 和 roadhog 这两个开源项目上。你如果需要命令行方式快速创建文件,可以使用 node 的文件 API 自己编写代码了,相关库有:commander 包 https://npm.taobao.org/package/commander,感兴趣的可以自己试试。
        有一美人兮思之不忘:@dkvirus 好的,下载完新的demo之后, dva g route List ,就会出我刚才写的那一串错误
        dkvirus:可以描述下具体操作步骤吗?
      • zhangmz:很全啊
        dkvirus:@zhangmz 如果有补充,欢迎提出。

      本文标题:我学 dva 那些事儿

      本文链接:https://www.haomeiwen.com/subject/rzfwcxtx.html