react初始(1)

  前言:react框架的出现是因为Facebook在建设Instagram交流平台的时候要处理大量的数据流,但是行业流行的MVC框架并不能适合Facebook公司的要求,他们就组织了自己的人力来开发react框架,发现很好用,并且在2013年实现了开源,react框架最求的目标就是只需要一个框架,在PC端mobile端和server上都能够运行。作为前端开发人员了来说掌握这种框架应该是必须的吧,只可惜我是菜鸟啦,现在这个时候才开始学习react,感觉会不会太晚呢,前几天微信的小程序出来了,各位大神们仿佛要吹捧上了天,这么几天过去了没见有一个做好的小程序发布出来,要说它可能颠覆移动app我并不是太看好,首先你得让所有用户去下载微信,然后再用你得微信,说极端点儿,手机里大部分的应用都移植到到了小程序里,那么手机是不是不需要一直在出高配的呢,那还需要手机做出来那么多功能干什么呢?所以我本人觉得微信小程序的出现会让一些不出名的APP看到希望,但对于那些早已经进入民众潜意识里的应用,在未来几年内用户还是青睐下载的,所以小程序和APP并存的现象会继续很长一段儿时间的。

  貌似扯远了,还是继续我的react之路吧,小程序我也玩了会儿,现在才发现他的底层原理和react好像啊,那么我更要抓紧学好 react了。恩,先甩个链接react官网的链接:https://facebook.github.io/react/docs/getting-started.html天才第一步当然是下载他们的框架啦:

 1 <!DOCTYPE html>
 2 <html>
 3   <head>
 4     <meta charset="UTF-8" />
 5     <title>Hello React!</title>
 6     <script src="build/react.js"></script>
 7     <script src="build/react-dom.js"></script>
 8     <script src="https://unpkg.com/[email protected]/browser.min.js"></script>
 9   </head>
10   <body>
11     <div id="example"></div>
12     <script type="text/babel">
13       ReactDOM.render(
14         <h1>Hello, world!</h1>,
15         document.getElementById(‘example‘)
16       );
17     </script>
18   </body>
19 </html>
恩,知道了我们要先在我们的文档中引入react.js--ract-dom.js--browser.min.js(采用外部引入的方式,断网的时候不可用哦)肿么办呢,还好复制这个链接到浏览器的地址栏https://unpkg.com/[email protected]/browser.min.js恩我们就看到了压缩版的js源码,那就动动的小手Ctrl+C+V了,然后新建一个js脚本文件

把咱们复制的代码粘贴到里面就好了,这样我们就有了browser.min.js了,开心的用吧!

  万事俱备开始我的第一个小demo的练习吧! 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div id="App"></div>
 9 </body>
10 <script src="lib/react.min.js"></script>
11 <script src="lib/react-dom.min.js"></script>
12 <script src="lib/browser.min.js"></script>
13 <script type="text/babel">//类型不要写成了text/javascript
14     var HelloReact = React.createClass({            //1.创建react组件,组件名首字母必须大写
15         render : function(){
16             return(
17                     <div>This is my first react!</div>
18             )
19         }
20     })
21     ReactDOM.render(<HelloReact/>,document.getElementById("App"));   //2.渲染组件并把它插入html节点里面22     //1.react.min.js里有一个核心对象--React.createClass
23     //2.render 我们创造的组件都在render里面
24     //3.react.min.js reactDOM.render(</组件名>,要插入的节点);
25 </script>
26 </html>

抱歉,中午睡了一觉现在都应两点了,留给我自己的时间并不是很多了



  那么我们能在文档中插入元素了,如何给元素添加样式呢?我们再看下一个例子咯:谨记--可以直接给我们生成的元素加id或则直接加className然后通过styel标签加样式,但是react并不支持 这种行为,它不能体现react额组件化,应该是每个组件与自己的内容和样式。所以我们采取变量的方式来给元素加样式。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8     <div id="App"></div>
 9 </body>
10 <script src="lib/react.min.js"></script>
11 <script src="lib/react-dom.min.js"></script>
12 <script src="lib/browser.min.js"></script>
13 <script type="text/babel">//类型不要写成了text/javascript
14    var HelloReact = React.createClass({
15        render : function(){
16            var style1 = {fontSize:"18px",color:"red"};
17            var style2 = {textDecoration:"underline"};
18            var style3 = {fontSize:"20px"};
19            return(
20                    <div style={style1}>This is my first React!
21            <span style={style2}>这是一个span标签</span><b style={style3}>这是一个b标签</b>
22            </div>
23            )
24        }
25    });
26     ReactDOM.render(<HelloReact/>,document.getElementById("App"));
27 </script>
28 </html>

这种方式如果标签比较多的时候就显得代码很臃肿了,并不是那么优雅所以就有了下面的方法:

 1 <script src="lib/react.min.js"></script>
 2 <script src="lib/react-dom.min.js"></script>
 3 <script src="lib/browser.min.js"></script>
 4 <script src="style.js"></script>                              //把我们的样式写在一个syle.js文件里面
 5 <script type="text/babel">//类型不要写成了text/javascript
 6    var HelloReact = React.createClass({
 7        render : function(){
 8            return(
 9                    <div style={style.style1}>This is my first React!
10            <span style={style.span1}>这是一个span标签</span><b style={style.b1}>这是一个b标签</b>
11            </div>
12            )
13        }
14    });
15     ReactDOM.render(<HelloReact/>,document.getElementById("App"));
16 </script>

style.js 文件夹里面的写法如下:

var style = {
    style1 : {fontSize:"20px",color:"red"},
    span1 : {fontSize:"24px",color:"black"},
    b1 : {fontSize:"14px",color:"orange"}
}

还能通过给我们创建的组件的prototype来给元素加样式,真的很神奇哦(原谅我的无知):

我们给标签加样式可以采用如下两种:1.局部变量的样式 2.定义全局样式

 1 <script type="text/babel">//类型不要写成了text/javascript
 2     var HelloReact = React.createClass({
 3             Click : function(){
 4                 alert("被点击了!");
 5             },
 6         render : function(){
 7             return(
 8                     <button onClick={this.Click}>按钮</button>
 9             )
10         }
11     });
12     HelloReact.prototype.css = {
13         size : {fontSize:"40px;"}
14     }
15     ReactDOM.render(<HelloReact/>,document.getElementById("App"));
16 </script>

如果采用全局的样式具体写法如下,但是我自己造了一个Bug到现在都没有解决 

<script type="text/babel">//类型不要写成了text/javascript
    var HelloReact = React.createClass({
        var Ev = {
            Click : function(){
                alert("被点击了!");               //貌似问题出现在我这里
            }
        }
        render : function(){
            return(
                    <button onClick={Ev.Click}>按钮</button>
            )
        }
    });
    HelloReact.prototype.css = {
        size : {fontSize:"40px;"}
    }
    ReactDOM.render(<HelloReact/>,document.getElementById("App"));
</script>

另外一种加事件的方式是通过prototype,这里我就不再介绍了。

  想要在页面中加入多个标签怎么办呢?react也给我们提供一种方式,原谅我不知道开发者为什么要这样考虑,暂且这样用啦!代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="App"></div>
</body>
<script src="lib/react.min.js"></script>
<script src="lib/react-dom.min.js"></script>
<script src="lib/browser.min.js"></script>
<script src="style.js"></script>
<script type="text/babel">//类型不要写成了text/javascript
  var Header = React.createClass({
      render : function(){
          return(
              <header>这是头部</header>
          )
      }
  });
  var Content = React.createClass({
      render : function(){
          return(
              <section>这是主体</section>
          )
      }
  });
  var Footer = React.createClass({
      render : function(){
          return(
            <footer>这是底部</footer>
          )
      }
  });
  var Root = React.createClass({     //关键一步在这里
      render : function(){
          return(
              <div>
                  <Header/>
                  <Content/>
                  <Footer/>
              </div>
          )
      }
  });
  ReactDOM.render(<Root/>,document.getElementById("App"));
</script>
</html>

老是包这样的错误很烦人啊,不过貌似是因为文档的加载顺序错误有关,那么我就把script标签里的内容加到body标签里面看看有没有什么变化:

恩,这放置之后就没有什么问题了,看来我 还是太嫩了

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 <script src="lib/react.min.js"></script>
 9 <script src="lib/react-dom.min.js"></script>
10 <script src="lib/browser.min.js"></script>
11 <script src="style.js"></script>
12 <script type="text/babel">
13   var Header = React.createClass({
14       render : function(){
15           return(
16           <div>
17               <ul style={style1.style2}>
18                   <li>hello</li>
19                   <li>hello</li>
20                   <li>hello</li>
21                   <li>hello</li>
22                   <li>hello</li>
23                   <li>hello</li>
24               </ul>
25               <ul style={style1.style3}>
26                   <li>你好</li>
27                   <li>你好</li>
28                   <li>你好</li>
29                   <li>你好</li>
30                   <li>你好</li>
31                   <li>你好</li>
32               </ul>
33
34           </div>
35           )
36       }
37   });
38   ReactDOM.render(<Header/>,document.getElementById("App"));
39 </script>
40     <div id="App"></div>
41
42 </body>
43
44 </html>

刚才写了一个小demo气得不行,自己的逻辑绝逼差的要死,卡了我至少20分钟!

时间: 2024-10-19 22:23:37

react初始(1)的相关文章

二、React初体验之React组件创建

(中间因为应付各种考试,处理其他事情,隔了好时间没更新,现在终于有时间了,续上!) 本文为React初始体验,因此先不考虑文件如何组织,尽量以最简单的方式让大家了解React其中的原理. 在创建组件(component)之前,大家首先需要了解一些基础知识.有ES6.JSX语法等基础知识的同学请跳过下面一段. ES6是JavaScript的最新标准,里面新增了许多语法方式,甚至出现了“类”的继承方式,我个人暂且把他们理解为新增了许多“语法糖”,这些“语法糖”可能带给老手的是方便,而对于我们这些菜鸟

[转] React同构思想

React比较吸引我的地方在于其客户端-服务端同构特性,服务端-客户端可复用组件,本文来简单介绍下这一架构思想. 出于篇幅原因,本文不会介绍React基础,所以,如果你还不清楚React的state/props/生存周期等基本概念,建议先学习相关文档 客户端React 先来回顾一下React如何写一个组件.比如要做一个下面的表格: 可以这样写: 先创建一个表格类. Table.js var React = require('react'); var DOM = React.DOM; var ta

搭建一个简单的React项目

我是使用了create-react-app来搭建的基本框架,其中的原理和vue-cli差不多的脚手架.(当然也可以自己配置项目目录,这里我偷了一下懒) npm install -g create-react-app 先装脚手架 create-react-app elemApp 这样就可以生成一个名为elemApp的react初始框架了 这上面的就不细说了,用过三大框架的应该都清楚. 1.创建目录结构 其实这些目录都是可以按照个人习惯来定义,但是不可缺少的一定要加上 2.安装路由(创建Router

react+express项目

1 开发环境准备(windows) 1.1 安装nodejs和npm 1) 下载nodejs安装包:http://nodejs.org/en/download/ nodejs安装时会同时安装npm 2) 安装完成后检查是否安装成功 命令行输入以下命令,查看npm和node版本:npm -vnode -v   若未安装成功可检查环境变量是否安装时自动设置成功 1.2 安装create-react-app(react官方提供的脚手架)   命令行输入:npm install -g create-re

初始React Native

1.何是React Native: React-Native是:Facebook 在2015年初React.js技术研讨大会上公布的一个开源项目.支持用开源的JavaScript库React.js来开发iOS和Android原生App.初期仅支持iOS平台,同年9月份,该开源项目同时支持Android平台.React Native的原理是:在JavaScript中用React抽象操作系统原生的UI组件,代替DOM元素来渲染,比如以<View>取代<div>,以<Image&g

初始react native遇到的问题

转载自Andriod 使用react native时遇到的问题     打开现有项目报错: 从第一行Error可以知道是一个zip的压缩文件打不开,往下看应该是下载的Gradle文件有问题,提示也是让从新下载. 打开gradle-wrapper.properties文件看到是gradle-2.14.1-all.zip 使用的这个版本. 在安装目录下看看这个文件是否有问题. 默认安装模式是C:\Users\xiaxf\.gradle.也可以通过Android studio找到安装目录 File-s

React Native控件之PullToRefreshViewAndroid下拉刷新组件讲解

转载请标明出处: http://blog.csdn.net/developer_jiangqq/article/details/50664323 本文出自:[江清清的博客] (一)前言 今天我们一起来看一下PullToRefreshViewAndroid下拉刷新组件讲解以及使用实例 刚创建的React Native技术交流群(282693535),欢迎各位大牛,React Native技术爱好者加入交流!同时博客左侧欢迎微信扫描关注订阅号,移动技术干货,精彩文章技术推送! 该PullToRefr

Flux --&gt; Redux --&gt; Redux React 入门 基础实例使用

本文的目的很简单,介绍Redux相关概念用法 及其在React项目中的基本使用 假设你会一些ES6.会一些React.有看过Redux相关的文章,这篇入门小文应该能帮助你理一下相关的知识 一般来说,推荐使用 ES6+React+Webpack 的开发模式,但Webpack需要配置一些东西,你可以先略过,本文不需要Webpack基础 入门,只是一些基础概念和用法的整理,更完整的内容推荐去看看文档,英文,中文 (不过我个人认为,官方文档的例子相对来说太复杂了,很难让新手马上抓住重点) (官方的例子正

react+redux官方实例TODO从最简单的入门(2)-- 增

虽然官网的TodoList的例子写的很详细,但是都是一步到位,就是给你一个action,好家伙,全部都写好了,给你一个reducer,所有功能也是都写好了,但是我们这些小白怎么可能一下就消化那么多,那我们就来拆解,一步一步实现,试想我们开发程序也是一个一个功能区域实现,那么我们第一步就是先把整体结构构思出来,然后先把头部做出来,这样看是不是简单很多! 从官网下载的mode,然后配置什么的,我也不会弄,把里面的东西全删了,然后自己一个一个写,不然学一个react还要学配置环境,时间又没多少了,大致