React基础
一.简介
二.安装
一.简介
1.React 是一个用于构建用户界面的 JAVASCRIPT 库。
React主要用于构建UI(即User Interface(用户界面)),很多人认为 React 是 MVC 中的 V(视图)。
React 起源于 Facebook 的内部项目,用来架设 Instagram 的网站,并于 2013 年 5 月开源。
React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
2.React是Facebook开源的一个用于构建用户界面的一款JavaScript库,现已应用于Facebook及旗下Instagram应用。
React与庞大的AngularJS不同的地方在于它只专注于MVC框架中的V,即视图;这点使得React很容易与开发者已有的开发栈进行融合。
React在使用的时候,你应该从UI出发,抽象出不同的组件,继而将它们拼装起来;这点顺应了Web开发组件化的趋势。
3.React和其他一些JS框架的比较
- React不是一个MVC框架,它是构建易于可重复调用的web组件,侧重于UI, 也就是view层
- 其次React是单向的从数据到视图的渲染,非双向数据绑定
- 不直接操作DOM对象,而是通过虚拟DOM通过diff算法以最小的步骤作用到真实的DOM上。
- 不便于直接操作DOM,大多数时间只是对 virtual DOM 进行编程
4.React的应用情况
React在国外应用的比较多,例如Facebook、Yahoo、Raddit等都有使用到它。React在国内的应用相对较少,杭州大搜车算一个。大多技术要在国内应用起来一般是较慢的,不过React确实感觉比较特殊,特别是UI的组件化和Virtual DOM的思想。
5.React 是一个用于构建用户界面的JavaScript库。
- 用做UI: 许多人把React当做MVC设计模式中的视图(view),当把React成为你的技术掌握之后, 它可以很轻松应用于一个小功能的项目。
- 虚拟DOM:React用一个”虚拟DOM”实现了超高的性能,配合nodeJS也可以实现在服务端的渲染,不存在耗时的浏览器dom渲染。
- 数据流: React是一种减少引用数据流的实现方式,并且比传统的方式更容易实现数据绑定。
React 特点 1.声明式设计 −React采用声明范式,可以轻松描述应用。 2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。 3.灵活 −React可以与已知的库或框架很好地配合。 4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。 5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。 6.单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
二.安装
开始的最快方法是从CDN提供JavaScript(也可以在cdnjs 和 jsdelivr):
<!-- 核心React库 -->
<script src="https://fb.me/react-0.13.3.js"></script>
<!--浏览器中的JSX变换器,在预编译JSX时删除。 -->
<script src="https://fb.me/JSXTransformer-0.13.3.js"></script>
我们还制作了一个 入门工具包如果这是你第一次使用React,这可能是有用的。 它包括一个网页,其中包含使用React与实时代码的示例。
如果你想使用 bower, 这很简单:
bower install --save react
创建一个关于React的副本
我们在使用react.js之前要先搭建nodeJs,因为要引用其中大量的库,或许是你已经熟悉的。
必备条件
- 你的node版本应该在v0.10.0+以上(或许能在低版本上运行,我们没有测试过)
- 你应该熟悉npm,并且使用’sudo’以保证依赖包为全局安装
- 你应该熟悉git
构建
一旦你有了知识库的克隆,建立一份 react.js 真的很简单。
# grunt-cli is needed by grunt; you might have this installed alreadynpm install -g grunt-clinpm installgrunt build
在这一点上,你应该有一个构建/目录填充您需要使用React的所有内容。示例应该都可以工作。
Grunt
我们使用Grunt来自动化执行许多任务。运行 grunt -h 查看大部分完整的列表。 其中重要的知识点:
/*用PhantomJS创建并运行测试程序*/
grunt test
/*在你的浏览器上创建运行*/
grunt test --debug
/*你可以运行一个程序的时候加上'--filter'获得更快的速度。*/
grunt fasttest --filter=ReactIdentity
/*用ESLint保证高质量代码*/
grunt lint
/*销毁创建的目录*/
grunt clean
React 安装
React 安装
本节讲解 React 安装是如何操作的。
React 可以直接下载使用,下载包中也提供了很多学习的实例。
本教程使用了 React 的版本为 15.4.2,你可以在官网 http://facebook.github.io/react/ 下载最新版。
你也可以直接使用W3Cschool教程的 React CDN 库,地址如下:
<script src="//www.w3cschool.cn/statics/assets/react/react.min.js"></script> <script src="//www.w3cschool.cn/statics/assets/react/react-dom.min.js"></script> <script src="//www.w3cschool.cn/statics/assets/react/babel.min.js"></script>
以下实例输出了 Hello, world!
<!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> <title>Hello React!</title> <script src="//www.w3cschool.cn/statics/assets/react/react.min.js"></script> <script src="//www.w3cschool.cn/statics/assets/react/react-dom.min.js"></script> <script src="//www.w3cschool.cn/statics/assets/react/babel.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>
实例解析:
实例中我们引入了三个库: react.min.js 、react-dom.min.js 和 babel.min.js:
- react.min.js - React 的核心库
- react-dom.min.js - 提供与 DOM 相关的功能
- babel.min.js - Babel 可以将 ES6 代码转为 ES5 代码,这样我们就能在目前不支持 ES6 浏览器上执行 React 代码。Babel 内嵌了对 JSX 的支持。通过将 Babel 和 babel-sublime 包(package)一同使用可以让源码的语法渲染上升到一个全新的水平
ReactDOM.render( <h1>Hello, world!</h1>, document.getElementById('example') );
以上代码将一个 h1 标题,插入 id="example" 节点中。
-
注意:
如果我们需要使用 JSX,则 <script> 标签的 type 属性需要设置为 text/babel。
-
通过 npm 使用 React
如果你的系统还不支持 Node.js 及 NPM 可以参考我们的 Node.js 教程。
我们建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack,本教程使用 webpack。
-
第一步、安装全局包
$ npm install babel -g $ npm install webpack -g $ npm install webpack-dev-server -g
第二步、创建根目录
创建一个根目录,目录名为:reactApp,再使用 npm init 初始化,生成 package.json 文件:
$ mkdir reactApp $ cd reactApp/ $ npm init name: (reactApp) youj-react-test version: (1.0.0) description: W3Cschool教程 react 测试 entry point: (index.js) test command: git repository: keywords: author: license: (ISC) About to write to /Users/laolan/www/reactApp/package.json: { "name": "youj-react-test", "version": "1.0.0", "description": "W3Cschool教程 react 测试", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this ok? (yes)
第三步、添加依赖包及插件
因为我们要使用 React, 所以我们需要先安装它,--save 命令用于将包添加至 package.json 文件。
$ npm install react --save $ npm install react-dom --save
同时我们也要安装一些 babel 插件
$ npm install babel-core $ npm install babel-loader $ npm install babel-preset-react $ npm install babel-preset-es2015
第四步、创建文件
接下来我们创建一些必要文件:
$ touch index.html $ touch App.jsx $ touch main.js $ touch webpack.config.js
第五步、设置编译器,服务器,载入器
打开 webpack.config.js 文件添加以下代码:
var config = { entry: './main.js', output: { path:'./', filename: 'index.js', }, devServer: { inline: true, port: 7777 }, module: { loaders: [ { test: /\.jsx?$/, exclude: /node_modules/, loader: 'babel', query: { presets: ['es2015', 'react'] } }] } } module.exports = config;
- entry: 指定打包的入口文件 main.js。
- output:配置打包结果,path定义了输出的文件夹,filename则定义了打包结果文件的名称。
- devServer:设置服务器端口号为 7777,端口后你可以自己设定 。
- module:定义了对模块的处理逻辑,这里可以用loaders定义了一系列的加载器,以及一些正则。当需要加载的文件匹配test的正则时,就会调用后面的loader对文件进行处理,这正是webpack强大的原因。
现在打开 package.json 文件,找到 "scripts" 中的 "test" "echo \"Error: no test specified\" && exit 1" 使用以下代码替换:
"start": "webpack-dev-server --hot"
替换后的 package.json 文件 内容如下:
$ cat package.json { "name": "youj-react-test", "version": "1.0.0", "description": "W3Cschool教程 react 测试", "main": "index.js", "scripts": { "start": "webpack-dev-server --hot" }, "author": "", "license": "ISC", "dependencies": { "react": "^0.14.7", "react-dom": "^0.14.7" } }
现在我们可以使用 npm start 命令来启动服务。--hot 命令会在文件变化后重新载入,这样我们就不需要在代码修改后重新刷新浏览器就能看到变化。
第六步、index.html
设置 div id = "app" 为我们应用的根元素,并引入 index.js 脚本文件。
<!DOCTYPE html> <html> <head> <meta charset = "UTF-8"> <title>React App - W3Cschool教程(w3cschool.cn)</title> </head> <body> <div id = "app"></div> <script src = "index.js"></script> </body> </html>
第七步、App.jsx 和 main.js
这是第一个 react 组件。后面的章节我们会详细介绍 React 组件。这个组件将输出 Hello World!!!。
App.jsx 文件代码
import React from 'react'; class App extends React.Component { render() { return ( <div> Hello World!!!<br /> 欢迎来到W3Cschool教程学习!!! </div> ); } } export default App;
我们需要引入组件并将其渲染到根元素 App 上,这样我们才可以在浏览器上看到它。
main.js 文件代码
import React from 'react'; import ReactDOM from 'react-dom'; import App from './App.jsx'; ReactDOM.render(<App />, document.getElementById('app'))
注意:
如果想要组件可以在任何的应用中使用,需要在创建后使用 export 将其导出,在使用组件的文件使用 import 将其导入。
第八步、运行服务
完成以上配置后,我们即可运行该服务:
-