首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

node.js中exports与module.exports的区别

node.js中,每个js文件都可以当成一个模块,每个模块中,都隐含了一个名为module的对象,module对象中有一个exports属性,这个属性的功能是将模块中的变量暴露给其他模块调用。...,每次要暴露变量,都需要写module.exports,在以懒惰为美德的程序员看来,这是不能忍受的。...因此node.js提供了一个变量exports作为module.exports的引用 16.js也可以写成: let name = '叶文洁' // exports 是 module.exports 的引用...默认情况下,exports是一个对象,假设我们的需求是要得到一个字符串。要怎么弄? 也许你觉得这个很简单,直接给exports重新赋值就可以了。...原因是,exports是module.exports的引用,当exports被重新赋值时,并不会影响到module.exports的值,而模块返回的是module.exports,因而只有给module.exports

1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    module.exports 、exports、export、export default的区别

    根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。 CommonJS规范规定,每个模块内部,module变量代表当前模块。...这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。...1.针对CommonJs: 使用步骤: (1)使用module.exports导出模块: 新建一个文件demo.js,通过module.exports输出变量x和函数add。.../demo.js'); console.log(demo.x); // 1 console.log(demo.add(1)); // 6 exports 与 module.exports 为了方便,Node...' //导入的时候没有花括号 总结一些用法上的区别: (1)module.exports和exports的用法是后面加一个等号,再接具体的导出 module.exports=... exports=..

    9.3K53

    NodeJS学习二CommonJS规范

    CommonJS规定,每个文件的对外接口是module.exports对象。这个对象的所有属性和方法,都可以被其他文件导入。...module.exports对象是可以被其他文件导入的,它其实就是文件内部与外部通信的桥梁。 require方法用于在其他文件加载这个接口,具体用法参见《Require命令》的部分。...这等同在每个模块头部,有一行这样的命令。 var exports = module.exports; 造成的结果是,在对外输出模块接口时,可以向exports对象添加方法。...module.exports = function (x){ console.log(x);}; 如果你觉得,exports与module.exports之间的区别很难分清,一个简单的处理方法,就是放弃使用...AMD规范与CommonJS规范的兼容性 CommonJS规范加载模块是同步的,也就是说,只有加载完成,才能执行后面的操作。AMD规范则是非同步加载模块,允许指定回调函数。

    59320

    require时,exports和module.exports的区别你真的懂吗?

    面试会问 require 的运行机制和缓存策略你了解吗? require 加载模块的是同步还是异步?谈谈你的理解 exports 和 module.exports 的区别是什么?...,如果遇到重复加载的模块会直接提取缓存中的副本,也就是说在任何时候每个模块都只在缓存中有一个实例。...exports 与 module.exports 区别 js文件启动时 在一个 node 执行一个文件时,会给这个文件内生成一个 exports 和 module 对象, 而module又有一个 exports...原理很简单,即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exports 让 exports...使用的一点建议 建议:在使用的时候更建议大家使用module.exports(根据下面的例子也能得出) Node.js 认为每个文件都是一个独立的模块。

    1.7K20

    【基于JS 函数式编程 -1】什么是函数式编程 | 纯函数 | 命令式与声明式 | 优点

    什么是函数式编程 引入 概念 我们知道,在数学中,函数可以有如下形式: f(X) = Y ,即一个函数f ,以X作参数,返回输出结果Y。...,函数式编程是一种范式,其能够创建仅依赖输入就可以完成自身逻辑的函数。...这保证了当函数被多次调用时仍然返回相同的结果。同时,函数不会改变任何外部环境变量,这也将产生可缓存、可测试的代码。 函数与方法 函数:一段可以通过其名称被调用的代码。它可以传递参数并返回值。...因为,具有引用透明性的函数,只能依赖来自参数的输入,我们可以轻松地用多线程运行这样的代码,没有任何锁机制。 编程范式之 命令式 与 声明式 首先我们要理解什么是命令式,什么是声明式。...函数式编程的优点 纯函数 大多数函数式编程的好处来自编写纯函数。 定义: 对给定的输入返回相同的输出的函数。

    24710

    module.exports、exports、export、export default之间的关系和区别

    本文主要介绍的也是CommonJS和ES6,所以其他的规范请允许我无耻的忽略了,下面进入正题: 一、CommonJS模块规范 CommonJS的核心思想是通过require方法来同步加载依赖的其他模块...根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。...// 通过module.exports将appid与bar暴露出去 module.exports = { appid , bar } -----------------------------...这等同在每个模块头部,有一行这样的命令。 let exports = module.exports; !!!...这里要注意: 不能直接将exports变量指向一个值,因为这样等于切断了exports与module.exports的联系。

    88310

    Js模块化导入导出

    CommonJS CommonJS是NodeJs服务器端模块的规范,根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。...CommonJS规范规定,每个模块内部,module变量代表当前模块。这个变量是一个对象,它的exports属性是对外的接口。加载某个模块,其实是加载该模块exports属性。...} /* // 当导出的模块名与被导出的成员或方法重名时可以有如下写法 module.exports = { a, b } */ // 2.js var m1 = require("....此外若是在一个文件中同时使用module.exports与exports,则只会导出module.exports的内容 // 1.js var a = 1; var b = function(){..., AMD加载器是提前将所有依赖加载并调用执行后再执行回调函数),CMD是延迟执行(相对定义的回调函数, CMD加载器是将所有依赖加载后执行回调函数,当执行到需要依赖模块的时候再执行调用加载的依赖项并返回到回调函数中

    3K20

    【Node.js】模块化学习

    什么是模块作用域                 模块作用域好处          向外共享模块作用域中的成员                 module对象                  module.exports...把代码进行模块化拆分的好处: 提高了代码的实用性 提高了代码的可维护性 可以实现按需加载         模块化规范  模块化规范就是对代码进行模块化的拆分与组合。需要遵守的哪些规则。...Node.js中的模块作用域                 什么是模块作用域 和函数作用域类似,再自定义模块中定义的变量,方法等成员,只能在当前定义的模块内被访问,这种模块机别的访问限制,被叫做模块作用域...,导入模块后 也不能使用模块内的函数等,                 模块作用域好处 防止了全局变量污染的问题,这个问题 我再之前的es6文章 let const var定义函数中说过。...CommonJS规定: 每个模块内部,module变量代表当前模块。 module变量是一个对象,它的exports属性是对外的借口。

    1.8K20

    模块打包中CommonJS与ES6 Module的导入与导出问题详解

    CommonJS CommonJS模块 CommonJS中规定每个文件是一个模块。每个模块是拥有各自的作用域的,各自作用域的变量互不影响。...标签插入页面中的好处在于 插入标签后顶层作用域是全局作用域,在进行变量及函数声明时会污染全局环境;而封装成CommonJS模块会形成一个属于模块自身的作用域,所有的变量及函数只有自己能访问...注意点二:不要把module.exports与exports混用。...当我们require一个模块时会有两种情况: 1.require的模块是第一次被加载。这时会首先执行该模块,然后导出内容。 2.require的模块曾被加载过。..../' + name); }); ES6 Module ES6 模块 ES6 Module也是将每个文件作为一个模块,每个模块拥有自身的作用域,不同的是导入、导出语句。

    83710

    webpack实战——资源输入与输出

    写在前面 这是webpack实战系列笔记的第三篇记录:资源输入与输出。前两篇: •打包第一个应用•模块化与模块打包 1....如上述例子,main这条配置:chunk name为main,入口路径是 ./src/main.js。 2.2.4 函数类型 函数类型的话可以返回上述介绍的三种类型的任意类型。.../page3.js' }} 在上面配置中,入口与页面一一对应,如此的话每个html则只需要引入各自的js就可以加载其所需的模块。...可指定路径输出 那么如果是多入口场景,我们则需要为每个bundle指定不同的名字避免命名冲突。...如果要控制客户端缓存,一般加上[chunkhash],因为每个chunk所产生的chunkhash只与自身内容相关,不会影响到其他资源,可以精准的让客户端缓存得到更新。

    88140

    循环1-函数的概念与作用

    一、概念和语法 1.作用 1) 概述 shell中的函数类似于命令行的别名,通过把一段代码定义为一个函数体,在其他地方调用该函数时就调用了整段代码。...return n } 3) 函数的执行 函数分为最基本的函数和可以传参的函数两种,执行方式分别如下: 函数名 函数名 参数1 参数2 函数后接参数的说明: shell的位置参数($1、$2、...、$#...及$@)都可以作为函数的参数来使用 此时父脚本的参数临时地被函数参数所掩盖或隐藏 $0比较特殊,它仍然是父脚本的名称 当函数执行完成时,原理的命令行脚本的参数即可恢复 函数的参数变量是再函数体里面定义的...将函数写入系统函数文件中再调用 /etc/init.d/functions文件是linux系统函数库文件,可以先将函数在此文件创建好,然后在脚本中调用该文件就行了,该文件里有很多默认的函数可供调用 先将...am olgirl,you are man noahgirl中使用参数$1,然后调用函数是也指定了$1,此时执行脚本并且传参时,$1会传递到函数内部执行,所以结果如上

    42920

    webpack 最简静态资源打包及运行时分析

    使用 webpack 对最简单的静态资源打包,观察其配置与运行时代码。 我们使用 webpack 打包两个文件,index.js 与 sum.js,并通过脚本文件 build.js 进行打包。...源码见 node-examples:webpack/cjs1 图片 以下是 index.js 文件内容: const sum = require('....每个模块都由一个包裹函数 (module, module.exports, __webpack_require__) 对模块进行包裹构成。...对已加载过的模块进行缓存,对未加载过的模块,执行 id 定位到 __webpack_modules__ 中的包裹函数,执行并返回 module.exports,并缓存。...作业 对 webpack 运行时代码进行调试与理解 webpack 的模块加载器是如何实现的 webpack 的运行时代码做了那些事情 如何根据入口文件搜索出所有需要打包的模块 如何模拟实现运行时代码的生成

    98640

    Nodejs中模块的创建与引用

    nodejs中,模块的概念很重要。所有功能都是基于模块划分的。每个模块都是JavaScript脚本,核心模块中主要是由js写成,部分是由C/C++编写,内建模块多是由C/C++编写。...通常在模块内部定义的本地就是、函数或对象只能在该模块内部访问,但当需要从模块外部引用这些变量、函数或对象时,需要用到代表当前模块文件的module对象的exports属性,这个module.exports...换句话说,加载某个模块,其实就是加载该模块的module.exports属性。弄明白这个,就可以将需要被在模块外引用的变量、函数和对象放在module.exports属性的值中。.../some.js" ); console.log( some.someValName ); module.exports属性的值可以是一个对象,也可以是一个类(其实就是构造函数啦)。...参考资料: 1. 《Node.js》权威指南 - 第4章 模块与npm包管理工具 2.

    1.4K20

    JavaScript中的三种模块化规范AMD CMD CommonJS

    module.exports = ... }) //导入模块 //第一参数是入口模块的路径 //第二个函数是回调函数 seajs.use('路径',function...CommonJS规范是为了解决JavaScript的作用域问题而定义的模块形式,可以使每个模块在它自身的命名空间中执行。...函数体内 在一个模块系统中,`require` 加载过的模块会被缓存 默认 `require` 是同步加载模块的 exports 和 module.exports...module.exports曝露出一个完整的对象,只能扔一次只能曝露出来一个 exports是module.exports的别名,可以用来单个属性、方法、对象的曝露,用...导入模块 /* 第一参数是入口模块的路径 第二个函数是回调函数 */ seajs.use('路径',function(回调对象){ //此回调对象就是

    38900
    领券