返回

5分钟快速掌握require()与import()的奥秘

前端

各位博友,我们今天的主角是JavaScript模块化界的两大巨头——require()和import()。这两位乍一看似同卵双胞,实则大有乾坤。咱们这就来一场5分钟速战,助你轻松掌握它们的奥妙。

语法层面

  1. require()
    const module = require('module-name');
  2. import
    import {exportedObject} from 'module-name';
    import exportedObject from 'module-name';

请注意,import()允许你使用解构语法来选择导入模块的特定部分,而require()则不行。

加载行为

require()是立即加载模块的,这意味着它会在脚本解析时立即加载指定的模块。import()则采用按需加载的方式,即只在实际使用模块时才会加载。

举个栗子:

  1. require()
    const moduleA = require('moduleA');
    const moduleB = require('moduleB');
    
  2. import
    import moduleA from 'moduleA';
    import moduleB from 'moduleB';
    

在require()的例子的中,即使moduleB从未被使用,它也会在脚本解析阶段被加载。而在import()的例子的中,moduleB只会在使用它的模块中加载。

模块定义

require()加载的是Commonjs模块,而import()加载的是ES模块。这两种模块定义的方式略有差异。

  1. Commonjs模块
    module.exports = {exportedObject};
  2. ES模块
    export {exportedObject};
    export default exportedObject;

请注意,ES模块也可以使用Commonjs模块的语法来导出和导入,但这不符合最佳時点。

总结

使用require()和import()时,需要遵循最佳规范,选择适合你项目的模块化方案。require()适用于需要立即加载模块的场景,而import()更适合按需加载模块,提高脚本的加载效率。

到这里,这场5分钟的速战告一段落。如果你有任何问题或讨论,欢迎在评论区畅聊。共同进步,共创辉煌!