react-笔记(1)

1、概念
    1)2013年5月发布。
     2)React 把用户界面抽象成一个个组件,如按钮组件 Button、对话框组件 Dialog、日期组件 Calendar。开发者通过组合这些组件,最终得到功能丰富、可交互的页面。
     3)通过引入 JSX 语法,复用组件变得非常容易,同时也能保证组件结构清晰。
     4)有了组件这层抽象,React 把代码和真实渲染目标隔离开来,除了可以在浏览器端渲染到 DOM 来开发网页外,还能用于开发原生移动应用。
 

2、特点
    1)声明式设计      −React采用声明范式
          声明式是告诉计算机要去做什么而不管怎么做。
          命令式是要描述如何去做。
     2)高效     −React通过对DOM的模拟(虚拟dom),最大限度地减少与DOM的交互。
     3)灵活    −React可以与已知的库或框架很好地配合。
     4)Jsx语法     − JSX 是 JavaScript 语法的扩展。(对比模版引擎)
     5)组件   − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
     6)单向响应的数据流    − React 实现了单向响应的数据流,这也是它为什么比传统数据绑定更简单。
 

3、专注视图层
    1)React 并不是完整的 MVC/MVVM 框架,它专注于提供清晰、简洁的 View(视图)层解决方案。
    2)与模板引擎不同,React 不仅专注于解决 View 层的问题,又是一个包括 View 和 Controller 的库。
    3)对于复杂的应用,可以根据应用场景自行选择业务层框架,并根据需要搭配 Flux、Redux、GraphQL/Relay 来使用。
    4)React 不像其他框架那样提供了许多复杂的概念与烦琐的 API,它以 Minimal API Interface 为目标,只提供组件化相关的非常少量的 API
    5)为了保持灵活性,它没有自创一套规则,而是尽可能地让用户使用原生 JavaScript 进行开发。
 

4、Virtual Dom
    一、传统dom更新:
        真实页面对应一个 DOM 树。在传统页面的开发模式中,每次需要更新页面时,都要手动操作 DOM 来进行更新
 
 
    二、虚拟dom:
        1) DOM 操作非常昂贵。在前端开发中,性能消耗最大的就是 DOM 操作,而且这部分代码会让整体项目的代码变得难以维护。
         2) React 把真实 DOM 树转换成 JavaScript 对象树,也就是 Virtual DOM
 

5、函数式编程-----react的精髓
    它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用。
    函数编程式的好处:
        1)代码简洁,开发速度快
        2)接近自然语言,易于理解
        3)更方便代码管理
        4)易于“并发编程”
        5)代码的热升级
 

6、JSX语法
    1)JSX 将 HTML 语法直接加入到 JavaScript 代码中,再通过翻译器转换到纯 JavaScript 后由浏览器执行。
    2)编译过程由Babel 的 JSX 编译器实现。
    3)JSX 的官方定义是类 XML 语法的 ECMAScript 扩展。
    4)它完美地利用了 JavaScript 自带的语法和特性,并使用大家熟悉的 HTML 语法来创建虚拟元素。
 

    1、XML基本语法
        定义标签时,只允许被一个标签包裹。标签一定要闭合。
    2、元素类型
        1)小写首字母对应 DOM 
        2)元素大写首字母对应组件元素 
        3)注释使用js注释方法
    3、元素属性
        1)class 属性改为 className
        2)for 属性改为 htmlFor
        3)Boolean 属性:省略 Boolean 属性值会导致 JSX 认为 bool 值设为了 true
    4、JavaScript 属性表达式
        属性值要使用表达式,只要用 {} 替换 “” 即可
        eg:
               <input type="text" value={val ? val : ""} />
    5、HTML 转义
        1)React 会将所有要显示到 DOM 的字符串转义,防止 XSS。
        2)后台传过来的数据带页面标签的是不能直接转义的
        3)具体转义写法:
            var content='<strong>content</strong>';                                     React.render(     
                <div dangerouslySetInnerHTML={{__html: content}}>                    </div>,     
                    document.body 
             );
        4)ReactDOM.render
                作用:描画dom
                参数1:dom对象
                参数2:注入点
                参数3:回调函数(渲染是否成功)
                 eg:
                        ReactDOM.render(  
                            <div>Hello World!</div>,                     document.querySelector('#wrapper')
                            ()=>{  console.log("渲染成功") }
                         );
         5)React.createClass
                作用:声明组件
                render方法:
                render: function(){       
                     return (            
                         <input type="button"  value="hello world!!!!" />                       )     
                 }
 
 
                
posted @ 2018-11-25 20:38  浅陌。  阅读(183)  评论(0编辑  收藏  举报