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>
  • 相关阅读:
    Head first javascript(七)
    Python Fundamental for Django
    Head first javascript(六)
    Head first javascript(五)
    Head first javascript(四)
    Head first javascript(三)
    Head first javascript(二)
    Head first javascript(一)
    Sicily 1090. Highways 解题报告
    Python GUI programming(tkinter)
  • 原文地址:https://www.cnblogs.com/nalixueblog/p/6486278.html
Copyright © 2011-2022 走看看