react(一)
来源:互联网 发布:mac flash过期 编辑:程序博客网 时间:2024/05/23 07:25
一、简介
React 是一个用于构建用户界面的JAVASCRIPT 库。
React主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图)。
React 起源于 Facebook 的内部项目,用来架设Instagram 的网站,并于 2013 年 5 月开源。
React 拥有较高的性能,代码逻辑非常简单,越来越多的人已开始关注和使用它。
二、特点
1.声明式设计 −React采用声明范式,可以轻松描述应用。
2.高效 −React通过对DOM的模拟,最大限度地减少与DOM的交互。
3.灵活 −React可以与已知的库或框架很好地配合。
4.JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使它。
5.组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
6.单向响应的数据流 − React实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。
三、hello world程序
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello React!</title>
<scriptsrc="http://static.runoob.com/assets/react/react-0.14.7/build/react.min.js"></script>
<script src="http://static.runoob.com/assets/react/react-0.14.7/build/react-dom.min.js"></script>
<scriptsrc="http://static.runoob.com/assets/react/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>
实例中我们引入了三个库: react.min.js 、react-dom.min.js 和 browser.min.js:
react.min.js - React 的核心库
react-dom.min.js - 提供与 DOM 相关的功能
browser.min.js - 用于将 JSX 语法转为JavaScript 语法
ReactDOM.render(
<h1>Hello,world!</h1>,
document.getElementById('example')
);
以上代码将一个 h1 标题,插入 id="example" 节点中。
注意:
如果我们需要使用 JSX,则 <script> 标签的 type 属性需要设置为 text/babel。
四、通过 npm 使用 React
建议在 React 中使用 CommonJS 模块系统,比如 browserify 或 webpack,本教程使用 webpack。
第一步、安装全局包
$ npm install babel -g
$ npm install webpack -g
$ npm install webpack-dev-server --save-dev # 或者 npm install webpack -g
第二步、创建根目录
创建一个根目录,目录名为:reactApp,再使用 npm init 初始化,生成 package.json 文件:
$ mkdir reactApp
$ cd reactApp/
$ npm init
name: (reactApp) runoob-react-test
version: (1.0.0)
description: 菜鸟教程 react 测试
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to /Users/tianqixin/www/reactApp/package.json:
{
"name":"runoob-react-test",
"version":"1.0.0",
"description":"菜鸟教程 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 文件添加以下代码:
varconfig = {
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":"runoob-react-test",
"version":"1.0.0",
"description":"菜鸟教程 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 - 菜鸟教程(runoob.com)</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 />
欢迎来到菜鸟教程学习!!!
</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 将其导入。
第八步、运行服务
完成以上配置后,我们即可运行该服务:
$ npm start
通过浏览器访问 http://localhost:7777/,即可得到输出结果。
五、React JSX
React 使用 JSX 来替代常规的JavaScript。
JSX 是一个看起来很像 XML 的 JavaScript 语法扩展。
我们不需要一定使用 JSX,但它有以下优点:
JSX 执行更快,因为它在编译为JavaScript 代码后进行了优化。
它是类型安全的,在编译过程中就能发现错误。
使用 JSX 编写模板更加简单快速。
1、使用JSX
JSX 看起来类似 HTML ,我们可以看下实例:
ReactDOM.render(
<h1>Hello,world!</h1>,
document.getElementById('example')
);
我们可以在以上代码中嵌套多个 HTML 标签,需要使用一个 div 元素包裹它,实例中的 p 元素添加了自定义属性 data-myattribute,添加自定义属性需要使用 data- 前缀。
ReactDOM.render(
<div>
<h1>菜鸟教程</h1>
<h2>欢迎学习 React</h2>
<pdata-myattribute = "somevalue">这是一个很不错的 JavaScript 库!</p>
</div>
,
document.getElementById('example')
);
2、独立文件
你的 React JSX 代码可以放在一个独立文件上,例如我们创建一个 helloworld_react.js 文件,代码如下:
ReactDOM.render(
<h1>Hello,world!</h1>,
document.getElementById('example')
);
然后在 HTML 文件中引入该 JS 文件:
<body>
<divid="example"></div>
<script type="text/babel" src="helloworld_react.js"></script>
</body>
3、JavaScript 表达式
我们可以在 JSX 中使用 JavaScript 表达式。表达式写在花括号 {} 中。实例如下:
ReactDOM.render(
<div>
<h1>{1+1}</h1>
</div>
,
document.getElementById('example')
);
在 JSX 中不能使用 if else 语句,但可以使用 conditional (三元运算) 表达式来替代。以下实例中如果变量 i 等于 1 浏览器将输出 true, 如果修改 i 的值,则会输出 false.
ReactDOM.render(
<div>
<h1>{i == 1 ? 'True!' : 'False'}</h1>
</div>
,
document.getElementById('example')
);
4、样式
React 推荐使用内联样式。我们可以使用 camelCase 语法来设置内联样式.React会在指定元素数字后自动添加 px 。以下实例演示了为 h1 元素添加 myStyle 内联样式:
var myStyle = {
fontSize:100,
color:'#FF0000'
};
ReactDOM.render(
<h1style = {myStyle}>菜鸟教程</h1>,
document.getElementById('example')
);
5、注释
注释需要写在花括号中,实例如下:
ReactDOM.render(
<div>
<h1>菜鸟教程</h1>
{/*注释...*/}
</div>,
document.getElementById('example')
);
6、数组
JSX 允许在模板中插入数组,数组会自动展开所有成员:
var arr = [
<h1>菜鸟教程</h1>,
<h2>学的不仅是技术,更是梦想!</h2>,
];
ReactDOM.render(
<div>{arr}</div>,
document.getElementById('example')
);
7、HTML 标签 vs. React 组件
React 可以渲染 HTML 标签 (strings) 或 React 组件 (classes)。
要渲染 HTML 标签,只需在 JSX 里使用小写字母的标签名。
var myDivElement = <div className="foo"/>;
ReactDOM.render(myDivElement, document.getElementById('example'));
要渲染 React 组件,只需创建一个大写字母开头的本地变量。
var MyComponent = React.createClass({/*...*/});
var myElement = <MyComponentsomeProperty={true} />;
ReactDOM.render(myElement, document.getElementById('example'));
React 的 JSX 使用大、小写的约定来区分本地组件的类和 HTML 标签。
注意:
由于 JSX 就是 JavaScript,一些标识符像 class 和 for 不建议作为 XML 属性名。作为替代,React DOM 使用 className 和 htmlFor 来做对应的属性。
- react(一):初识react
- React入门教程(一)
- react研究(一)
- react入门(一)
- react(一)
- React(一)初识
- React全家桶之React(一)
- react知识(一)React.createClass Vs React.Component
- react-native学习(一)
- React最佳实践(一)
- React 同构开发(一)
- 自学React Native(一)
- React 初步学习(一)
- React学习笔记(一)
- React学习笔记(一)
- React入门心得(一)
- React 实践项目 (一)
- 从零开始react入门(一)
- ABAP--原生SQL接口API(ADBC)的使用
- 问题五十五:怎么用ray tracing画Utah teapot (bicubic bezier patches)
- 一个执行计划异常变更的案例 - 外传之SQL AWR
- 线程不安全的ArrayList
- redis 进阶5-管道笔记
- react(一)
- 用java构建neo4j数据库
- 409. Longest Palindrome*
- 【Unix高级编程】现阶段函数汇总
- 杭电 2002 ( 计算球体积 ) java
- KPI关键绩效指标(Key Performance Indicator)
- [UOJ164] V 记录历史最值线段树
- playbook介绍
- jupyter notebook添加kernel