资讯专栏INFORMATION COLUMN

一看就懂的module.exports/exports与module.export/export d

ZoomQuiet / 1490人阅读

摘要:命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。意思是导出的不是一个具体的数值,而是一个对象命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块对外接口的名称相同。

一、module.exports与exports

nodeJS采用commonJs规范,当前文件是一个模块(module)私有域,通过exports属性导出,通过require()引入模块,通过.xx去获取值,从而了解到加载某个模块,其实是加载该模块的exports属性

exportsmodule.exports的别名,不要在同一个文件内同时使用两个,否则只能获取到module.exports的值

exports导出
// example.js
module.exports.a = "111";
module.exports.fun= function() {
 
}

// 或者写成对象形式
module.exports = {
  a : "111",
  fun: function(){}
}
require加载
let test = require("./example.js")

console.log(test.a)
console.log(test.fun);
二、module.export/export default{}

ES6中的模块功能主要由两个命令构成:exportimportexport命令用于规定模块的对外接口,import命令用于输入其他模块提供的功能。

export命令规定的是对外的接口,必须与模块内部的变量建立一一对应关系。意思是导出的不是一个具体的数值,而是一个对象{a: 1, b: function(){}}

import命令接受一对大括号,里面指定要从其他模块导入的变量名。大括号里面的变量名,必须与被导入模块(profile.js)对外接口的名称相同。因此,import {}中的变量名是export {}key

import命令输入的变量都是只读的,因为它的本质是输入接口。因此,模块导出的值,只能获取,不可以修改

export导出
//example2.js

// 1. 直接导出某个变量或函数
export const a = 1;
export function fun() {

}

// 2. 先定义变量或者函数,再进行导出
const a = 1;
export {a};

function fun() {

}
export {fun}; 

// 3. 加别名进行导出
const a = 1;
export {a as b} // b是a的别名

// 4. export default 
注意,一个文件只能有一个default,这代表是模块的整体输出
import导入
// 1. 常规导入
import {a, fun} from "example2.js"
// 2. 别名导入
import {a as b} from ...
// 3. *导入整个模块
import * as b from ...
// 4. 前三种是module.export,此处是export default
import b from ...

console.log(a)
console.log(fun())

补充:exportimport可复合书写,如果在一个模块之中,先输入后输出,不做任何操作
export {} from ""

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104430.html

相关文章

  • 一看懂的javascript全等于等于

    Javascript只有六个假值(用在条件if的判断) showImg(https://segmentfault.com/img/bVLiHL?w=424&h=346); 全等于 类型不同,返回false类型相同,则 showImg(https://segmentfault.com/img/bVLiHS?w=476&h=341); 等于 类型相同:同上=== 类型不同:尝试类型转换==【不是真值和...

    Apollo 评论0 收藏0
  • 一看懂的JS抽象语法树

    摘要:前言是现在几乎每个项目中必备的一个东西,但是其工作原理避不开对的解析在生成的过程,有引擎,早期了项目,了解这个之前我们先来看看这种引擎解析出来是什么东西。 前言 babel是现在几乎每个项目中必备的一个东西,但是其工作原理避不开对js的解析在生成的过程,babel有引擎babylon,早期fork了项目acron,了解这个之前我们先来看看这种引擎解析出来是什么东西。不光是babel还有...

    HackerShell 评论0 收藏0
  • 一看懂的Java线程池分析详解

    摘要:任务性质不同的任务可以用不同规模的线程池分开处理。线程池在运行过程中已完成的任务数量。如等于线程池的最大大小,则表示线程池曾经满了。线程池的线程数量。获取活动的线程数。通过扩展线程池进行监控。框架包括线程池,,,,,,等。 Java线程池 [toc] 什么是线程池 线程池就是有N个子线程共同在运行的线程组合。 举个容易理解的例子:有个线程组合(即线程池,咱可以比喻为一个公司),里面有3...

    Yangder 评论0 收藏0
  • 一看懂的例子告诉你用react-redux的正确姿势

    摘要:很多小白在看过很多教程之后仍然在敲代码的时候不清楚应该以什么样的步骤进行,那么这篇文章就一步一步分解整个过程,慢动作回放让大家看的清清楚楚明明白白。另外,中视图部分最好单独出来,放在新建一个文件夹目录下,并被名为引用,把其他逻辑部分放后者。 whay write this: 很多小白在看过很多教程之后仍然在敲代码的时候不清楚应该以什么样的步骤进行,那么这篇文章就一步一步分解整个过程,慢...

    DobbyKim 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<