Skip to content

React的介绍

用于构建用户界面的 JavaScript 库

声明式编程

声明式编程是目前整个大前端开发的模式:vue, react, flutter, swiftUI 它允许我们只需要维护自己的状态,当状态改变时,react可以根据最新的状态去渲染我们的UI界面

UI = f(state)

组件化开发

我们会将复杂的界面拆分成一个个小的组件,形成一个组件树

React的开发依赖

  • reatct:包含react所必须的核心代码
  • react-dom:react渲染在不同平台所需要的核心代码
  • babel:将jsx转换成React代码的工具(jsx —> js)
  • 对于Vue来说,只是依赖一个vue.js文件就可以,但是react要依赖三个包,因为它做了一个细化,让每个包可以去做自己的事情

Babel和React的关系

Babel,又名babel.js,是目前前端使用非常广泛的编译器、转移器

ES6、React JSX语法、TypeScript语法,都可以通过Babel工具转换成普通的Javascript代码

默认情况下开发React其实可以不用使用babel

但是前提是我们自己使用React.createElement来编写源代码,但是它编写的代码非常繁琐,可读性差

那么就可以直接编写jsx(JavaScript XML)的语法,并且让babel帮助我们转换成React.createElement

添加依赖的三种方式

CDN引入

最主要的:

js
    <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

例子:

js
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="root"></div>

    <script crossorigin src="https://unpkg.com/react@18/umd/react.development.js"></script>
    <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/@babel/standalone/babel.min.js"></script>

    <script type="text/babel">
    const root = ReactDOM.createRoot(document.querySelector('#root'))

    let message = "Hello World"

    // 监听按钮的点击
    function btnClick() {
        // 修改数据
        message = "Have a nice day"
        // 重新渲染界面(react不像vue一样会自动主动渲染)
        rootRender()
    }

    // 封装一个渲染函数
    function rootRender() {
        root.render((
            <div>
                <h2>{message}</h2>
                <button onClick={btnClick}>Click me</button>  
            </div>
        ))
    }

    rootRender()
    
    </script>

</body>
</html>

下载引入

先把网站里面的代码全部都搬下来,然后cdn引入就可以换成

js
<script src="../lib/react.js"></script>
<script src="../lib/react-dom.js"></script>
<script src="../lib/babel.js"></script>

npm下载引入(脚手架)

案例实现

jsx
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

    <div id="root"></div>

<script src="../lib/react.js"></script>
<script src="../lib/react-dom.js"></script>
<script src="../lib/babel.js"></script>

    <script type="text/babel">
    const root = ReactDOM.createRoot(document.querySelector('#root'))

    let message = "Hello World"

    // 监听按钮的点击
    function btnClick() {
        // 修改数据
        message = "Have a nice day"
        // 重新渲染界面(react不像vue一样会自动主动渲染)
        rootRender()
    }

    // 封装一个渲染函数
    function rootRender() {
        root.render((
            <div>
                <h2>{message}</h2>
                <button onClick={btnClick}>Click me</button>  
            </div>
        ))
    }

    rootRender()
    
    </script>

</body>
</html>