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文件。

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这些关键字都是用于在 JavaScript 中导出模块的方式。 1. `module.exports` 是 CommonJS 规范中用于导出模块的方式。在 Node.js 中,`module.exports` 是一个指向当前模块导出对象的引用。可以通过给 `module.exports` 赋值来导出一个对象或函数。 例如: ``` // 导出一个函数 function add(a, b) { return a + b; } module.exports = add; ``` 2. `exports` 是 `module.exports` 的一个辅助对象,可以通过给 `exports` 对象的属性赋值来导出模块。 例如: ``` // 导出一个对象 exports.name = 'Tom'; exports.age = 18; ``` 这个模块实际上等价于: ``` module.exports = { name: 'Tom', age: 18 }; ``` 3. `export` 是 ES6 中用于导出模块的关键字。可以通过 `export` 关键字导出一个变量、函数或对象。 例如: ``` // 导出一个变量 export const name = 'Tom'; // 导出一个函数 export function add(a, b) { return a + b; } // 导出一个对象 export default { name: 'Tom', age: 18 }; ``` 4. `export default` 也是 ES6 中用于导出模块的关键字,但是它只能导出一个默认值。 例如: ``` // 导出一个默认值 export default function add(a, b) { return a + b; } // 导出一个默认对象 export default { name: 'Tom', age: 18 }; ``` 在导入模块时,可以使用 `import` 关键字来引入模块。例如: ``` // 导入 CommonJS 模块 const add = require('./add'); // 导入 ES6 模块 import { name, add } from './module'; import person from './person'; ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值