1、import 和 export(ES6特性)

目录结构

export_file.js

export const myNumbers = [1, 2, 3, 4];
const animals = ['Panda', 'Bear', 'Eagle']; // Not available directly outside the moduleexport function myLogger() {console.log(myNumbers, animals);
}export class Alligator {constructor() {// ...}
}let anotherNum = [3, 2, 1];
export { anotherNum, myLogger as Logger }

import_file.js

import * as Utils from './export_file.js';console.log(Utils)console.log(Utils.Logger())
console.log(Utils.myLogger())

package.json:这个文件很关键,表示import的是一个module,不然会报错

{"type": "module"
}

运行结果

也可以把import的方式换成

import {myLogger, Logger, myNumbers as num} from './export_file.js';console.log(num)console.log(Logger())
console.log(myLogger())

输出如下

如果把目录结构改成:export单独放,package.json和import文件一起


一样可以正常运行

如果把import单独放


则不能正常运行,会报错MODULE_NOT_FOUND


因此package.json是为了把import_file.js变成一个module,才能使用import

2、exports和require

用require导入一个module,不需要import_file.js自己是一个module,而exports本身将export_file.js以module的形式导出

目录结构

export_file.js

const getName = () => {return 'Jim';
};const getLocation = () => {return 'Munich';
};const dateOfBirth = '12.01.1982';exports.getName = getName;
exports.getLocation = getLocation;
exports.dob = dateOfBirth;

import_file.js

const user = require('./export_file');console.log(user.getName())
console.log(user.getLocation())
console.log(user.dateOfBirth)
console.log(user.dob)console.log(`${user.getName()} lives in ${user.getLocation()} and was born on ${user.dob}.`
);

输出

exports的方式改成如下也可以

exports.getName = () => {return 'Jim';
};exports.getLocation = () => {return 'Munich';
};exports.dob = '12.01.1982';

import中也可以指定导入哪些

const {getName, getLocation, dob} = require('./export_file');console.log(getName())
console.log(getLocation())
console.log(dob)console.log(`${getName()} lives in ${getLocation()} and was born on ${dob}.`
);

3、module.exports和require

module.exports用于只导出一个,比如一个class

目录结构不变

export_file.js

class User {constructor(name='Jim', age='Munich', dob='12.01.1982') {this.name = name;this.age = age;this.dob = dob;}getUserStats() {return `Name: ${this.name}Age: ${this.age}DateOfBirth: ${this.dob}`;}
}module.exports = User;

import_file.js,将export_file作为整体导入,即得到导出的class

const User = require('./export_file');let myUser = new User();console.log(myUser.getUserStats()
);

运行

也可以用的跟之前exports一样,导出一个dict,里面包含多项内容

module.exports = {getName: () => {return 'Jim';},getLocation: () => {return 'Munich';},dob: '12.01.1982',
};

import 仍然是

const {getName, getLocation, dob} = require('./export_file');console.log(`${getName()} lives in ${getLocation()} and was born on ${dob}.`
);

可以看到跟之前的结果是一样的

exports 和 module.exports 本质上是指向一个地方

比如下面三句是等价的

module.exports = {dob: '12.01.1982',
};exports.dob = '12.01.1982';module.exports.dob = '12.01.1982';

如果输出module来看
最终都会将dob加入到module的exports里面

但需要注意,在我们使用module.exports = {dob: '12.01.1982'};,是直接将一个object赋值给exports,这将会覆盖exports里的其他内容

【nodejs】import、export、exports、module.exports相关推荐

  1. 【iOS】使用SQLite3的时候Swift3.、XCode8报错:Unsupported architecture - 'arm/arch.h'file not found - Could not

    [iOS]使用SQLite3的时候Swift3..XCode8报错:Unsupported architecture - 'arm/arch.h'file not found - Could not ...

  2. 【数据分析】图书馆数据-02重命名、索书号、分组

    [数据分析]图书馆数据-01建表 [数据分析]图书馆数据-02重命名.索书号.分组 [数据分析]图书馆数据-03直方图展示借书数量与借书人数之间的关系 [数据分析]图书馆数据-04借阅情况聚类挖掘 [ ...

  3. 【Redis】14.Redis高级数据类型Bitmaps、HyperLogLog、GEO

    [Redis]14.Redis高级数据类型Bitmaps.HyperLogLog.GEO Bitmaps:用比特位进行快速的状态统计 Bitmaps基本操作 Bitmaps不是一个新的数据类型,而是s ...

  4. 【数据库】第一章 数据库的分类、SQL、数据库、表和表记录的常用操作

    [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 文章目录 [数据库]第一章 数据库的分类.SQL.数据库与表的常用操作 一.数据库的分类 1.关系型数据库 2.非关系型数据库 3.MyS ...

  5. arcgis 删除图形重复折点_【干货】ArcGIS中画环状图斑、挑子区及消除图斑重复区域...

    原标题:[干货]ArcGIS中画环状图斑.挑子区及消除图斑重复区域 ArcGIS的Editor菜单下,有许多功能我们不经常用,但是在如果仔细的研究下就会发现,其实许多功能是相当实用的. 1.绘制环状图 ...

  6. 【解决方案】SpringCloud项目优雅发版、部署

    [解决方案]SpringCloud项目优雅发版.部署 参考文章: (1)[解决方案]SpringCloud项目优雅发版.部署 (2)https://www.cnblogs.com/fonxian/p/ ...

  7. 【转】 C#学习笔记14——Trace、Debug和TraceSource的使用以及日志设计

    [转] C#学习笔记14--Trace.Debug和TraceSource的使用以及日志设计 Trace.Debug和TraceSource的使用以及日志设计   .NET Framework 命名空 ...

  8. 【操作系统】操作系统的发展历程——手工阶段、批处理阶段、分时操作系统、实时操作系统

    [操作系统]操作系统的发展历程--手工阶段.批处理阶段.分时操作系统.实时操作系统 说明:本系列用于记录学习操作系统时的知识点,主要参考资料:王道考研. 不骗各位,博主真的是小菜鸡,如有纰漏还请指出. ...

  9. 【原创】开源OpenIM:轻量、高效、实时、可靠、低成本的消息模型

    [原创]开源OpenIM:轻量.高效.实时.可靠.低成本的消息模型 1.内容概述 一套完整IM系统中,除开基本的业务设计,消息模型的设计是其中最为关键的一环,它关系到整个IM系统的可靠性.高效性.稳定 ...

最新文章

  1. 反编译得到的java文件好多错误 val$query什么意思_这部分代码有错么?一直提示输入框$(#msg).val()得到的值未定义...
  2. leetcode算法题--LRU缓存机制
  3. JVM内存压缩开启/不开启各占几个字节
  4. OpenCV学习(14) 细化算法(2)
  5. 终端短路和终端开路的无耗传输线的输入阻抗和导纳
  6. 计算机通信网络学什么软件,通信工程专业需要用到的电脑软件有哪些
  7. 华为数通NA-NP学习笔记(个人精简)
  8. idea更改页面背景颜色设置为护眼颜色
  9. Bytes和bits的区别(字节和位的区别)
  10. DOTA数据集应用于Yolo-v4(-Tiny)系列2——使用Pytorch框架的Yolov4(-Tiny)训练与推测
  11. Linux0号进程,1号进程,2号进程
  12. 求大神指导,海康威视服务器装系统装到这一步装不走了,怎么搞
  13. mysql表别名不加as_数据库别名AS区别
  14. DNA计算 与 肽展公式 推导 AOPM-A 变胸腺苷, AOPM-O尿胞变腺苷, AOPM-P尿胞变鸟苷, AOPM-M鸟腺苷的 S形螺旋纹 血氧峰 触发器分子式 严谨完整过程
  15. python爬虫是数据挖掘吗_爬虫属于数据挖掘 python为什么叫爬虫
  16. 计算机视觉的应用,计算机视觉新手指南
  17. 报错:Module parse failed: ‘return‘ outside of function (4:1) You may need an appropriate loader
  18. 【问题3】:Kaggle练习题《房价预测》----分别采用的岭回归,随机森林,bagging模型,AdaBoost,XgBoost等。
  19. c语言判断真假,C语言中的真假值
  20. matlab使用load函数读取txt数据时,出现锘? xxxxx 。的解决办法

热门文章

  1. SpringBoot 十一 干净利索梳理 Gentelella Admin 后台模板
  2. python的rich终端显示
  3. 关键词搜索拼多多商品api
  4. 用PS制作红色金属网页模板
  5. Docker操作命令汇总
  6. 分布式理论之体系结构
  7. 偶尔看到potplay的直播列表,整理了下发表出来。2018-10-16有效
  8. 手把手教你实现window图片爬虫(一)
  9. Adobe.* 绿色版
  10. java类和对象试题_java类和对象练习题1