使用导入而不是要求在ES6中添加模块

Muh*_*min 5 javascript ecmascript-6

嗨,我正在尝试向我的代码添加一个模块。在ES5中,我使用了

var promise = require('bluebird');
Run Code Online (Sandbox Code Playgroud)

所以我尝试了一下,import { promise } from 'bluebird'但是为什么没有任何想法?

Muh*_*min 7

实际上import { promise } from 'bluebird'在 es5 中翻译为var promise = require('bluebird').promise. 所以相当于var promise = require('bluebird')在 es6 中import * as promise from 'bluebird'

编辑:基于@Bergi 的评论:import Promise from 'bluebird'是一个更简化的版本。


小智 7

通常使用import而不是require我们应该使用一些外部模块,因为Node.js尚不支持ES6的导入。

为此,我们首先必须安装这些模块babel-preset-es2015babel-cli

npm install --save-dev babel-preset-es2015 babel-cli
Run Code Online (Sandbox Code Playgroud)

然后我们创建一个点文件.babelrc,在其中添加该对象:

{
    "presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)

现在我们可以使用import而不是require。例如,我们可以尝试使用server.js这种代码express来解决问题,import而不是使用require

import express from 'express'; //instead of const express = require('express');
const app = express();

app.get('/',function (req, res){
    res.send('hello from import');
});

app.listen(4444, function(){
    console.log('server running on port 4444');
});
Run Code Online (Sandbox Code Playgroud)

最后,在我们的shell中,我们将必须运行以下命令:

./node_modules/.bin/babel-node app.js --presets es2015
Run Code Online (Sandbox Code Playgroud)