美文网首页
运维部署-React环境

运维部署-React环境

作者: 林昀熙 | 来源:发表于2019-12-19 10:50 被阅读0次

React介绍

React是一个用于构建用户界面的JavaScript库。
React主要用于构建UI,其本事不是一个MVC框架,只是是MVC中的V(视图)。
React起源于Facebook的开源项目,诞生之初用来架设Instagram网站。

React特点

  • 声明式设计 − React采用声明范式,可以轻松描述应用。
  • 高效 − React通过对DOM的模拟,最大限度地减少与DOM的交互。
  • 灵活 − React可以与已知的库或框架很好地配合。
  • JSX − JSX 是 JavaScript 语法的扩展。React 开发不一定使用 JSX ,但我们建议使用它。
  • 组件 − 通过 React 构建组件,使得代码更加容易得到复用,能够很好的应用在大项目的开发中。
  • 单向响应的数据流 − React 实现了单向响应的数据流,从而减少了重复代码,这也是它为什么比传统数据绑定更简单。

React入门示例

示例使用React版本v15.4.1; 库下载地址: https://github.com/facebook/react/releases

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <!-- react.js是react的核心库-->
    <script src="./build/react.js" charset="utf-8"></script>
    <!-- react-dom.js的作用是提供与Dom相关的功能-->
    <script src="./build/react-dom.js" charset="utf-8"></script>
    <!-- browser.min.js的作用是讲JSX语法转换成JavaScript预发 -->
    <script src="http://static.runoob.com/assets/react/browser.min.js"></script>
</head>
<body>
  <!-- React渲染的模板内容会插入到该Dom节点中,作为一个容器-->
  <div id="container"></div>
</body>
<!--
    在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel
    babel是一个转换编译器,ES6转成可以在浏览器中运行的代码
-->
<script type="text/babel">
  ReactDOM.render(
    <h1>第一个React示例程序</h1>,
    document.getElementById("container")
  );
</script>
</html>

说明:

  • build中的js库来自https://github.com/facebook/react/releases
  • 在React开发中,使用JSX语法,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel; babel是一个转换编译器,ES6转成可以在浏览器中运行的代码
  • ReactDom.render()是最基本的React语法,支持三个参数:(参数1:模板渲染的内容,为html形式, 参数2:模板需要插入的dom结点, 参数3: 渲染后的回调,一般不用)

React JSX

React使用JSX来替代常规的 avaScript; JSX是一个看起来很像XML的JavaScript语法扩展。

JSX必须借助React环境运行,JSX语法能够让我们更直观的看到组件的Dom结构,不能直接在浏览器上运行,最终会转换成JavaScript。
JSX标签其实就是HTML标签,只不过在JavaScript中书写这些标签时,不需要使用""括起来, 可以像xml一样书写

<script type="text/babel">
 ReactDOM.render(
    <h1>
        第一个React示例程序
    </h1>,
    document.getElementById("container")
  );
</script>

JSX中运行JavaScript代码,使用{}括起来, 语法格式为:{表达式}

<script type="text/babel">
  var text = "第一个React示例程序";
  ReactDOM.render(
    <h1>{text}</h1>,
    document.getElementById("container")
  );
</script>

React定义组件

React中创建组件类以大写字母开头,驼峰命名法; React中使用React.createClass方法创建一个组件类, 每个组件类都必须实现自己的render方法,输出定义好的组件模板,返回值:null、false、组件模板;

<script type="text/babel">
  // 定义组件类
  var HellComponent = React.createClass({
      render: function(){
        return <h1>第一个自定义组件</h1>;
      }
  });
  // 渲染dom
  ReactDOM.render(
    <HellComponent/>,
    document.getElementById("container")
  );
</script>

React定义样式

React组件样式样式,有三种: 内连样式(示例div元素)、对象样式(示例h1元素)、选择器样式(示例h2元素)。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <!-- react.js是react的核心库-->
    <script src="./build/react.js" charset="utf-8"></script>
    <!-- react-dom.js的作用是提供与Dom相关的功能-->
    <script src="./build/react-dom.js" charset="utf-8"></script>
    <!-- browser.min.js的作用是讲JSX语法转换成JavaScript预发 -->
    <script src="http://static.runoob.com/assets/react/browser.min.js"></script>
    <style>
      .ft{ color: blue;}
    </style>
</head>
<body>
  <!-- React渲染的模板内容会插入到该Dom节点中,作为一个容器-->
  <div id="container"></div>
</body>
<!-- 在React开发中,使用JSX,跟JavaScript不兼容,在使用JSX的地方,要设置type:text/babel
     babel是一个转换编译器,ES6转成可以在浏览器中运行的代码
-->
<script type="text/babel">

  // react中定义对象样式
  var hellStyle = {
    backgroundColor: "green",
    color: "red",
  }

  // 定义组件类, this.props定义组件属性
  var HellComponent = React.createClass({
      render: function(){
        return (
          <div style={{backgroudColor:"yellow", borderWidth:5}}>
            <h1 style={hellStyle}>第一个自定义组件,动态参数{this.props.param1}</h1>
            <h2 className="ft">第一个自定义组件-动态参数:{this.props.param2}</h2>
          </div>
        );
      }
  });

  // 渲染dom
  ReactDOM.render(
    <HellComponent param1="参数1" param2="参数2"/>,
    document.getElementById("container")
  );
</script>
</html>

在React和Html5中设置样式时书写格式是有区别的:

  • html5样式以;结尾,React以,结尾
  • Html5中key,value都不需要加引号, React中属于JavaScript对象, key的名字不能出现“-”, 需要使用驼峰命名法, 如果value为字符串需要加""
  • Html5中value如果是数字,需要带单位,React中不需要带单位.
  • Html5中选择器样式使用class, React中class是关键字,使用选择器样式时, 属性名使用className, 类似的也有使用htmlFor替换for.

React事件操作

React事件示例

<script type="text/babel">
    var BtnAction = React.createClass({
      // react中事件命名规范: 首字母小写, 驼峰命名法
      handleClick: function(){
          alert("点击按钮触发事件");
      },
      render: function(){
        return (
          <button onClick={this.handleClick}>{this.props.buttonTitle}</button>
        );
      }

    });
    // 渲染dom
    ReactDOM.render(
    <BtnAction buttonTitle="React事件按钮"/>,
    document.getElementById("container")
    );
</script>

React状态操作

React状态示例

<script type="text/babel">
    var CheckButton = React.createClass({
        // 定义初始状态
        getInitialState: function(){
          return {
            // 在这个对象中设置的属性值,将会存储在stage中,
            isCheck: false
          }
        },
        // 定义事件绑定方法
        HandleChange: function(){
          // 修改状态值,通过this.stage读取设置的状态
          this.setState({
            isCheck: !this.state.isCheck
          });
        },
        render: function(){
          // 根据状态设置显示的文字
          // 在JSX语法中,不能直接使用if,需要使用三目运算符
          var text = this.state.isCheck? "已选中": "未选中";
          return (
            <div>
              <input type="checkbox" onChange={this.HandleChange} />
              {text}
            </div>
          );
        }
    });

    // 渲染dom
    ReactDOM.render(
    <CheckButton/>,
    document.getElementById("container")
    );
</script>

当state发生变化时,会调用组件内部的render方法。

ReactNative和React的关系

React用于web应用开发,ReactNative采用React方式进行移动应用开发.
ReactNative采用React预发,用于进行JavaScript跨终端应用开发,既拥有原生Native的交互体验,又能够保留React的开发效率.使用灵活的Html和Css布局,使用React语法构建组件,然后同时运行在Ios和Android平台上.

ReactNative安装前提

Mac下安装Homebrew(非必须)
安装操作

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
[yunxi@localhost ~ ]$ brew -v
Homebrew 0.9.5 (git revision a8d6; last commit 2016-03-15)

建议不定时的更新

[yunxi@localhost ~]$ brew update && brew upgrade

安装NodeJs
安装react前需要保证已经安装了nodeJs,下载地址:https://nodejs.org/en/

[yunxi@localhost ~]$ brew install node

ReactNative安装

mac系统安装react-native

[yunxi@localhost ~ ]$ node --version
v7.2.0
[yunxi@localhost ~ ]$ sudo npm install -g react-native-cli

安装Watchman和Flow,监控文件变化和类型检查的。

[yunxi@localhost ~ ]$ brew install watchman
[yunxi@localhost ~ ]$ brew install flow

ReactNative创建项目

初始化项目使用命令react-native init 工程名称

[yunxi@localhost wuyu-platform (master ✗)]$ react-native init wuyuApp

初始化完会看到如下提示:

To run your app on iOS:
   react-native run-ios
   - or -
   Open ios/wuyuApp.xcodeproj in Xcode
   Hit the Run button
To run your app on Android:
   Have an Android emulator running (quickest way to get started), or a device connected
   react-native run-android

启动调试

[yunxi@localhost wuyu-platform (master ✗)]$ cd wuyuApp
[yunxi@localhost wuyuApp (master ✗)]$ ls
__tests__        android          index.android.js index.ios.js     ios              node_modules     package.json
[yunxi@localhost wuyuApp (master ✗)]$ react-native run-ios
[yunxi@localhost wuyuApp (master ✗)]$ react-native run-android

ReactNative开发工具

推荐开发工具Atom,下载地址:https://atom.io/; Atom常用插件推荐:

  • open-in-browser: 浏览器浏览功能
  • atom-html-preview: 分屏展示html页面效果
  • autocomplete-path: 文件路径补全

React资料

相关文章

  • 运维部署-React环境

    React介绍 React是一个用于构建用户界面的JavaScript库。React主要用于构建UI,其本事不是一...

  • 运维部署- Weex环境

    Weex介绍 Weex 是一套简单易用的跨平台开发方案,能以web的开发体验构建高性能、可扩展的native应用,...

  • 搭建自己的前端高效部署工具

    公司运维没有给我们前端配置自动部署前端项目的实施,现阶段只有生产环境实现了一键部署,部署频率较高的开发、测试环境上...

  • Fastdfs的安装部署配置

    linux 运维:安装+部署+配置 安装:编译安装部署:涉及到权限问题配置:见招拆招 运行环境:Ubuntu 16...

  • iOS 搭建 React Native 开发环境-HelloWo

    iOS 搭建 React Native 开发环境 转载-iOS 搭建 React Native 开发环境 部署环境...

  • Gulp 不同部署环境设置

    概述 某些项目使用 jenkins 做自动构建,一份代码可能会部署到多个环境,如:正式环境、UAT 环境,运维不可...

  • Docker安装和基本使用

    Docker 简介 背景 开发和运维之间因为环境不同而导致的矛盾 集群环境下每台机器部署相同的应用 DevOps(...

  • 国内linux服务器集群管理的平台

    对于使用服务器集群来管理操作的站长或运维人员来说,手动部署环境和和一键式部署环境大家都有见解. 对于服务器集群管理...

  • saltstack运维工具

    一、初识运维 运维都做哪些事?1.机房设备上下架2.系统初始化3.应用环境初始化4.应用的部署 调试 配置 ...

  • 软件测试开发基础|测开中的几个工具开发实战

    需求描述:开发通过jenkins打包成功运维推送一条打包数据,测试部署成功运维推送一条部署数据,同1个版本记录部署...

网友评论

      本文标题:运维部署-React环境

      本文链接:https://www.haomeiwen.com/subject/zzhmnctx.html