2.5 module.exports\exports\export\import用法

使用 ES Module 的正确姿势 Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 前面我们在深入理解 ES Module 中详细介绍过 ES Module 的工作原理。目前,ES Module 已经在逐步得到各大浏览器厂商以及 NodeJS 的原生支持。像 vite 等新一代的构建工具已经逐步使用 ES Module 并有计划的运用到生产环境中。因此,了解如 阅读详情

一、nodejs中

1、exports导出

a.新建test.js文件

const x = {
    a:1,
    b:2
}
const y = {
    a:1,
    b:2
}

function f(){
    console.log(1)
}

exports.n = f
exports.m = {x,y}

b.新建index.js

const l =require('./test1.js')

console.log(l)

output://{ n: [Function: f], m: { x: { a: 1, b: 2 }, y: { a: 1, b: 2 } } }

//可以通过l.n()、l.m.x.a这种方式调用

module.exports.x 等同于exports.x

c.如果在test.js中使用module.exports = f,则index.js中的l等同于f,可以通过l()方式调用

d.如果使用exports = f,则在index.js中的l,其实是一个空对象

e.通过在test.js对module.exprots或exports.x不同的赋值方式,可以改变index.js中的引入的变量类型

module.exports = {f,x};

通过{}对module.exports赋值,则index.js中引入的l是一个对象

module.exports = [f,x];

通过module.exports = [f,x],则index.js中引入的l是一个数组

f.总结

exports.x等于module.exports.x

exports = x 导出的是一个空对象

module.exports = x 可以正常导出变量和方法

exports == module.exports

二、ES6中导出

1、export导出

导出变量

export var a= 1;

批量导出变量

var a= 1; var b= 2;

export {a, b,};

导出方法

export funcion f(x,y){

    return x*y;}

批量导出

function a(){}

function b(){}

export {

a as x,

b as y

}

总结:

export后面如果不是跟着表达式的话,必须使用{}

export不能在代码块的作用域内

2、import导入

批量导入

import {a, b} from ''

别名导入

import { a as x } from '';

整体导入

import {* as y} from '';

总结:

import 后面不能使用变量和表达式

import会优先执行

导入的js文件后缀.js可以省略

3、export default

export default function () { console.log('a'); }

引用

import a from '';

a是别名,不用使用{},可以任意命名

4、import()

按需加载

if (condition) {
  import('moduleA').then(...);
} else {
  import('moduleB').then(...);
}

事件加载

button.addEventListener('click', event => {
  import('moduleA')
  .then(...)
});
Node.js模块系统深度解析:CommonJS与ESM运行机制与互操作 模块系统是JavaScript工程化的基石概念,其核心在于运行时如何解析、加载与执行代码单元。Node.js并非简单支持两种语法,而是构建了以CommonJS为底层协议、ES Module为上层兼容层的分层架构,涉及文件扩展名识别、package.json type字段判定及--input-type命令行覆盖三重解析逻辑。这种设计决定了require()的同步确定性与import()的静态异步特性,也导致了混合项目中ERR_REQUIRE_ESM、MODULE_NOT_FOUND等高频报错。理解模块缓存(r 阅读详情

相关推荐

EastWave应用案例:机箱屏蔽效能仿真

如何使用EastWave对机箱的电磁屏蔽效能进行仿真

2201_76034687的博客 1392

这文章里的module.export用import引入,可以的吗

https://segmentfault.com/a/1190000017905030#articleHeader1

大赚万万亿 547

LTspice基础教程-028.Timestep too small

Q: “Timestep too small” error message A: If the LTspice program can’t find a solution for the guessed time step, then the program decreases the time step and tries again. This can’t work forever. If...

gaoyong_wang的博客 2万+

module.exports、exports、export、import、require乱七八糟的导入导出方式

首先 module.exports/exports是Node才支持的导出方式 export/import是ES6才制止的导入导出方式 require是Node和ES6都支持的导入方式 Node里面的模块系统遵循的是CommonJS规范。 CommonJS定义的模块分为: 模块标识(module)、模块定义(exports) 、模块引用(require) 当Node执行一个文件时,会给该文件生成mo...

qq_41620202的博客 1073

「Debug R」在从名字空间‘XVector’中出口方法时发现了不是S4通用的函数‘parallelSlotNames’...

每当R语言版本更新,Bioconductor的版本随之更替的时候,总会有一些神奇的报错会出现,比如说下面这种。 Error: package or namespace load failed for ‘GenomicRanges’: 在从名字空间‘XVector’中出口方法时发现了不是S4通用的函数‘parallelSlotNames’ 如果读中文读不懂,我们可以把它翻译成英文。 packa...

xuzhougeng blog 1999

中国城市统计年鉴1991-2024面板数据真正无缺失值填补指标说明

大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。大学普通高等中等职业教育成人中小学学前教育在校学生人数。

yushibing717的博客 927

微信小程序里的模块代码到底用import导入还是require导入

exports 或者 moudle.exports={}...没有什么区别,这是两种js模块化规范而已,如果你的小程序用到了。回调函数来异步获取指定模块。异步获取失败的时候,将会触发。需要引入其他分包的模块的时候,可以通过配置。编译,两种写法均可,如果没有,那就用。语句,这是nodejs原生支持的。

LlanyW的专栏 2360

地统计插值学习心得(一)

(创建地统计图层工具用于根据现有的地统计图层或者地统计模型来创建包含新要素数据集的地统计图层,也就是使用构建好的地统计模型用到新的数据集中)这表明,远离极值的区域预测不受极值的影响,并且还表明,包括极值会导致钼元素浓度高的区域周围的预测明显变高。通常,我们使用同一个数据集进行建模和预测,但是在实际插值过程中,这两步的数据可以是不同的,这就是处理极值的诀窍。如果你的数据集有无法忽略的极值时(比如这些钼元素浓度),一种常见的方法是首先显式移除极值进行建模,然后在预测中使用整个数据集(包括极值)。

JData_Engineer的博客 284

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

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

大雾起了清晨 1万+

5G射频设计中N77&N79的PRX为什么需要3个SRS

首先,我们来逐个拆解一下这个神秘的“

weixin_43199439的博客 1323

AutoSAR_BSW高阶 7. Signal Group 信号组

Autosar BSW的高级配置是实现复杂汽车电子系统的关键步骤之一。通过合理配置信号组和使用适当的参数,您可以提高系统性能,确保数据的可靠传输。在本博客中,我们深入探讨了信号组的概念和高级配置参数,并提供了示例代码,希望这些信息能够帮助您更好地理解和应用Autosar BSW的高级配置。如果您在配置过程中遇到任何问题,不妨寻求专业支持,以确保您的汽车电子系统能够顺利运行。Autosar COM 模块是一个广泛应用于汽车行业的关键技术,它使不同的电子控制单元能够有效地通信和协作。

一直在水些技术小文 662

import、require、export、module.exports 混合使用详解

摘要:本文对比了CommonJS和ES6模块系统的差异,分别展示了两种模块规范的导入导出语法。重点介绍了混合使用场景下的互操作方案,包括ES6导入CommonJS、CommonJS动态导入ES6模块等。提供了package.json配置建议、文件扩展名规范和最佳实践,如保持一致性、双模式包设计和渐进式迁移策略。同时针对常见问题给出解决方案,推荐新项目优先使用ES6模块,现有项目逐步迁移,避免混合语法。通过理解这些概念,开发者可以灵活应用不同模块系统。(149字)

油墨香^-^的博客 3405

【动态导通电阻】GaN功率器件中动态导通电阻退化的机制、表征及建模方法

研究目的:鉴于动态RON退化对GaN功率器件性能的显著影响,本文旨在全面综述和讨论GaN功率器件中动态RON退化的机制、表征方法、建模技术以及解决方案,以期为GaN功率器件的设计、优化和应用提供理论指导和实践参考。内容概述:文章首先分析了缓冲层陷阱和栅极不稳定导致动态RON退化的物理机制,并通过物理基础的TCAD模拟与高压背栅测量结果进行对比,揭示缓冲层陷阱的充电/放电过程如何影响动态RON。接着,讨论了不同GaN器件技术中栅极不稳定引起的动态RON增加以及栅极过驱动的作用。

荷塘阅色 1165

模块化Common JS 和 ES Module(export,import)

一个模块=实现的。共享时,同名变量冲突:下层 js 能调用上层 js 的方法,但是上层 js 无法调用下层 js 的方法。

luemeon的博客 698

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

js 代码模块化调用

es5 方式: 01.js: const sum = function(a,b){ return a + b; } const subtract = function(a,b){ return a - b; } //把对应的方法暴露出去以供调用 module.exports = { f_sum: sum, //sum //可以默认使用原函数名 //f_sub: subtract subtract //可以默认使用原函数名 }; 02.js: .

yssa1125001的博客 1716

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

node初步学习

module.exports 是对外的接口 ES6标准发布后,module成为标准,标准的使用是以export指令导出接口,以import引入模块, 但是在我们一贯的node模块中,我们采用的是CommonJS规范,使用require引入模块,使用module.exports导出接口。 给出模块 'use strict'; var get_integer_interval_2 = re...

weixin_44769592的博客 218

Cannot assign to read only property exports of object

一、问题介绍: 在webpack项目中使用@babel/plugin-transform-runtime时,报错 ERROR in Error: E:\workdata\webpackVue/node_modules/_@babel_runtime@7.4.5@@babel/runtime/helpers/ typeof.js?:33 module.exports = _typeof; ^ T...

Evan's Blog ٩(๑❛ᴗ❛๑)۶ 3262

面试题:Commonjs 和 Es Module区别(1),2024年最新前端大厂面试题及答案

由于篇幅限制,pdf文档的详解资料太全面,细节内容实在太多啦,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)一个人可以走的很快,但一群人才能走的更远!

2401_84139610的博客 717

Node.js 模块系统:CJS 与 ESM 详解

Node.js模块系统差异与使用规范总结 Node.js支持CommonJS(CJS)和ESM两套模块系统,主要区别如下: CommonJS(CJS) 默认使用,文件后缀为.js或.cjs 语法:require()/module.exports 路径要求:本地文件必须带./前缀,后缀可省略 动态加载,运行时执行 ESM 需设置package.json中"type":"module"或使用.mjs后缀 语法:import/export 路径要求:必须带./前缀和完整后缀名(.js不能省略) 静态加载,支持tr

weixin_42174823的博客 273

前端js模块化

问题引入:exports、module.exports、export,import,require ? exports 相当于module.exports 的引用 。require()得到的是module.exports导出的值 module.exports 和 exports 的区别 每次导出接口成员的时候都通过module.exports.xxx = xxx的方式很麻烦,Node.js 简化操作提供了一个变量:exports 等于module.exports。也就是说在模块中还有这么一...

vanity_lost_的博客 734

【javascript】前端模块化的一些坑点

一、前言。 我们在使用后端语言python、java、php时,经常会遇到模块加载。 比如在python中加载另外一个通常有如下形式。 import modname from modname import fa, fb, fc  比如在php中,我们导入模块,有如下4种方法。 require\require_once   include\include_once

hustxiaoxian的专栏 562

webpack 随笔 小程序 import,require

*path.resolve()或者paht.resolve('') 输出:当前文件所在文件夹路径 === __dirname  注:“__dirname”是node.js中的一个全局变量,它指向当前执行脚本所在的目录。 const 声明常量,let局部变量,最好不用var 有module.exports 不能写export //导出export le...

weixin_30305735的博客 201

vue插件开发

一、export、export default、module.exports的区别1、export和export default属于es6规范:在同一个文件里面可以有多个export, 一个文件里面只能有1个export default //a.js export const test = 'aaa'; export const a = function(){}; //b.js cons...

snow_small的博客 502

Claude Code Router 多模型路由教程:轻量任务走本地模型,难题留云端

Claude Code Router(CCR)是一个本地的多模型路由网关:没有 Anthropic 账户也能用 Claude Code,它把每个请求路由到 Ollama 本地模型或其他 LLM 提供商。适合经常用 AI 写代码、又对 API 账单敏感的人,轻量任务交给本地模型,只有难题才花云端的钱。 ## 🧭 它在帮你解决什么 三个最常见的场景: - **日常补全、摘要、小修小补**:这类

gitblog_00984的博客 705

Nodejs 之 exports, require, module, __filename, __dirname

开头 Nodejs代码中常见的引入模块函数“require”。其实很少人了解为什么能使用“require”,以及Nodejs基本的运行机制。 是否还记得“arguments”,arguments可以直接拿到调用函数传入的参数。 (function() { console.log(arguments)} // [1, 2, 3] )(1, 2, 3) 复制代码其实Nodejs可以直接打印 arg...

weixin_34348805的博客 1652

Node.js模块系统原理:package.json、npm与require解析机制

Node.js模块系统是前端与后端工程化的基石,其核心在于运行时(Node.js)、包管理器(npm)和元数据契约(package.json)三者的协同。模块解析并非简单路径查找,而是基于语义化版本(semver)、条件导出(exports)、入口字段(main/type)的多层协议匹配过程。这一机制保障了依赖隔离、环境兼容与跨模块互操作,广泛应用于Express、Lodash等主流框架及CI/CD构建、微前端集成、SSR服务部署等场景。深入理解package.json字段含义与require/import

CURSED! 534
上一篇: 1.4 mysql配置远程访问权限
下一篇: 2.6 npm安装gulp插件报错Command failed:autoreconf -ivf和node_modules\optipng-bin\vendor
LetsStudy
博客等级 码龄9年 96粉丝 323原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值