transpile/编译JS文件以在IE11中工作



我写了一些JS文件,并使用一些关键词为 async, await,lambda表达式和ecmas的某些功能。这在Chrome中工作正常,但我需要在IE 11中进行工作。

我找到了一个示例,可以将文件从src文件夹转移到lib,usign babel,但没有进行一些更改,例如,不等待转换。

.babelrc

{
    "presets": ["es2015"]
} 

jsconfig.json

{ 
    "compilerOptions":
    { 
        "target": "es6", 
        "module": "commonjs"
    }, 
    "exclude": [ "lib" ] 
} 

package.json

{
      "version": "0.1.0",
      "name": "es6-test",
      "author": "jesus.angulo@outlook.com",
      "devDependencies": 
      {            
          "babel-cli": "*",
          "babel-preset-es2015":"*"
      }
}  

task.json

{
    "version": "0.1.0",
    "command": "${workspaceRoot}/Transpiler/node_modules/.bin/babel",
    "isShellCommand": true,
    "tasks": 
    [
        {
            "taskName": "watch",
            "suppressTaskName": true,
            "isBuildCommand": true,
            "isBackground": true,
            "args": ["${workspaceRoot}/Transpiler/src","--out-dir","${workspaceRoot}/Transpiler/lib","-w" ]
        }
    ]
}

src/example.js

const greetings = ['Welcome', 'Willkommen', 'Hey', 'Gruezi'];
export function next() {
    let idx = Math.floor(Math.random() * greetings.length)
    return greetings[idx];
}
export function nth(n = 0) {
    return greetings[n];
}
function resolveAfter2Seconds(x) { 
    return new Promise(resolve => {
      setTimeout(() => {
        resolve(x);
      }, 2000);
    });
}
async function f1() {
    var x = await resolveAfter2Seconds(10);
    console.log(x); // 10
}
f1();

lib/example.js

function next() {
  var idx = Math.floor(Math.random() * greetings.length);
  return greetings[idx];
}
function nth() {
  var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
  return greetings[n];
}
function resolveAfter2Seconds(x) {
  return new Promise(function (resolve) {
    setTimeout(function () {
      resolve(x);
    }, 2000);
  });
}
async function f1() {
  var x = await resolveAfter2Seconds(10);
  console.log(x); // 10
}
f1();

我需要进行所有更改?


更新

我终于能够修复转板器。更改:

.babelrc

{
  "presets": [
    ["env",{
      "targets": { "browsers": ["last 1 versions"] },
      "debug": true
    }]
  ]
}

package.json

   {
      "version": "0.1.0",
      "name": "es6-test",
      "author": "jesus.angulo@outlook.com",
      "scripts": {
        "build": "babel src -d lib"
  },
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-es2017": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1"
  }
}

并使用命令npm run build

执行转介仪

async / await是ES2017规格的一部分,因此您需要包括适当的预设才能使其正常工作。这是Babel首页的链接,可以阅读有关它的更多信息:

https://babeljs.io/docs/plugins/preset-es2017/

最新更新