zoukankan      html  css  js  c++  java
  • babel(一)

    一、babel

    npm babel  src/index.js -d lib

     二、@babel/core   @babel/cli

    @babel/core  转换语法核心

     @babel/cli   执行脚本

    三、@babel/preset-env

    四、babel-pollyfill

    npm install --save @babel/polyfill

    The @babel/polyfill module includes core-js and a custom regenerator runtime to emulate a full ES2015+ environment.

    This means you can use new built-ins like Promise or WeakMap, static methods like Array.from or Object.assign, instance methods like Array.prototype.includes, and generator functions (provided you use the regenerator plugin). The polyfill adds to the global scope as well as native prototypes like String in order to do this.

    For library/tool authors this may be too much. If you don't need the instance methods like Array.prototype.includes you can do without polluting the global scope altogether by using the transform runtime plugin instead of @babel/polyfill.

    To go one step further, if you know exactly what features you need polyfills for, you can require them directly from core-js.

    Now luckily for us, we're using the env preset which has a "useBuiltIns" option that when set to "usage" will practically apply the last optimization mentioned above where you only include the polyfills you need. With this new option the configuration changes like this:

     If we weren't using the env preset with the "useBuiltIns" option set to "usage" we would've had to require the full polyfill only once in our entry point before any other code.

    三、transform-runtime

    We have separated out Babel's helpers from it's "polyfilling" behavior in runtime. More details in the PR.

    @babel/runtime now only contains the helpers, and if you need core-js you can use @babel/runtime-corejs2 and the option provided in the transform. For both you still need the @babel/plugin-transform-runtime

    This PR splits our setup into two separate runtimes:

      

    'plugins': [
      ['transform-runtime'],
    ]
    with npm install --save @babel/runtime that just includes our helpers, and relies on users to globally polyfill any APIs they need.
    'plugins': [
      ['transform-runtime', { corejs: 2 }],
    ]
    with npm install --save @babel/runtime-corejs2 that includes everything @babel/runtime does, but also includes a passthrough API for corejs@2.x and rewrites all of the helper modules to reference core-js.

    @babel/runtime is a library that contain's Babel modular runtime helpers and a version of regenerator-runtime.

    具体作用地址: https://babeljs.io/docs/en/babel-runtime

    @babel/runtime-corejs2 is a library that contain's Babel modular runtime helpers and a version of regenerator-runtime as well as core-js.

    Difference from @babel/runtime

    This can be used instead of a polyfill for any non-instance methods. It will replace things like Promise or Symbol with the library functions in core-js.

    具体作用地址: https://babeljs.io/docs/en/babel-runtime-corejs2

    五、plugins

    • Plugins run before Presets.
    • Plugin ordering is first to last.
    • Preset ordering is reversed (last to first).

    { "plugins": ["pluginA", ["pluginA"], ["pluginA", {}]] }

    六、presets

    • Stage 0 - Strawman: just an idea, possible Babel plugin.
    • Stage 1 - Proposal: this is worth working on.
    • Stage 2 - Draft: initial spec.
    • Stage 3 - Candidate: complete spec and initial browser implementations.
    • Stage 4 - Finished: will be added to the next yearly release.    

          { "presets": [ "presetA", ["presetA"], ["presetA", {}], ] }

  • 相关阅读:
    在HQL里使用set方式设置的变量
    Nuxt.js 使用vue-social-share.js 插件 分享功能实践
    渗透测试被动信息搜集工具v0.1
    burp工具tips集合
    Go语言之数据类型(二)
    Go语言之数据类型(一)
    Go语言之变量
    Go语言快速入门
    Go语言环境搭建
    [SSH]基础知识——SSH、对称加密、非对称加密、公钥、私钥、中间人攻击
  • 原文地址:https://www.cnblogs.com/shangyueyue/p/10521443.html
Copyright © 2011-2022 走看看