zoukankan      html  css  js  c++  java
  • Live2d Test Env

    开新坑啦!(超大声哔哔)

    一: react介绍

    react 是由Facebook于2013年开源的一个js库(私以为框架更合适),提倡all in js , 作为世界流行前三的框架,具有以下特点:

    1. 声明式编程

    UI = f(state)

    开发者不关心ui界面,而是注重页面逻辑,ui跟随state变化

    1. 组件化开发

    继承自React.Component的实例可以完成单实例开发

    1. 多平台适配

    2013年开源时仅适配web端;

    2015年开源的react-native支持app端

    2017年开源的react-VR支持基于5G的vr

    小程序端也可以使用基于react本身的taro框架开发

    react的亮点在于虚拟DOM和diff算法,这个先挖个坑

    二:react依赖

    使用基于react开发需要引入三个库:

    1.react-core : react核心代码,开发各种都必备的

    1. react-dom:react渲染在不同客户端时所需要的核心代码

    react在不同客户端所渲染的样式也有不同

    web端: react会将jsx最终渲染成真实DOM,并显示在浏览器中

    native端:react会将jsx最终渲染成客户端原生控件,比如Android的button,IOS的UIButton

    1. babel.js:这个是可选的,作用在于将jsx代码转换编译成react.createElement()编译后的代码,但react原生的ract.createElement写法太过繁琐且可读性差,因此更推荐使用jsx

    jsx: JavaScript XML 语法糖 是JavaScript的增强版本

    三. CDN引入

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

    crossorigin:允许脚本被跨域访问

    PS: 读者也可以将其下载到本地进行使用,cdn连接时间可能很长

    四:小案例-> 点击切换文字

    需求: 点击文本时,改变p标签以及btn内容

    <body>
        <div id="app">app</div>
         <script src="./react-core/react-core.js"></script>
         <script src="./react-core/react-dom.js"></script>
         <script src="./react-core/babel.js"></script>
         <!-- 如果使用jsx,script必须加text/babel的type -->
        <script type="text/babel">
            class App extends React.Component{
                constructor(){
                    super()
                    this.state = {
                        message: 'hello,world',
                        btnText:'按钮'
                    }
                }
                render() {
                 return (
                    <div>
                        <p>{this.state.message}</p>    
                        <button onClick={this.btnClick.bind(this)}>{this.state.btnText}</button>
                    </div>
                 )   
                }
                btnClick(){
                    console.log(11111111);
                    this.setState({
                        message:'已更改',
                        btnText: '已点击'
    
                    })
                }
            }
            ReactDOM.render(<App />,document.getElementById('app'))
        </script>
    </body>
    

    接下来从头到尾开始讲解步骤以及注意事项

    整个过程共分为三步:

    1. 继承组件
    2. 编写jsx
    3. 挂载、渲染组件到页面
    1. 继承组件

    继承自React.Component的APP子类,
    内部的constructor方法会初始化子类本身私有数据,
    es6规定extends必须要在constructor内部初始化一次super()函数用以初始化父类数据,
    this.state对象是react规定的一个对象,
    想要页面实时更新数据必须要在该对象内定义响应式数据(如:this.state.xxx),然后使用this.setState({})更改数据;

    render方法是react规定的用于编写jsx代码的函数,该方法必须存在(如果想写jsx),且不可更改

    子类响应式属性必须写在this.state中,子类的方法应写在子类内部,且,由于在jsx中的this找不到,因而暂时在函数后加bind方法重新绑定this

    2. 编写jsx

    jsx应该在render方法内部写,且render方法应return 为了表示这是一个整体,应该加小括号表示。

    jsx最外层应只有一个根元素, 区别于vue,react的响应式只有一个大括号,且要声明的响应式数据应该是this.state.xxx ,点击事件名外部也应该由单大括号包裹(类似小程序)

    子类响应式属性必须写在this.state中,子类的方法应写在子类内部,且,由于在jsx中的this找不到,因而暂时在函数后加bind方法重新绑定this

    jsx所触发的事件写在继承子类内部,与render、constructor并列

    3. 挂载、渲染组件到页面

    最后在APP外部使用ReactDOM.render(,document.getElementById('app'))

    ReactDOM.render: 负责将指定的组件或者jsx渲染到页面指定id上,且执行后会将原标签app的内容全部覆盖成APP组件的内容

    另: 需要开发者极为注意大小写,主要在于React.Component,onClick,ReactDOM...

    这个就是最近两日的个人心得,不足之处请多多指教

    以上。

  • 相关阅读:
    【STL】各容器成员对比表
    windows笔记页文件支持的内存映射文件
    windows笔记【内核对象线程同步】线程同步对象速查表
    windows笔记虚拟内存
    windows笔记使用内存映射文件在进程之间共享数据
    svn个人服务端
    解决安装Visual Studio .NET 2003 时FrontPage 2000 WEB 扩展客户端 安装失败
    vc6.0转vs2008连接错误
    Sublime Text插件推荐
    末日了,说出你的梦想、愿望还有遗憾吧。
  • 原文地址:https://www.cnblogs.com/hjk1124/p/14121388.html
Copyright © 2011-2022 走看看