码迷,mamicode.com
首页 > Web开发 > 详细

React前端框架开发入门

时间:2016-08-02 22:11:37      阅读:1684      评论:0      收藏:0      [点我收藏+]

标签:

Facebook推出的React仰慕已久,一直没有找到合适的机会尝试,而react早已经是最热门的前端框架,coding.netWebIDE,墨刀的web原型设计应用,都是非常成熟的react应用;最近正好前后端都有很多想法,周末花时间折腾了一翻,顺利的完成React入门训练。

 

 

项目采用纯静态方式实现,全部都是静态文件,不需要任何服务器就可以运行效果。传送门

 

React简单介绍

React一般被用来作为MVC中的V层,它不依赖其他任何的库,因此开发中,可以与任何其他的库集成使用,包括JqueryBackbone等。它可以在浏览器端运行,也可以通过nodejs在服务端渲染。React的思想非常独特,性能出众,可以写出重复代码少,逻辑清晰的前端代码。

React的语法是jsx,通过使用这种语法,可以在react代码中直接混合使用jshtml来编写代码,这样代码的逻辑就非常清晰,当然也意味着,需要将jsx代码编译成普通的javascript代码,才能在浏览器中运行,这个过程根据实际项目情况,可以选择多种不同的思路,或者在服务器端通过webpack进行编译。或者在前端加载,参见官网提供的入门代码。

<!DOCTYPE html><html>

  <head>

    <meta charset="UTF-8" />

    <title>Hello React!</title>

    <script src="build/react.js"></script>

    <script src="build/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">

      ReactDOM.render(

        <h1>Hello, world!</h1>,

        document.getElementById(’example’)

      );

    </script>

  </body></html>

代码中的babel browser,可以将jsx代码转换成js代码的渲染工作;这个代码需要加载额外的js文件,因此生产中最好在服务端完成。入门之后,我希望能够使用require.js来实现异步按需加载模块,而且代码本身也可以实现模块化。

首先通过bower下载依赖包,本次实践,使用到的依赖包有reactrequirejsjquery,经过实践发现,还必须依赖jsx-requirejs-plugin,还有text.js才能成功的的实现requirejs + react

项目结构和功能实现

这个入门应用实现的功能很简单,将自己感兴趣的一些技术,以图文和链接组成的列表形式展示在页面上,列表的数据,以json形式存储在js配置文件中,requirejs加载业务逻辑模块的时候,会作为依赖项加载数据,并且以react.js的方式完成页面的渲染。

初识React前端框架开发

 

项目结构


index.html是纯静态的页面布局html代码,核心是通过<script data-main="/static/app/index" src="/static/lib/requirejs/require.2.2.0.min.js"></script>这段代码来加载依赖项,并运行react业务逻辑代码。

这个代码指出了requirejs配置文件的位置,依赖项和入口点,都是在/static/app/index.js中配置的。代码如下:

’use strict’;

require.config({

    baseUrl: ’/static/app’,

    paths: {

        jquery: ’../lib/jquery/js/jquery.min’,

 

        react: ’../lib/react/react-with-addons.min’,

        ’react-dom’:’../lib/react/react-dom’,

 

        "JSXTransformer": ’../lib/plugin/JSXTransformer’,

        jsx: ’../lib/plugin/jsx’,

        text: ’../lib/requirejs/text’,

    },

    shim: {

        jquery: {

            "exports" : "$"

        }

    }

});

require([

    ’jsx!app.react’

], function (App) {

    App.initialize();

});

require()中的jsx指示requirejs,在加载app.react模块的时候,先通过jsx对代码进行编译,这样就可以实现requirejsreact集成使用。require如果在configpaths中没有找到模块,就会从baseUrl开始查找要加载的模块;

app.react.js会加载该入门应用的核心代码

’use strict’;

 

define([

    ’react’, ’react-dom’, ’jquery’,’jsx!component/CardComponent.react’,

    ’data/interest’

], function (React , ReactDOM, $,CardComponent , interestData) {

    var initialize = function () {

        ReactDOM.render(

            <div class="js-intro-container">

            {

                interestData.map(function (card) {

                    console.log(card);

                    return <CardComponent carddata={card}/>

                })

            }

            </div>,

            document.getElementById(’js-intro-container’)

        );

 

    };

    return {

        initialize: initialize

    };

});

data/interest.js文件中存储的是一个数组,数组中存储的数据,将会使用在CardComponent组件中,这里的CaredComponent组件是React.createClass方法把一段html代码段,封装成一个模块来调用。个人觉得react的核心封装能力就体现在这里。代码如下:

’use strict’;

 

define([

    ’react’

],function(React){

    return React.createClass({

        render: function() {

            return (

            <div className="row intro-row js-intro-row">

                // 此处省略......

                <img src={this.props.cardData.img} alt="" className="card-image"/>

                // 此处省略......

            </div>

            );

        }

    });

});

 

最终效果

至此,将所有项目相关的静态代码直接放到浏览器中就可以运行代码,也可以直接部署到服务器的对应目录下运行。

初识React前端框架开发

最终效果图

react这种封装组件和模块化的方式,确实特别高效。写出的代码逻辑很清晰。非常值得亲自动手尝试一下。

 


原文来自:简书/liuwill

React前端框架开发入门

标签:

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
jiangjie190
加入时间:2016-02-19
  关注此人  发短消息
文章分类
jiangjie190”关注的人------(0
jiangjie190”的粉丝们------(1
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!