JS篇(008)-require 与 import 的区别

答案:两者的加载方式不同、规范不同

解析:

第一、两者的加载方式不同,require 是在运行时加载,而 import 是在编译时加载

require('. /a')(); // a 模块是一个函数,立即执行 a 模块函数

var data = require('. /a'). data; // a 模块导出的是一个对象

var a = require('. /a')[0]; // a 模块导出的是一个数组 ======> 哪都行

import $ from 'jquery';

import * as _ from '_';

import {a, b, c} from '. /a';

import {default as alias, a as a_a, b, c} from '. /a'; ======>用在开头

第二、规范不同,require 是 CommonJS/AMD 规范,import 是 ESMAScript6+规范

第三、require 特点:社区方案,提供了服务器/浏览器的模块加载方案。非语言层面的标准。只能在运行时确定模块的依赖关系及输入/输出的变量,无法进行静态优化。

import 特点:语言规格层面支持模块功能。支持编译时静态分析,便于 JS 引入宏和类型检验。动态绑定。

 

[参与互动](https://github.com/yisainan/web-interview/issues/177)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: `import` 和 `require` 都是在 JavaScript 中用来导入模块的命令。但它们有一些重要的区别: 1. `import` 是 ECMAScript (ES) 模块的语法,而 `require` 是 CommonJS 模块的语法。 2. 使用 `import` 可以很容易地将一个模块中的多个部分分别导入到当前模块中,而使用 `require` 只能将整个模块导入。 3. `import` 是编译时加载,而 `require` 是运行时加载。 4. `import` 必须放在文件的顶部,而 `require` 可以放在文件的任何地方。 总而言之,如果你的项目使用了 ECMAScript 模块系统,则应使用 `import`;如果使用了 CommonJS 模块系统,则应使用 `require`。 ### 回答2: 在JavaScript中,模块是一个独立的、可重复使用的代码部分,可以被导入到其他模块中使用。Node.js在ES6之前并没有原生的模块系统,而是通过CommonJS规范实现了一套模块系统,其中包括两个常用的引入外部模块的方式:requireimport。 1. require - 作用:引入一个模块。 - 用法:require('模块路径'),其中模块路径可以是相对路径或绝对路径。 - 特点:同步加载,使用时必须使用完整路径或相对路径。 - 语法: ``` // 引入fs模块 var fs = require('fs'); // 引入自定义的模块 var myModule = require('./myModule'); ``` 2. import - 作用:引入一个模块。 - 用法:import from '模块路径',其中模块路径可以是相对路径或绝对路径。 - 特点:ES6引入的模块导入方式,异步加载,会在代码执行前先执行,可以使用相对路径。 - 语法: ``` // 引入fs模块 import fs from 'fs'; // 引入自定义的模块 import myModule from './myModule'; ``` 总结: - require是Node.js实现的引入模块的方式,可以在Node.js使用; - import是ES6中定义的模块导入方式,可以在浏览器端使用; - require同步加载,import异步加载; - 使用require必须使用完整路径或相对路径,而import可以使用相对路径; - require是通过module.exports导出,而import是通过export default导出。 ### 回答3: 在JavaScript中,我们可以使用importrequire关键字来引入其他文件中的模块或代码。虽然它们都可以实现模块的导入,但它们的使用方式和机制有许多不同的地方。 首先,import是ES6中的新特性,而require是CommonJS的一个技术实现。这意味着在使用import时,需要在浏览器中运行支持ES6的JavaScript引擎。而require则可以在主流的浏览器和Node.js环境中运行。 其次,使用import时,可以按照特定的格式导入需要使用的模块或函数,如下所示: ``` import {module} from 'module-name'; ``` 这会将module-name中的module导入到你的代码中,你可以直接使用它。同时,你还可以使用import语句作为延迟加载模块的方式,这意味着只有在需要使用该模块时才会进行加载。这有助于提高性能,尤其是在加载大型模块时。 相比之下,使用require时,则需要使用类似于下面这样的语法来导入模块: ``` const module = require('module-name'); ``` 这意味着你需要在代码中显示地声明需要使用哪些模块。这样做可以让代码更加易读,因为所有使用的模块都位于代码的开头部分。 最后还要指出的是,使用importrequire的方式可能会对代码的运行环境产生不同的影响。import语句只能在模块的顶部进行使用,而不能在循环或条件语句中使用。但require可以在运行时根据需要动态加载模块。在使用这两种方式时,需要仔细考虑自己的代码逻辑和需求,找到最适合自己的方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

手掌日月摘星辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值