美文网首页
React入门

React入门

作者: 我的秀 | 来源:发表于2016-08-13 13:16 被阅读258次

入前端大坑也有快半年了,花了三个多月啃《JavaScript高级程序设计》,至今还谈不上什么深刻理解,对于原生js 的闭包、原型链等特性也仅仅是能说个大概而已。稀里糊涂的想接触一些框架和库,一开始看了一下AngularJS,但是一谈到MVC就有点懵逼,因为没有任何后端经验,所以MVC对我来说也只是个概念,对于model、view、controller也都没有清晰的认识。
  更为头疼的是,当我们跨过了基础阶段,接触到这些框架级的概念时,大牛们讨论的一切仿佛和我们不在一个时代,而当我看到React就像看到救星一样,没有一大堆繁琐的概念,从MVC的角度来说它只实现了View层面,虽然这两个框架的学习曲线都足够陡峭,但我还是义无反顾的跳入了React的大坑。

注意:我不是说React就比AngularJS更简单,相对于AngularJS辣么多晦涩难懂的概念来说,React更适合我入门以及对MVC有个基本的认识

起源


React.js起源于facebook的一个内部项目,因为facebook对于市面上的JavaScript的MVC框架都不太满意,所以决定自己造轮子(所以我也不知道为啥人家不满意)。起初只是用来假设Instagram网站,后来发现这玩意挺好用,所以就在2013年5月开源。到目前为止,Reactgithub上已经有了47158个star,而项目也已经经历了很多个版本的更新,目前最新版是15.2.1。由于React性能出众,代码逻辑简单,以及虚拟DOM这个革命性的创新,使得它逐渐被广大前端开发者所接受(大厂出品,值得信赖)。

Demo


一个简单的Reactdemo看起来是这样的

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>hello world</title>
        <script src="http://facebook.github.io/react/js/react.js"></script>
        <script src="http://facebook.github.io/react/js/react-dom.js"></script>
        <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.8.23/browser.min.js"></script>
    </head>
    <body>
        <div id="example"></div>
        <script type="text/babel">
            var Hello=React.createClass({
                render:function(){
                    return <div>Hello {this.props.name}</div>
                }
            });
            ReactDOM.render(
                <Hello name="World!"/>,
                document.getElementById('example')
            );
        </script>
    </body>
</html>

以上就是一个简单的React应用程序,我们可以注意到在html中引入了三个js文件,分别是react.jsreact-dom.js、以及browser.min.js
  需要注意的一点是,在0.14版本发布之后,原先的React被分割为react和react-dom两个模块,其中react模块负责组件相关的一些核心API,而react-dom显而易见则是负责与dom相关的一些API。具体到这段代码中,React.createClass则是核心模块react所提供的API,而ReactDOM.render是react-dom模块所提供的API
  我们很容易就会注意到,这段代码中的JavaScript部分有些不同。首先,type变成了text/babel,这是因为React提供的JSX语法浏览器本身无法解析,所以需要使用babel提供的browser.min.js将它转换为原生js,而这里的type也相应的要写为"text/babel"。而所谓JSX语法,在render方法中就有所体现,如果将这段JSX代码转换为原生js,那么它会是这样的

var Hello= React.createClass({displayName: "HelloMessage",
  render: function() {
    return React.createElement("div", null, "Hello ", this.props.name);
  }
});

React.render(React.createElement(HelloMessage, {name: "World!"}), mountNode);

事实上也可以这样写,只不过react更推崇用JSX的语法来创建组件,在这段代码中,首先使用React.createClass方法创建了一个对象,这个对象的名字是Hello,这也将是一个React组件,可以在app中的任何位置使用。Hello对象中包含了一个名为render的方法,顾名思义这是渲染组件的意思,这个方法需要返回一段html,而JSX语法最大的特点也是这里,使用JSX语法我们不需要再用引号将html代码包起来,而是直接按照html语法来书写,省略了一对引号但React仍然会很好的解析为HTML代码

使用JSX语法有几点需要注意

  • render方法中返回的HTML代码只能有一个根节点
      无论你的组件有多复杂,它必须被唯一的一个dom节点所包含,如果你这样写则是错误的
 render:function(){ 
      return (
              <div>
                    Hello {this.props.name}
              </div>
              <h1>World!</h1>
      )
 }
 //这段代码的div和h1属于同级标签,这在React中是不允许的,你应该将他们用一个父容器包裹起来
  • render方法返回的HTML代码中标签的class属性应该写为className,for属性也应该写为htmlFor
      这是因为class与for都是JavaScript的保留字
render:function(){ 
      return (
              <div className="keke">
                    Hello {this.props.name}
                    <label htmlFor="check">请选择</label>
                    <input id="check" type="checkbox"/>
              </div>
      )
 }
  • 使用React.createClass创建的组件名第一个字母必须大写

在这个例子中,React.createClass创建的组件还没有被渲染到页面中,需要使用ReactDOM.render方法,这个方法接收三个参数,插入的组件(类似于HTML标签的写法),被插入的父容器(应该被定义在HTML文件中并带有id属性的一个节点),以及一个可选的回调函数(这个函数将在组件被渲染到页面上之后执行)。运行这个例子,页面上将会渲染出Hello World!
  这里推荐使用Chrome浏览器调试React应用程序,并安装React Developer Tools(React开发者工具),这个工具可以帮助你在Chrome浏览器中随时查看组件的相关信息

以上就是React入门的一些基本概念,props以及state相关概念将在后续文章中详细解答

相关文章

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • react+webpack项目实际开发应用

    react+webpack项目实际开发应用 在《react入门》和《react入门提高》中我讲了,react的基础...

  • React Native:从入门到原理

    React Native:从入门到原理 React Native:从入门到原理

  • React Native学习资料

    React 入门实例教程React-Native入门指南Flex 布局教程:语法篇React Native探索(二...

  • React Native

    JavaScript 标准参考教程(alpha)ECMAScript 6入门 React 入门实例教程React ...

  • React 实践(一)

    参考:《React 入门实例教程--阮一峰》、《React 学习教程--众成翻译》。React 框架入门学习摘录。...

  • awesome-react-native

    React React 中文文档一定要看官方文档 React 入门实例教程阮一峰老师出品,最好的 react 入门...

  • 慕课视频

    免费 《Web安全-XSS》《ReactNative基础与入门》《React入门》《在React中使用Redux数...

  • React入门-001

    +++Categories = ["React",]Tags = ["React","入门",]date = "2...

网友评论

      本文标题:React入门

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