React基础

末鹿安然 提交于 2019-12-28 00:19:32

一.简介

二.安装

一.简介

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 将其导入。

    第八步、运行服务

    完成以上配置后,我们即可运行该服务:

     

  •  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!