zoukankan      html  css  js  c++  java
  • 从 React到React Native

    React简介

    RN基于React设计,了解React有利于我们开发RN应用。
    React希望功能分解化,让开发像搭积木一样,快速而且可维护。


    React的3个特点

    • 作为UI(Just the UI)
    • 虚拟DOM(Virtual DOM)
      这是亮点,是React最重要的一个特性
      更新View很快,放进内存,最小更新的视图
      差异部分更新 diff算法
    • 数据(Data Flow)单向数据流

    学习React要掌握的只是:

    • JSX语法 类似XML
    • ES6相关
    • 前端基础 CSS+DIV JS

    举例说明React的用法,IDE工具:WebStorm(JavaScript 开发工具 Web前端开发神器 插件很丰富,智能代码提示,自动补全)
    比如:ReactNative 代码智能提醒(Webstorm)
    git clone https://github.com/virtoolswebplayer/ReactNative-LiveTempate
    下载模板:https://github.com/wix/react-templates
    安装命令:npm install react-templates -g

    点击下载Webstorm
    点击下载Webstorm破解版

    例子

    1.例子一 (简单组件和数据传递) 使用this.props 指向自己的属性

    http://facebook.github.io/react/downloads.html 下载react Kit

    react.js react-dom.js:React 的核心文件

    JSXTransformer.js browser.min.js:讲JSX转译成js和html的工具

    最新的react版本:react-15.3.1

    在react 0.14前,浏览器端实现对jsx的编译依赖jsxtransformer.js 在react 0.14后,这个依赖的库改为browser.js,页面script标签的type也由text/jsx改为text/babel 但是以上只能用来测试学习react
    生产环境需要借助编译工具事先将jsx编译成js

    例如可以使用Node.js做预编译,可以安装react-tools工具
    npm install -g react-tools

    例子源码

    1. <!DOCTYPE html>
    2. <html>
    3. <headlang="en">
    4. <metacharset="UTF-8">
    5. <title>React第一个例子</title>
    6. <scripttype="text/javascript"src="react.js"></script>
    7. <scripttype="text/javascript"src="react-dom.js"></script>
    8. <scripttype="text/javascript"src="browser.min.js"></script>
    9. </head>
    10. <body>
    11. <divid="example"></div>
    12. <scripttype="text/babel">
    13. varHelloMessage=React.createClass(
    14. {
    15. render:function(){
    16. return<h1 style={{color:'#ff0000',fontSize:'24px'}}>Hello{this.props.name}!我是星空守候</h1>;
    17. //这是注释 React.createElement
    18. }
    19. }
    20. );
    21. ReactDOM.render(<HelloMessage name="React 语法基础"/>,document.getElementById('example'));
    22. </script>
    23. </body>
    24. </html>

    2.例子二 (通过this.state更新视图)

    • 源码
    1. <!DOCTYPE html>
    2. <html>
    3. <headlang="en">
    4. <metacharset="UTF-8">
    5. <title>React第二个例子</title>
    6. <scripttype="text/javascript"src="react.js"></script>
    7. <scripttype="text/javascript"src="react-dom.js"></script>
    8. <scripttype="text/javascript"src="browser.min.js"></script>
    9. </head>
    10. <body>
    11. <divid="example"></div>
    12. <scripttype="text/babel">
    13. /*自定义组件*/
    14. varTimer=React.createClass(
    15. {
    16. /*初始状态*/
    17. getInitialState:function(){
    18. return{secondsElapsed:0};
    19. },
    20. tick:function(){
    21. this.setState({secondsElapsed:this.state.secondsElapsed+1});
    22. },
    23. /*组件完成装载*/
    24. componentDidMount:function(){
    25. this.interval=setInterval(this.tick,1000);
    26. },
    27. /*组件将被卸载 清除定时器*/
    28. componentWillUnmount:function(){
    29. clearInterval(this.interval);
    30. },
    31. /*渲染视图*/
    32. render:function(){
    33. return(
    34. <div>SecondsElapsed:{this.state.secondsElapsed}</div>
    35. );
    36. }
    37. }
    38. );
    39. React.render(<Timer/>,document.getElementById('example'));
    40. </script>
    41. </body>
    42. </html>

    3.例子三 (简单应用)

    • 源码
    1. <!DOCTYPE html>
    2. <html>
    3. <headlang="en">
    4. <metacharset="UTF-8">
    5. <title>React第三个例子</title>
    6. <scripttype="text/javascript"src="react.js"></script>
    7. <scripttype="text/javascript"src="react-dom.js"></script>
    8. <scripttype="text/javascript"src="browser.min.js"></script>
    9. </head>
    10. <body>
    11. <divid="example"></div>
    12. <scripttype="text/babel">
    13. varShowEditor=React.createClass(
    14. {
    15. getInitialState:function(){
    16. return{value:'你可以在这里输入文字'};
    17. },
    18. handleChange:function(){
    19. this.setState({value:React.findDOMNode(this.refs.textarea).value});
    20. },
    21. render:function(){
    22. return(
    23. <div>
    24. <h3>输入</h3>
    25. <textarea style={{width:300,height:150,outline:'none'}}
    26. onChange={this.handleChange}
    27. ref="textarea"
    28. defaultValue={this.state.value}
    29. />
    30. <h3>输出</h3>
    31. <div>{this.state.value}</div>
    32. </div>
    33. );
    34. }
    35. }
    36. );
    37. React.render(<ShowEditor/>,document.getElementById('example'));
    38. </script>
    39. </body>
    40. </html>

    React Native简介与代码分析

    为什么要使用React Native,如何在开发成本和用户体验做到更好的平衡?
    很多时候,前端都有一种乐观的想法:H5可以替代原生应用,RN不仅可以使用前端开发的模式来开发应用,还能调用原生应用的UI组件和API。





  • 相关阅读:
    AC自动机学习笔记(模板)
    codeforces1328E
    Codeforces 1288E- Messenger Simulator (树状数组)
    线性基小记
    HDU3949
    矩阵快速幂小记
    5E
    5D
    5C
    5B
  • 原文地址:https://www.cnblogs.com/wisemen/p/5830411.html
Copyright © 2011-2022 走看看