zoukankan      html  css  js  c++  java
  • 了解babel

    1. Babel 是一个广泛使用的转码器,将 es6 转成 es5 ,从而在现有的环境执行,所以无需担心环境的问题,就可以使用es6语法
        另外,Traceur也可以将将 es6 转成 es5
    2. 配置文件.babelrc  或者在 package.json配置
     {“presets”: [], ‘plugins’: []}
        presets字段设定转码规则
     {“presets”: [“es2015”, “react”, “stage-2”], plugins: []}
       
    ps:npm install --save 与 npm install --save-dev 的区别是分别安装在dependencies (生产环境)和 devDependencie(开发环境)
    其中
            1> npm install默认会安装两种依赖 
            2> npm install packagename —dev (安装devDependencies)
            3> npm install packagename (只会安装dependencies)
    3. 与其他工具配合
       例如:eslint静态检查代码的风格和语法
           1> 安装:npm install —save-dev aslant babel-eslint
           2> 根目录新建配置文件 .eslint , 加入 parser 字段
     {‘parser’: ‘babel-eslint’, rules: {}}
           3>  package.json 中加入 scripts 脚本
              
    react on es6+
     
    1. 使用 React.Component instead React.createClass
    2. constructor 与 componentWillMount 用法相同
    // The ES5 way
    var EmbedModal = React.createClass({
      componentWillMount: function() { … },
    });
    constructor 默认返回实例对象(即this),
    子类必须在constructor方法调用super方法,否则新建实例时会报错,因为子类继承了父类的this对象
    也就是调用了父类的构造函数,react希望把所有props和state的定义都放在父类进行,子类中需要继承父类的构造函数来使用这些值
    // The ES6+ way
    class EmbedModal extends React.Component {
      constructor(props) {
        super(props);
        // Operations usually carried out in componentWillMount go here
      }
    }
    3. 属性的初始化
    // The ES5 way
    var Video = React.createClass({
      getDefaultProps: function() {
        return {
          autoPlay: false,
          maxLoops: 10,
        };
      },
      getInitialState: function() {
        return {
          loopsRemaining: this.props.maxLoops,
        };
      },
      propTypes: {
        autoPlay: React.PropTypes.bool.isRequired,
        maxLoops: React.PropTypes.number.isRequired,
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
      },
    });
    // The ES6+ way
    class Video extends React.Component {
      static defaultProps = {
        autoPlay: false,
        maxLoops: 10,
      }
      static propTypes = {
        autoPlay: React.PropTypes.bool.isRequired,
        maxLoops: React.PropTypes.number.isRequired,
        posterFrameSrc: React.PropTypes.string.isRequired,
        videoSrc: React.PropTypes.string.isRequired,
      }
      state = {
        loopsRemaining: this.props.maxLoops,
      }
    }
    4.箭头函数
    5.动态属性名
    对于想要访问 “变量+’Value’” 动态属性名可以使用 [`${}Value`], 例如:
    class Form extends React.Component {
      onChange(inputName, e) {
        this.setState({
          [`${inputName}Value`]: e.target.value,
        });
      }
    }
    6.传递属性
    其中,this.props 含有 className 属性
    1> 下面 className 为 override
    <div {...this.props} className="override">
      …
    </div>
    2> 下面 clasName 为 this.props里面的值
    <div className="base" {...this.props}>
      …
    </div>
  • 相关阅读:
    【题解】 「APIO2019」桥梁 操作分块+带权并查集 LOJ3145
    csp-s模拟测试42「世界线·时间机器·密码」
    csp-s模拟测试41「夜莺与玫瑰·玫瑰花精·影子」
    NOIP模拟测试38「金·斯诺·赤」
    NOIP模拟测试「简单的区间·简单的玄学·简单的填数·简单的序列」
    NOIP模拟测试34「次芝麻·呵呵呵·长寿花」
    理科卷math·english·chinese·biology·chemistry·physics
    NOIP模拟测试28「阴阳·虎·山洞」
    NOIP模拟测试30「return·one·magic」
    NOIP模拟测试29「爬山·学数数·七十和十七」
  • 原文地址:https://www.cnblogs.com/nalixueblog/p/6486278.html
Copyright © 2011-2022 走看看