(区别、详解、使用)module.exports与exports,export与export default,import 与require

这篇具有很好参考价值的文章主要介绍了(区别、详解、使用)module.exports与exports,export与export default,import 与require。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

导出简介(里面有小细节请仔细阅读)

 module.exports与exports

1.该js文件要导出的值即为test

 2.该js文件要导出的值即为test1和test2

3. 注意这里我是先给module.exports.test2赋值,然后给module.exports赋值,因此{test1}覆盖了原来的test2,因此module.exports中只有test1

 4. 该js文件要导出的值即为test2

5. 注意这里(注意点),module.exports ={test1};改变了module.exports指向的引用,exports还指向之前的module.exports引用,因此无论exports.test2 = test2;在哪里执行都不能改变该js文件索要暴露的值。所以如果要改变module.exports指向的引用,就不要使用exports

export与export default 

1.根据输出可知:export default test1;等价于exports.default = test1; export {test2};等价于exports.test2 = test2;

(坑)export {}这个语法比较特殊,{}花括号中,必须是提前定义好的

(1)正确

(2)错误

 2.可见:要想使用export或者export defalut 就不能改变module.exports指向的引用

 (坑)上面第七行代码进行了,执行module的指向更改,后续如果引入的话,就只会引入module.exports最新的一次指向

 导入简介

require

import

(注意)如果同时存在自定义的和default那么impor的时候需要注意

export defalut 就是默认输出的值,在使用import时,要想使用这个默认的值就需要只获取一个值(不加大括号,变量名随便写)

require和import区别

区别1:模块加载的时间

区别2:模块的本质

区别3:严格模式

ES6 模块之中,顶层的 this 指向 undefined ,即不应该在顶层代码使用 this


导出简介(里面有小细节请仔细阅读)

变量的导出涉及到四个关键字module.exports与exports,export与export default,
其中module.exports与exports是符合CommonJS模块规范的。
export与export default是es6用来导出模块的。

 module.exports与exports

  • module是一个对象,代指的整个js文件,而他的exports属性就是该js文件对外暴露的对象,只要是module.exports的属性内的值都能被访问到(包括字符串,数字,对象,函数)。
  • exports指向了module.exports就相当于在js文件开头添加了这样一段代码
  • var exports = module.exports;

总之我们只要记住一点:module.exports指向的东西,就是我们要导出的东西

1.该js文件要导出的值即为test

	const test=1;
	module.exports ={test};
	console.log(module.exports)

import module.exports,前端,javascript,开发语言

 2.该js文件要导出的值即为test1和test2

const test1="test1";
const test2= "test2";
module.exports ={test1};
module.exports.test2 =test2;
console.log(module.exports)

import module.exports,前端,javascript,开发语言

3. 注意这里我是先给module.exports.test2赋值,然后给module.exports赋值,因此{test1}覆盖了原来的test2,因此module.exports中只有test1

	const test1="s";
	const test2= "ss";
	const test3="sss";
	module.exports.test2 =test2;
	module.exports ={test1};
	console.log(module.exports)

 import module.exports,前端,javascript,开发语言

 4. 该js文件要导出的值即为test2

	const test1="s";
	const test2= "ss";
	const test3="sss";
	exports.test2 = test2;
	console.log(module.exports)

 import module.exports,前端,javascript,开发语言

5. 注意这里(注意点),module.exports ={test1};改变了module.exports指向的引用,exports还指向之前的module.exports引用,因此无论exports.test2 = test2;在哪里执行都不能改变该js文件索要暴露的值。所以如果要改变module.exports指向的引用,就不要使用exports

import module.exports,前端,javascript,开发语言

export与export default 

  • 这两个是es6的语法,在小程序中也是可以使用的
  • export与export default都是用来导出变量的,并且他们两个作用与exports相同,只是语法不同
  • 二者同样是给module.exports赋值,export可以赋多个值,export default只能赋一个值(只能使用一次).
  • export后面跟的是声明或者语句,export default后面跟的是表达式

1.根据输出可知:export default test1;等价于exports.default = test1; export {test2};等价于exports.test2 = test2;

	const test1="s";
	const test2= "ss";
	const test3="sss";
	export  default test1;
	export {test2};
	export const test4="ssss";
	console.log(module.exports)

import module.exports,前端,javascript,开发语言

(坑)export {}这个语法比较特殊,{}花括号中,必须是提前定义好的

(1)正确

const test1 = "test1";
export {
	test1//这种可以
};
console.log(module.exports)

import module.exports,前端,javascript,开发语言

(2)错误

export {
	test1:1
};
console.log(module.exports)

 import module.exports,前端,javascript,开发语言

 2.可见:要想使用export或者export defalut 就不能改变module.exports指向的引用

	const test1="s";
	const test2= "ss";
	const test3="sss";
	const test4="ssss";
	export  default test1;
	export {test2};
	module.exports ={test3};//这里进行了指向更改
	export {test4};
	console.log(module.exports)

 import module.exports,前端,javascript,开发语言

 (坑)上面第七行代码进行了,执行module的指向更改,后续如果引入的话,就只会引入module.exports最新的一次指向

 导入简介

我们知道了如何导出变量,那肯定还得知道如何导入
使用require 与import来导入
require 是是符合CommonJS模块规范的。import是es6用来导出模块的。
require 可以在js文件中的任意位置使用,import只能在文件开头使用

require

require比较好理解,他可以直接获取module.exports的对象,进而使用其中的属性和方法

//test.js中
const test1="s";
const test2= "ss";
const test3="sss";
const test4="ssss";
export  default test1;
export {test2};
exports.test3=test3;
module.exports.test4=test4;
//引用的文件中
var test = require("../../utils/test.js");
console.log(test)

import module.exports,前端,javascript,开发语言

import

 import是直接获取module.exports对象的属性和方法

(注意)如果同时存在自定义的和default那么impor的时候需要注意

方法1、方法2、方法3都在下面的代码里面

	//test.js中
	const test1="s";
	const test2= "ss";
	const test3="sss";
	const test4="ssss";
	export  default test1;//导出默认
	export {test2};
	exports.test3=test3;
	module.exports.test4=test4;
	//引用的文件中,import在文件开头
    //情况1(用法)
	import {test2,test3,test4} from "../../utils/test.js"//这种情况下对test2 test3 test4进行单独导出
    //情况2(用法)
    import test0 from "../../utils/test.js"//这种情况下只对module.exports中的default的值单独导出并且赋值给test0
    //情况3(用法)
    import * as all from "../../utils/test.js"//这种情况下将module.exports的所有值都付给all

export defalut 就是默认输出的值,在使用import时,要想使用这个默认的值就需要只获取一个值(不加大括号,变量名随便写)

	//test.js中
	const test1="s";
	export  default test1;
	//引用的文件中,import在文件开头
	import SuiBianXie from "../../utils/test.js"
	console.log(SuiBianXie)

import module.exports,前端,javascript,开发语言

require和import区别

区别1:模块加载的时间

require:运行时加载
import:编译时加载(效率更高)【由于是编译时加载,所以import命令会提升到整个模块的头部】

区别2:模块的本质

require:模块就是对象,输入时必须查找对象属性
import:ES6 模块不是对象,而是通过 export 命令显式指定输出的代码,再通过 import 命令输入(这也导致了没法引用 ES6 模块本身,因为它不是对象)。由于 ES6 模块是编译时加载,使得静态分析成为可能。有了它,就能进一步拓宽 JavaScript 的语法,比如引入宏(macro)和类型检验(type system)这些只能靠静态分析实现的功能。

区别3:严格模式

CommonJs模块和ES6模块的区别:
(1)CommonJs模块默认采用非严格模式
(2)ES6 的模块自动采用严格模式,不管你有没有在模块头部加上 “use strict”;
(3)CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用文章来源地址https://www.toymoban.com/news/detail-714194.html

ES6 模块之中,顶层的 this 指向 undefined ,即不应该在顶层代码使用 this

到了这里,关于(区别、详解、使用)module.exports与exports,export与export default,import 与require的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • export default 和 export之间的区别

    export 、export default,都属于ES6里面的语法 1. export与export default均可用于导出常量、函数、文件、模块等 2. 你可以在其它文件或模块中通过import+(常量 | 函数 | 文件 | 模块)名的方式,将其导入,以便能够对其进行使用 3. 在一个文件或模块中,export、import可以有多个,export def

    2023年04月09日
    浏览(33)
  • vue中 export default 与 export 写法的区别

    1.1、定义函数 d.js 1.2、使用 a.js export default 命令用于指定模块的默认输出。一个模块只能有一个默认输出,因此 export default 命令 只能使用(导入)一次 2.1、定义函数 d.js 2.1、使用 1)使用方法1:一次性导入所有函数 a.js 这种写法 test() 输出的 dic对象与 export default 是一样的,

    2024年04月24日
    浏览(34)
  • 解决export ‘default‘ (imported as ‘xxx‘) was not found in ‘xxx‘

    今天写代码时出现了问题,记录一下,源代码如下 编译时警告 试了很久最后发现是import语法问题  

    2024年02月04日
    浏览(49)
  • Module的语法, JS中的 export 和 import

    在ES6之前, 社区制定了一些模块加载方案, 最主要的有CommonJS和AMD两种. 前者用于服务器,后者, 用于浏览器 ES6模块的 设计思想是尽量静态化, 使得编译时就能确定模块的依赖关系 ES6模块不是对象, 而是 通过export命令显示指定输出的代码,再通过import命令输入. 上面代码的实质是从

    2024年02月02日
    浏览(39)
  • ES6模块介绍—module的语法import、export简单介绍及用法

    模块功能主要由两个命令构成:export和import。export命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。 一个模块就是一个独立的文件。该文件内部的所有变量,外部无法获取。如果你希望外部能够读取模块内部的某个变量,就必须使用export输出该变

    2024年02月05日
    浏览(39)
  • 解决vite打包出现 “default“ is not exported by “node_modules/...问题

    vue3+ts+vite项目打包 报错意思是导入的js文件没有默认导出 有两种方法 1.修改node_modoules下的文件源码 在前面加上expoert default 为这个js文件添加一个默认导出 不太推荐这个方法,虽然比较简单 2.安装 @rollup/plugin-commonjs 插件, vite-plugin-require-transform 插件 @rollup/plugin-commonjs可以将

    2024年02月10日
    浏览(43)
  • 引入echars5.0报错“export ‘default‘ (imported as ‘echarts‘) was not found in ‘echarts‘解决方案

    前言:老版本的echars样式与新版本的组件美观度相差巨大,以美观为主所以把组件升级成了echars5.0,结果报错了【\\\"export ‘default’ (imported as ‘echarts’) was not found in ‘echarts’】! 直接报错:\\\"export ‘default’ (imported as ‘echarts’) was not found in \\\'echarts’ 新版本的echarts引入方式

    2024年02月03日
    浏览(51)
  • 打包报错Error: ‘default‘ is not exported by node_modules/qs/lib/index.js

    问题描述: 当我们在使用rollup编译es6时,可能会遇到以下报错问题 解决方案: 安装@rollup/plugin-commonjs插件   最后,修改rollup.config.js文件中写入以下代码即可

    2024年02月16日
    浏览(47)
  • 为什么 export 导出一个字面量会报错而使用 export default 不会报错

    其实总的来说就是 export 导出的是变量的句柄(或者说符号绑定、近似于 C 语言里面的指针,C++里面的变量别名),而 export default 导出的是变量的值。 需要注意的是:模块里面的内容只能在模块内部修改,模块外部只能使用。esModule在语法层面做了一层浅层的保护(即将imp

    2024年02月04日
    浏览(54)
  • 记录--为什么 export 导出一个字面量会报错,而使用 export default 就不会报错?

    其实总的来说就是 export 导出的是变量的句柄(或者说符号绑定、近似于 C 语言里面的指针,C++里面的变量别名),而 export default 导出的是变量的值。 需要注意的是:模块里面的内容只能在模块内部修改,模块外部只能使用。esModule在语法层面做了一层 浅层 的保护(即将i

    2024年01月17日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包