最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue如何使用bable將es6轉(zhuǎn)譯為es5

 更新時間:2023年07月04日 11:51:37   作者:對的態(tài)度帶你走向?qū)Φ穆? 
這篇文章主要介紹了vue如何使用bable將es6轉(zhuǎn)譯為es5問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

為什么使用babel

ECMAScript 6(ES6)的發(fā)展速度非常之快,但現(xiàn)代瀏覽器對ES6新特性支持度不高,所以要想在瀏覽器中直接使用ES6的新特性就得借助別的工具來實現(xiàn)。

Babel是一個廣泛使用的轉(zhuǎn)碼器,babel可以將ES6代碼完美地轉(zhuǎn)換為ES5代碼,所以我們不用等到瀏覽器的支持就可以在項目中使用ES6的特性。

babel使用

1. 運行以下命令安裝所需的包(package)

npm install --save-dev @babel/core @babel/cli @babel/preset-env

2.在項目的根目錄下創(chuàng)建一個命名為 babel.config.json 的配置文件(需要 v7.8.0 或更高版本)

并將以下內(nèi)容復(fù)制到此文件中:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "edge": "17",
          "firefox": "60",
          "chrome": "67",
          "safari": "11.1"
        },
        "useBuiltIns": "usage",
        "corejs": "3.6.5"
      }
    ]
  ]
}

上述瀏覽器列表僅用于示例。請根據(jù)你所需要支持的瀏覽器進行調(diào)整。

參見 此處 以了解 @babel/preset-env 可接受哪些參數(shù)。

如果你使用的是 Babel 的舊版本,則文件名為 babel.config.js。

const presets = [
  [
    "@babel/preset-env",
    {
      targets: {
        edge: "17",
        firefox: "60",
        chrome: "67",
        safari: "11.1",
      },
      useBuiltIns: "usage",
      corejs: "3.6.4",
    },
  ],
];
module.exports = { presets };

3.插件和預(yù)設(shè)(preset)

代碼轉(zhuǎn)換功能以插件的形式出現(xiàn),插件是小型的 JavaScript 程序,用于指導(dǎo) Babel 如何對代碼進行轉(zhuǎn)換。

你甚至可以編寫自己的插件將你所需要的任何代碼轉(zhuǎn)換功能應(yīng)用到你的代碼上。

例如將 ES2015+ 語法轉(zhuǎn)換為 ES5 語法,我們可以使用諸如 @babel/plugin-transform-arrow-functions 之類的官方插件:

npm install --save-dev @babel/plugin-transform-arrow-functions

現(xiàn)在,我們代碼中的所有箭頭函數(shù)(arrow functions)都將被轉(zhuǎn)換為 ES5 兼容的函數(shù)表達式了:

const fn = () => 1;
// converted to
var fn = function fn() {
  return 1;
};

這是個好的開始!但是我們的代碼中仍然殘留了其他 ES2015+ 的特性,我們希望對它們也進行轉(zhuǎn)換。我們不需要一個接一個地添加所有需要的插件,我們可以使用一個 “preset” (即一組預(yù)先設(shè)定的插件)。

就像插件一樣,你也可以根據(jù)自己所需要的插件組合創(chuàng)建一個自己的 preset 并將其分享出去。

J對于當(dāng)前的用例而言,我們可以使用一個名稱為 env 的 preset。

npm install --save-dev @babel/preset-env

如果不進行任何配置,上述 preset 所包含的插件將支持所有最新的 JavaScript (ES2015、ES2016 等)特性。但是 preset 也是支持參數(shù)的。

我們來看看另一種傳遞參數(shù)的方法:配置文件,而不是通過終端控制臺同時傳遞 cli 和 preset 的參數(shù)。

配置

根據(jù)你的需要,可以通過幾種不同的方式來使用配置文件。另外,請務(wù)必閱讀我們關(guān)于如何 配置 Babel 的深入指南以了解更多信息。

其實vue 已經(jīng)引入了babel, 檢查package.json是否有依賴 @vue/cli-plugin-babel,只需要配置babel.config.js 和 package.json里添加下面代碼

package.json

"browserslist": [
    "> 1%",
    "last 2 versions",
    "not dead",
    "Chrome 40.0", // 兼容低版本谷歌
    "ie >= 9"  // 兼容ie 9
  ]

.babel.config.js

module.exports = {
  presets: [
    // https://github.com/vuejs/vue-cli/tree/master/packages/@vue/babel-preset-app
    '@vue/cli-plugin-babel/preset'
  ],
  'env': {
    'development': {
      // babel-plugin-dynamic-import-node plugin only does one thing by converting all import() to require().
      // This plugin can significantly increase the speed of hot updates, when you have a large number of pages.
      'plugins': ['dynamic-import-node']
    }
  }
}

實踐

1.在main.js中引入 ,一定要在最頂部引入

import "core-js/stable";
import "regenerator-runtime/runtime";

2.babel.config.js 配置

module.exports = {
  presets: [
    // '@vue/cli-plugin-babel/preset',
    [
      // '@babel/preset-env',
      '@vue/app',
      {
        modules: 'commonjs',
        useBuiltIns: 'entry',//entry usage
        corejs: "3",
        debug:true
      }
    ]
  ],
  sourceType: 'unambiguous'
  // "plugins": [
  //   [
  //     "@babel/plugin-transform-runtime",
  //     {
  //       "corejs": 3 // 指定 runtime-corejs 的版本,目前有 2 3 兩個版本
  //     }
  //   ]
  // ]
};

ie中遇到的問題

1.因為webstorm格式化會在最后一個屬性后面加一個,導(dǎo)致ie不兼容。

用eslint 格式化配置將最后一個逗號去掉。

在.eslintrc.js中加入

module.exports = {
  root: true,
  env: {
    node: true,
  },
  extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
  parserOptions: {
    parser: "babel-eslint",
  },
  rules: {
    "no-console": process.env.NODE_ENV === "production" ? "warn" : "off",
    "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
    'prettier/prettier': [
      process.env.NODE_ENV === 'production' ? 'warn' : 'off',
      {
        singleQuote: true,
        semi: false,
      },
    ],
    "comma-dangle": [1, "never"] // 這里就是格式化最后一個逗號
  },
};

2.因為項目中用到了sm4等加密方式,babel并沒有將依賴轉(zhuǎn)義為es5。

所以我們還要再加一個配置,讓babel轉(zhuǎn)譯我們的依賴。

在vue.config.js中加入配置項

transpileDependencies: [
    'sm-crypto',
    'bpmn-js',
    'bpmn-js-properties-panel',
    'diagram-js',
    'bpmn-moddle',
    '@bpmn-io',
    '@bpmn-io/element-templates-validator'
  ],

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

乌恰县| 淮安市| 正蓝旗| 资中县| 英吉沙县| 东至县| 丽水市| 平湖市| 米脂县| 临西县| 夏河县| 和田市| 灵川县| 宁远县| 绥宁县| 四平市| 阜康市| 临沭县| 洪洞县| 沐川县| 酒泉市| 蕉岭县| 金秀| 孝昌县| 沙湾县| 澄江县| 容城县| 霞浦县| 曲松县| 庄河市| 杨浦区| 龙南县| 广州市| 抚顺县| 通山县| 盐边县| 凤翔县| 阿瓦提县| 朔州市| 江华| 洞口县|