码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • # CommonJS模块 和 ECMAScript模块


    CommonJS模块 和 ECMAScript模块

    最近我在3A平台购买了服务器。

    CommonJS模块(下面简称 cjs) 是为Node.js打包JavaScript代码的原始方法。使用 require 和 exports(module.exports的简写) 语句定义模块。 参见 nodejs cjs

    ECMAScript模块(下面简称 esm)是ecma262标准下封装的JavaScript代码重用的官方标准格式。使用 import 和export 语句定义模块。参见node esm

    -cjs只有在node.js环境使用。
    -esm在node.js和浏览器环境都可以使用

    1、commonjs

    在node.js中,每个文件都被视为一个单独的模块。模块的局部变量是私有的,只有exports出去的变量,才能被外界访问。

    默认情况下,node.js会将以下情形视为 cjs模块:

    • 扩展名为.cjs的文件;
    • 扩展名为.js的文件,且离自己最近的package.json文件包含一个顶级字段“type”,其值为“commonjs”;
    • 扩展名为.js的文件,且离自己最近的package.json文件不包含一个顶级字段“type”(建议明确指定 type值,而不是不定义);
    • 扩展名不为.mjs, .cjs, .json, .node, .js的文件,且离自己最近的package.json文件包含一个顶级字段“type”,其值为“module”,但是这些文件通过require引入。

    调用require()时,始终使用cjs模块加载器,
    require采用同步方式加载,可以在代码的任意位置使用。
    由于require()的同步特性,无法使用它加载ECMAScript模块文件。尝试这样做将抛出ERR_REQUIRE_ESM错误。请改用import()。

    要获取调用require()时将加载的确切文件名,请使用require.resolve()函数。

    1)、对于一个文件,导出的是对象的引用。如果内部的属性变化了,外部也会变化。
    2)、对于再次引入同一个文件,如果文件名一模一样,则从缓存里面取
    3)、还有种方式,要使模块多次执行代码,请导出函数并调用该函数。

    导出一个原始值

    //child.js
    var counter = 3;
    function incCounter() {
       
      counter++;
    }
    module.exports = {
       
      counter: counter,
      incCounter: incCounter,
    };
    
    //parent.js
    let child = require('./child.js')
    console.log(child.counter);  // 3
    child.incCounter();
    console.log(child.counter); // 3没变
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    导出一个对象

    //child.js
    var obj = {
       
        counter:3
    };
    function incCounter() {
       
        obj.counter++;
    }
    module.
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    在线音乐播放器app
    FA_04.开发system权限的App并内置到手机系统
    骑行耳机哪个品牌好,推荐五款最适合骑行佩戴的五款耳机
    ChatGPT 调教指南:从 PDF 提取标题并保存
    循环购:复购越多分红越多,让你的用户活起来
    Set cancelled by MemoryScratchSinkOperator
    chrome extension 普通网页与插件直接通信
    顾曼宁(顾曼):漂流伞创始人与杭州高层次人才的杰出代表
    2022年全球市场砷化铟镓引脚模块总体规模、主要生产商、主要地区、产品和应用细分研究报告
    OS Audit file could not be created; failing after 6 retries
  • 原文地址:https://blog.csdn.net/weixin_53641036/article/details/126862491
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号