module.exports、exports、export default、export、require、import

在es5中,用 module.exports 和 exports 导出模块,用 require 导入模块。

在es6中,新增 export default 和 export 导出模块,用 import 导入模块。

一般的,module.exports 和 exports 与 require 对应。export default 和 export 与 import 对应。

也就是说,用 module.exports 和 exports 导出的模块,用 require 导入;用 export default 和 export 导出的模块,用 import 导入。

当然,这也不是绝对的。如果开发环境支持es6语法,用es5的 module.exports 和 exports 导出的模块,可以使用es6的 import 导入;用es6的 export default 和 export 导出的模块,可以使用 es5 的 require 导入。

注意:Node.js中未实现对es6中 export default 和 export 这两个关键字的支持。 

原因:Node.js是CommonJS规范的实现,CommonJS规范使用require引入模块,使用module.exports导出模块

而 import 和 export (包括 export default 和 export)是es6的新特性,CommonJS模块规范和ES6模块规范完全是两种不同的概念。

本机node版本为 v10.6.0

我们可以来测试一下, import 在Node.js环境中的运行情况,新建index.js文件,输入如下代码,运行node index.js命令:

import fs from 'fs'
console.log(fs)

报错如下:语法错误:意外的标识符

(function (exports, require, module, __filename, __dirname) { import fs from 'fs'
                                                                     ^^
SyntaxError: Unexpected identifier

同理:测试 export 在Node.js环境中的运行情况:

export const a = 'ceshi'
console.log(a)

报错如下:语法错误:意外的关键字export

(function (exports, require, module, __filename, __dirname) { export const a = 'ceshi'
                                                              ^^^^^^
SyntaxError: Unexpected token export

那么,如何让 export 和 import 这两个es6新特性能在Node.js环境中使用呢?

噔噔噔噔~~~ 可以使用Babel代码编译库来解决哈!

初始化 package.json 配置文件

npm init

安装 Babel 插件

npm i babel-cli babel-preset-env -D

新建 .babelrc 配置文件,建在项目根目录哈

{
    "presets": [
        [
            "env",
            {
                "targets": {
                    "node": "current"
                }
            }
        ]
    ]
}

配置启动命令,在 package.json 配置文件中添加dev命令

"scripts": {
    "dev": "babel-node index"
}

 执行命令,这样就不会报错啦!

npm run dev

注意:若想在命令行直接运行命令 babel-node index 会报错的,这种情况下需将babel-cli插件安装到全局,才能使用babel-node命令。

npm install babel-cli -g

扩展:nodemon监测项目文件变化

nodemon会监测项目中所有的文件,一旦发现文件有改动,nodemon会自动重启应用。

安装 nodemon 插件

npm i nodemon -D

修改dev命令

"scripts": {
    "dev": "nodemon -w index.js --exec \"babel-node index.js --presets env\""
}

 使用 nodemon 监控 index.js文件 的变化,发生变化时来执行 babel-node命令 编译 index.js文件。

与君共勉:再牛逼的梦想,也抵不住傻逼般的坚持!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值