React学习笔记-1-什么是react,react环境搭建以及第一个react实例
- 什么是react?
react的官方网站:https://facebook.github.io/react/
下图这个就是就是react的标志,非常巧合的是他和我们的github的编辑器Atom非常相似。react是Facebook官方推出的一个javascript的库,现在已经有了非常多的库和框架Facebook为什么还要开发一款新的框架呢?原因就是 Facebook遇到了一些新的问题。Facebook需要解决的问题是构建数据不断变化的大型应用。大型应用是什么意思?数据不断变化带来什么问题呢?
数据变化可以导致两个非常严重的问题,第一个问题是大量的dom操作;第二个问题就是逻辑会变得非常的复杂。数据要通过页面来进行展示,数据不断变化,就会导致dom不断变化,从而需要进行大量的dom操作,尽管我们已经了jQuery等操作dom的利器,但我们仍然需要编写许多手动的dom操作代码。数据和逻辑密切相关,数据变化的时候,逻辑也会发生变化,相信大家都会有这样的经历,当你去修改一个已有项目的时候,改动一个地方的代码,往往会产生许多意料之外的后果,这就是因为数据和逻辑之间的关系非常复杂,牵一发而动全身,所以数据变化会导致这样两种后果。
那react如何来解决这两个问题呢?对于dom操作,react的操作是采用自动dom操作,在react中,你不需要手动进行dom操作,只需要告诉react要展示什么内容,react会自动来操作dom。针对第二个问题,react的方案吧状态和内容显示的对应起来,这样我们就可以一目了然的知道,状态变化,内容会如何变化,从而理清程序的逻辑。 - react有两个特点:第一个是简单,第二个是声明式。简单有两层意思,第一层意思是react学习简单,上手容易,第二层意思是是react写出的代码非常简单,容易阅读。声明式就是我们前面说的自动dom操作,你只需要声明给react显示什么内容,至于如何把这些内容显示到页面上,是由react来帮你完成的。
- 在react中,核心是组件,组件的设计目的是提高代码的复用率,降低测试难度和代码复杂度。
组件提高代码复用率:组件将数据和逻辑封装,类似面向对象中的类。我们可以将通用的逻辑和数据封装起来,从而能提高代码的复用率。
降低测试难度:组件高内聚,低耦合,很同意对单个组件进行测试,通过模拟他的输入,或者输出,来测试组件的功能是否完善。
降低代码复杂度:直观的语法可以极大地提高可读性,降低代码的复杂度和维护难度。 - react的发展过程
2013年6月,Facebook官方发布react--------》2013年9月,react热度上涨,越来越多的人开始关注react-------》2015年3月,React Native发布(就是用react来编写跨平台的移动端应用),简单说就是我们可以用react来编写iOS,Android和Windows phone的应用,在目前的前端领域,代码模块化和用js来编写跨平台的移动端应用,是两个主要的探索方向,在用js来编写跨平台的移动端应用中,已经有了很多的方案,但是这些方案或多或少都有一些缺陷. - react的现状
react是发布在github上面的开源项目。
国外使用的公司:Facebook,Flipboard,Airbnb,BBC,Github,Instagram,Reddit,Uber,WhatApp,yahoo
国内使用React的公司:支付宝,淘宝,大搜车,Teambition,豆瓣,豌豆荚 - 这个教程使用的是0.13.2,我们是学习,就不下载了,直接使用cdn服务器:http://www.bootcdn.cn/
我们需要两个文件
react.js://cdn.bootcss.com/react/0.13.2/react.js
JSXTransformer.js://cdn.bootcss.com/react/0.13.2/JSXTransformer.js
使用的时候,记得在前面加上http://
可能这么说有点迷瞪,接着看下面的就懂了。 - react的程序结构
react程序本质上就是一个html页面,html页面中可以编写Js代码和css代码,当然我们也可以将js和css单独存放,最后在引入到html文件中。
这里需要注意的是,react程序非常特别的一点,就是使用了jsx,我们后面会详细说明jsx的用法,这里只要知道jsx是写在js里面的就行,下面我们放代码<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>hello world</title>
</head>
<body>
<script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/react.js"></script>
<script type="text/javascript" src="http://cdn.bootcss.com/react/0.13.2/JSXTransformer.js"></script>
<script type="text/jsx">
var HelloWorld=React.createClass({
render:function(){
return <p>Hello,world</p>
}
});
React.render(<HelloWorld></HelloWorld>,document.body);
</script>
</body>
</html>注意我们的第三个script的type类型为text/jsx,注意HelloWorld的首字母大写,我们后面会说。
React学习笔记-1-什么是react,react环境搭建以及第一个react实例的更多相关文章
- Python学习笔记 (1)Hello World(环境搭建+输出Hello World!)
随想 高考发挥失常.科三遇火车发挥失常,各种不顺……突然发现假期都快没了,才想起高考前想象的这个假期要做的一堆事,现在来多完成一件吧. 这几篇博客仅只是我的学习笔记,凑合看吧.我这个python小白看 ...
- 《精通并发与Netty》学习笔记(01 - netty介绍及环境搭建)
一.Netty介绍 Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序. ...
- JavaSE 学习笔记01丨开发前言与环境搭建、基础语法
本蒟蒻学习过C/C++的语法,故在学习Java的过程中,会关注于C++与Java的区别.开发前言部分,看了苏星河教程中的操作步骤.而后,主要阅读了<Java核心技术 卷1 基础知识>(第8 ...
- 【Spring学习笔记-1】Myeclipse下Spring环境搭建
*.hl_mark_KMSmartTagPinkImg{background-color:#ffaaff;}*.hl_mark_KMSmartTagBlueImg{background-color:# ...
- maven -- 学习笔记(一)之maven环境搭建
首先先感谢博主的分享http://www.cnblogs.com/yjmyzz/p/3495762.html 基本概念: Maven是基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建 ...
- Android学习笔记(一)——安卓开发环境搭建
安装教程以及资源(2015.11.8最新版):链接:http://pan.baidu.com/s/1kTnOsMr 密码:0ogf
- .NET学习笔记(2) — IIS服务器环境搭建
目录 一:开启Windows系统自带的IIS服务器方法 二:备注 三:常见问题 一:开启Windows系统自带的IIS服务器方法 第一步:安装IIS,控制面板->程序和功能-> ...
- 【JAVAWEB学习笔记】网上商城实战:环境搭建和完成用户模块
网上商城实战 今日任务 完成用户模块的功能 1.1 网上商城的实战: 1.1.1 演示网上商城的功能: 1.1.2 制作目的: 灵活运用所学知识完成商城实战. 1.1.3 ...
- Go学习笔记:Win7+LiteIDE+Go+Beego 环境搭建
安装过程比较简单 1.安装go语言环境: 2.安装git: 3.git bash 安装beego,输入“go get github.com/astaxie/beego”,等待一会儿,在D盘的 ...
随机推荐
- Java学习笔记-多线程-创建线程的方式
创建线程 创建线程的方式: 继承java.lang.Thread 实现java.lang.Runnable接口 所有的线程对象都是Thead及其子类的实例 每个线程完成一定的任务,其实就是一段顺序执行 ...
- duilib帮助
1.窗口基类:见介绍 顺便贴下出来,留底. .h class WindowImplBase : public CWindowWnd, public INotifyUI, public IMessage ...
- 五种开源协议(GPL,LGPL,BSD,MIT,Apache)
什么是许可协议? 什么是许可,当你为你的产品签发许可,你是在出让自己的权利,不过,你仍然拥有版权和专利(如果申请了的话),许可的目的是,向使用你产品的人提供 一定的权限. 不管产品是免费向公众分发,还 ...
- c#.NET微信自定义菜单
private void customMenu() { //获取access_token string access_token = GetAccessToken(); StringBuilder s ...
- 【Codeforces720D】Slalom 线段树 + 扫描线 (优化DP)
D. Slalom time limit per test:2 seconds memory limit per test:256 megabytes input:standard input out ...
- bzoj2179: FFT快速傅立叶
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- jsp中iframe填充装个页面
首先要引入这个css,由于我之前没有引入这个,导致iframe的高度一只是默认高度,没有改变 <style type="text/css"> body, html { ...
- django创建blog
如果本文看不懂的,去看的我视频吧!http://www.testpub.cn/ ------------------------------------------- Django 自称是" ...
- 移动端设置-----rem
对于现在不同尺寸的移动端屏幕,如果设置px来说实在有点影响用户体验,在小屏幕上太大,大屏幕上太小,不能实现响应式,所以就引进了rem的概念. rem是相对于根元素<html> 在我的项目中 ...
- logo新