reactJS学习笔记(1)--概述

269 阅读3分钟

react 翻译过来就是响应的意思。定义好数据和视图的关系,通过数据的改变获得一个新的视图,也就是常说的mvvm模式。reactJS框架就是一个mvvm模式的渲染页面的JavaScript框架。

想开发一个大型的SAP页面(单页面),则需要解决以下几个问题

第一个问题:解耦代码

答案是:设计一套良好的组件化框架。而react已经集成了这个功能。如果你用jquery开发,你就要自己设计一个组件框架,其实也简单,设计一个命名系统和唯一id生成器就可以了。当然也可以参考ExtJS的组件设计。

//伪代码
// 禁用dom的id命名
export default function(){
    return {
        type:'homeListItem',
        content:'<div class="inner"></div>',
        onRender:function(){
              this.find('.inner').on('click',function(){
                  alert(11)
              })
        },
        onRemove:function(){

        }
    }
}

接着就要解决组件的交流问题。react并没有很好的解决方案,需要使用第三方库

react组件内部可以通过共享state来进行交流。组件之间呢,则没啥办法。react提供了一个简单的方法就是“状态提升”。 状态提升 就是在父类注册一个状态,子类留有回调接口,兄弟组件之间通过修改父类state来相互沟通,这个方法简单有效却过于繁琐,逻辑不够直接,不符合KISS原则。如果页面逻辑简单可以使用。

一种方法是使用redux来进行交流。如果项目规模适当(中型项目),通过redux可以使代码清晰并非常方便测试(状态可回溯)。但是,当项目规模巨大而每个模块并没有什么关联关系的时候,再使用redux就会出现信息灾难,redux就像全局变量一样让所有人不爽。整体的redux应当谨慎使用。最终我使用的是mobx而不是redux。原因是mobx可以在项目中注册多个,各个页面如果需要都可以使用自己的全局状态。同时,我也在整体项目中注册redux,但除了极个别情况(消息箱),很少使用。

第二个问题:项目的健壮性

  1. 功能隔离。这个是目标并不是解决方案。将每个模块都测试完美后,组装起来却无法运行的情况并不少见。
  2. 代码的报错隔离。浏览器不会因为某一个页面的报错而影响其他页面和整个浏览器。这并不是reactJS能实现的。需要设计良好的报错回收的机制。
  3. 代码测试。reactJS的优点之一就是测试方便。
  4. 忍受糟糕的代码,在架构上忍受新手的错误代码。

第三个问题:优秀的开发库

这本来不是问题,ReactJS的生态里面有大量的高手,但是他们并没有考虑到新手的需求。大量炫技和繁琐的配置让人不想多看。我宁可在了解了他们的原理后自己开发。Vue的文档让reactJS显得那么高冷。 ReactJS的很多项目,你只能觉得很酷,却不知道这有什么用,我该怎么用?

糟糕的代码就像糟糕的产品一样,既不可靠又需要繁琐的配置

reactJS 第三方库非常多。 在UI方面我选择ant.design

路由我计划是自己实现,react-router很优秀,但是我希望路由器是简单而无需担心性能的项目。

第四个问题:良好的语法

typescript非常火,但是我依然在考虑是否集成

JSX语法特别好,无论是测试还是编写逻辑上都非常优秀,Vue,angular的html模版虽然报错很人性化,却仍然没有断点报错来的直接。

第五个问题:开发工具

webpack


参考文档:

fakefish.github.io/react-webpa…

visionmedia.github.io/page.js/

github.com/CommanderXL…

juejin.cn/post/688629…