import、require、export、module.exports模式解析

针对以上的方法,我们要知道的是:

1. import,require 是导入语法,而 export ,module.exports 是导出语法

2. import 和 export 是 ES6+ 的语法,而 require 和 module.exports  是 CommonJS 规范下的语法,这 2 中方法是不兼容的,不能混合使用

ES6+ 的语法(默认和按需的导入导出也不能混合使用)CommonJS 规范语法

import { func } from './xxx'; // 按需导入

import func from './xxx';  // 默认导入

const module = require('./xxx') // 导入

export const func = () => { ... };  // 按需导出

export default func // 默认导出

module.exports = { func };  // 导出

 基于以上的分析,接下来说一说什么是CommonJS

CommonJS 是一种用于实现模块化的规范,主要用于 JavaScript 在服务器端的应用,它定义了模块的导入和导出方式,用来解决 JavaScript 中模块管理的问题,在node.js中普遍使用此语法来完成导入导出,但是这种语法会产生阻塞,会降低浏览器的性能,在不使用node.js的情况下,建议使es6的语法去导入导出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`import` 和 `export` 是现代 JavaScript(ES6 及以上版本)中的模块化引入和导出机制,而 `require` 和 `module.exports` 是 Node.js 中传统的模块加载方式。两者的主要区别在于: 1. **作用域和模块上下文**: - `import` 语句使得你可以在模块内部导入其他模块的代码块,创建一个封闭的作用域。这样,你可以避免全局污染,并且导入的内容只在当前模块的范围内可见。 - `require` 需要在 Node.js 中运行,它在全局作用域下查找并加载模块,这可能导致无意中的变量共享。 2. **语法和用法**: - `import` 支持静态导入,意味着编译时可以确定导入内容,提高了性能,同时还可以使用解构赋值等更灵活的导入方式。 - `module.exports` 用于导出一个模块的内容,它通常是一个对象,当你使用 `require` 时会返回整个导出对象。 3. **动态导入**: - `import()` 是动态导入,支持在运行时决定要加载的模块,这对于异步加载大文件或模块树非常有用。 - `require()` 没有内置的动态导入功能,需要借助第三方库(如 `dynamic-import-node`)实现。 4. **模块系统不同**: - ES6 的模块系统是 CommonJS 的超集,Node.js 原生支持 CommonJS。 - ES6 的模块系统更现代,推崇更简洁、面向对象的编程风格。 因此,`import` 和 `export` 提供了更符合现代 JavaScript 规范、易于理解和维护的模块化编程方式,特别是在开发 Web 应用程序时,它们是标准的写法。而在 Node.js 中,尽管 `import` 和 `export` 也可以被模拟使用,但建议使用 `require` 和 `module.exports` 或者 `export default` 的组合,以保持向后兼容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值