在nodejs中,提供了exports和module.exports导出模块, require对象从外部获取一个模块的,即所获取模块的 exports或者module.exports导出的模块。...module.exports和exports是属于CommonJS模块规范!根据这个规范,每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。...这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。...如果你希望你的模块就想为一个特别的对象类型,请使用module.exports;如果希望模块成为一个传统的模块实例,请使用exports.xx方法;module.exports才是真正的接口,exports...最终返回给调用的是module.exports而不是exports。
我们只需知道三点即可知道 exports 和 module.exports 的区别了: exports 是指向的 module.exports 的引用 module.exports 初始值为一个空对象...; } 其实是对 exports 进行了覆盖,也就是说 exports 指向了一块新的内存(内容为一个计算圆面积的函数),也就是说 exports 和 module.exports 不再指向同一块内存...= module.exports 原因也很简单, module.exports = somethings 是对 module.exports 进行了覆盖,此时 module.exports 和 exports...的关系断裂,module.exports 指向了新的内存块,而 exports 还是指向原来的内存块,为了让 module.exports 和 exports 还是指向同一块内存或者说指向同一个 “对象...”,所以我们就 exports = module.exports 。
刚开始的时候exports和module.exports指向同一个空对象: ? 我们可以给exports或者module.exports添加任意属性,实际上相当于作用于同一个对象。...当我们导出一个模块的时候,最终得到的实例实际是由module.exports来定义的,而不是exports。...如果没有显式定义module.exports,exports就会收集它由定义的任意属性并将它们赋予给module.exports。...如果已经显式定义了module.exports, exports中定义的对象将会被忽略。例如: module.exports = 'ROCK IT!'...也就是说,只要我们不直接覆写module.exports,那么module.exports与exports并没有任何区别。
注意,就像任何变量,如果一个新的值被赋值给exports,它就不再绑定到module.exports(其实是exports.属性会自动挂载到没有命名冲突的module.exports.属性) require...console.log(module.exports); // {} console.log(exports === module.exports); // true console.log(exports...3.module.exports和exports所指向的内存地址相同 事例二:2.js、3.js // 2.js exports.id = 'exports的id'; exports.id2 = '...exports的id2'; exports.func = function(){ console.log('exports的函数'); }; exports.func2 = function() {.../exports.上时,exports.id=1和module.exports.id=100,module.exports.id=function(){}和exports.id=function(){}
require 用来加载代码,而 exports 和 module.exports 则用来导出代码。...但很多新手可能会迷惑于 exports 和 module.exports 的区别,为了更好的理解 exports 和 module.exports 的关系,我们先来巩固下 js 的基础。...明白了上述例子后,我们只需知道三点就知道 exports 和 module.exports 的区别了: module.exports 初始值为一个空对象 {} exports 是指向的 module.exports...我们经常看到这样的写法: exports = module.exports = somethings 上面的代码等价于: module.exports = somethings exports = module.exports...原理很简单,即 module.exports 指向新的对象时,exports 断开了与 module.exports 的引用,那么通过 exports = module.exports 让 exports
module.exports和exports是属于 CommonJS 模块规范,export和export default是属于ES6语法。...这个变量是一个对象,它的exports属性(即module.exports)是对外的接口。加载某个模块,其实是加载该模块的module.exports属性。...为每个模块提供一个exports变量,指向module.exports。...var exports = module.exports; exports其实是module.exports的引用 ,可以直接在exports对象上添加相关的方法。...和exports的用法是后面加一个等号,再接具体的导出 module.exports=... exports=... (2)export和export default的用法是后面直接接具体的导出,没有等号
请牢记一条原则:无论使用 exports 暴露成员,或是 module.exports 暴露成员,最终暴露的结果,都是以 module.exports 所指向的对象为准。...exports 是 node 为了简化向外共享成员的代码,提供的一个新方式,在默认情况下,exports 和 module.exports 指向的是同一个对象(为了不混淆,你可以理解为 exports...是 module.exports 对象地址的一个引用,exports 本质是一个变量) 两者没有区别,是全等的 注意: 在使用 module.exports 时,我们可以将某一个对象赋值给 module.exports...原因是因为 exports 在默认情况下是指向 module.exports 对象的引用,如果为 exports 赋值了,那么也就是说 exports 不再指向 module.exports 所指的对象的地址...重要结论:module.exports 和 exports 同指一个对象,但是最终暴露结果以 module.exports 的为准,上面的代码中,exports 改变了指向,而我们又没有为 module.exports
/user'); console.log( `${getName()} was born on ${dob}.` ); 那么,module.exports和exports的不同之处是什么?...在exports上添加一些东西: // index.js exports.foo = 'foo'; console.log(module); 输出如下: Module { id: '....', exports: { foo: 'foo' }, ... 为 exports 分配的属性也会将它们添加到 module.exports。...这是因为(至少最初)exports 是对 module.exports 的引用。 应该用哪个 由于 module.exports 和 exports 都指向同一个对象,因此使用哪个通常并不重要。...那么,请看下面的内容: exports.foo = 'foo'; module.exports = () => { console.log('bar'); }; 这样只会导出一个匿名函数。
Module.exports才是真正的接口,exports只不过是它的一个辅助工具。 最终返回给调用的是Module.exports而不是exports。...所有的exports收集到的属性和方法,都赋值给了Module.exports。当然,这有个前提,就是Module.exports本身不具备任何属性和方法。...如果,Module.exports已经具备一些属性和方法,那么exports收集来的信息将被忽略。 如果你想你的模块是一个特定的类型就用Module.exports。...1、exports 是指向的 module.exports 的引用 2、module.exports 初始值为一个空对象 {},所以 exports 初始值也是 {} 3、require() 返回的是...module.exports 而不是 exports //exports只是一个引用!!!
根据前面Linux用户介绍,里面涉及到超级管理员,普通用户,系统用户,既然用户有区分,那不同的用户对应的权限是否也有区别呢?当然是有的,权限也分普通权限和特殊权限,我们也将从下面几个方面来介绍。...1.Linux权限-普通权限(本章节) 2.Linux权限-特殊权限 3.Linux权限-chmod命令 4.Linux权限-chown命令 UMASK umask 是一个 Unix/Linux 的 shell...在 Unix/Linux 系统中,当创建新的文件或目录时,系统会根据 umask 值来设置新文件或目录的默认权限。这个 umask 值通常是一个 4 位的八进制数,如 0022、0007 等。...该参数默认在/etc/profile,这个也是环境变量最常用的配置文件之一(后期会单独出环境变量的介绍) Linux的权限介绍 在Linux系统中,每个文件和目录都有一个访问权限,用来保护数据的安全。...例如,如果一个文件的权限被设置为"755",那么对应的权限是: - 文件拥有者:7(即4+2+1)拥有读、写、执行权限 - 用户组:5(即4+0+1)拥有读、执行权限 - 其他用户:5(即4+0+1)拥有读
typeScript:exports is not defined一、场景环境介绍:一个ts文件、一个html文件,编译ts文件为js,引入到html中出现这个错误。...二、错误原因:1、网上说法:因为ts编译为js时便意语浏览器不支持,把tsconfig.json文件的target改为es2015.2、网上说法:在html头部引入一下代码:var exports
根据前面Linux用户介绍,里面涉及到超级管理员,普通用户,系统用户,既然用户有区分,那不同的用户对应的权限是否也有区别呢?当然是有的,权限也分普通权限和特殊权限,我们也将从下面几个方面来介绍。...1.Linux权限-普通权限 2.Linux权限-特殊权限(本章节) 3.Linux权限-chmod命令 4.Linux权限-chown命令 在Linux系统中,有一些特殊权限和文件属性,它们可以进一步控制文件和目录的访问和行为...这些特殊权限和属性通常通过文件的权限位(文件属性)和文件属性位(文件系统特性)来实现。以下是一些常见的特殊权限和属性: 1....在执行过程中,该用户的权限将提升到文件所有者的权限级别。 示例:chmod u+s filename,使用 ls -l 查看时,文件权限会显示为 -rwsr-xr-x。...所以它的权限就是-rwsr-xr-x Setgid (SGID):当文件设置了SGID权限后,执行该文件的用户将以文件所属组的身份运行。对于目录,则表示新建文件和目录将继承父目录的组权限。
1.Linux权限的概念 权限的概念: 什么是权限?...就是通过一定的条件,拦住一部分人,给另一部分人权利,来访问某种资源 Linux下有两种用户:超级用户(root)、普通用户 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情...,通过第一个属性列来区分 Linux不区分文件类型,但是Linux上的工具可能区分!!!...实例: # umask 755 # umask //查看 # umask 044//设置 3.Linux目录权限 3.1 进入一个目录需要什么权限-目录的权限 在Linux中,目录也是文件,是文件就有属性...,就有权限 在Linux中,我们可以通过cd命令进入目录 那么我们要进入一个目录,需要有什么权限呢?
这次带来的是C++中关于Linux权限这部分的一些知识点,如果对你有所帮助的话,可否留下你宝贵的三连呢? 个 人 主 页: 默|笙 一、权限的概念 1. 什么叫做权限?...权限就是是否允许你去做某些事的范围和资格,在Linux里面就是是否能够查看资源,能否修改资源,能否执行资源。 2. 为什么要有权限?...Linux是多用户操作系统,这也就意味着会有多人登录Linux进行访问,如果不设置权限,那么任何一个人都能够查看,修改,删除文件。...权限 = 用户 + 文件属性 权限是用来针对特定群体的,也就是依附于人的。比如root和普通用户。 再就是文件(Linux下一切皆文件)属性,文件的属性有三种:可读(r),可写(w),可执行(x)。...二、Linux用户和角色 1. Linux用户 root(超级管理员):它不受权限的约束,是Linux里面的特权阶级。且能修改系统配置、安装软件、管理所有用户。
Linux权限概念 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。...Linux下有两种用户: 超级用户(root), 普通用户 超级用户:可以在Linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。...权限管理 首先我们要知道的是,Linux下一切皆文件,即无论是普通的文件,目录、字符设备、块设备、 套接字等在Linux中均是以文件被对待的....执行(x / 1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限 "—"表示不具有该项权限 文件权限值的表示方法 ️字符表示法 Linux表示说明r - -仅可读-...现在我们构造一个场景,假设现在用户mfc和zhangsan在同一个共享目录Linux_study下创作文件,该目录对所有人的权限都是可读可写可执行: 这时候,mfc在Linux_study
欢迎来到薄荷冰的linux系列 下面我们将按照下面的图为大家讲解linux权限相关的知识 一.linux下用户的分类 在linux中有两种用户:超级用户(root)、普通用户。...超级用户:可以再linux系统下做任何事情,不受限制。 普通用户:在linux下做有限的事情。 可以看到超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。.../sudoers)即配置文件中,才能成功执行; 二.linux权限管理 当我们用ls -l指令查看文件时,会出现如下情况 其实前面的这一长串字母就代表了文件类型的权限。...向权限范围增加权限代号所表示的权限 -:向权限范围取消权限代号所表示的权限 =:向权限范围赋予权限代号所表示的权限 用户表示符: u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户 # chmod...于是问题来了,只要具有目录的写权限,用户就可以删除目录中的文件而不论是否有这个文件的写的权限。这似乎不和逻辑,为了解决这个不科学的问题,所以linux引入了粘滞位的概念。
:vim、>、>> x 可执行权限:Shell与Python 对于目录: 读取权限:查看目录内容 写入权限:能够创建、删除、修改等目录的内容 执行权限:能够cd切换到此目录下 归属关系 所有者:拥有此文件...命令查看 权限位字段解析 一共10个字符,分为4组 [表格] linux中判断用户具备的权限 顺序:所有者>所属组>其他人,原则是匹配及停止 ls -ld 目录路径 修改权限 chmod命令 格式:chmod...【ugoa】【+-=】【rwx】路径 解释 u:修改所有者权限 -g:修改所属组权限 -o:修改其他人权限 -a:修改所有人权限 -R:递归修改权限 chmod -R u+r /test 修改归属关系...w表示2 x表示1 文件目录的默认权限 目录:755 文件:644 umask命令设置默认权限 目录是用最高权限777 减去默认的umask值022 默认权限得出的755 文件是用权限666减去默认的umask...x 权限 适用于目录,用来限制用户滥用写入权 在设置了t权限的文件夹下,即使用户有写入权限,也不能删除或改名其他用户文档 chmod o+t /home/public Set GID权限 –占用属组
一、Linux权限的概念 Linux有两种用户,一种是超级用户,也就是我们所说的root用户,它可以在Linux系统下做任何事情不受限制,另一种就是普通用户,它限制了某些可能导致Linux系统风险的行为...所以我们在学习和工作中一般是用普通用户,超级用户的命令提示符为#,普通用户的为$ 如果我们想要切换用户,用以下命令 su [用户名] su不加用户名即切换到超级用户,输入密码不回显 ctrl+d退回 二、Linux...l 软连接(类似于Windows快捷方式) b 块设备文件(硬盘、光驱等) p 管道文件 c 字符设备文件(屏幕、键盘灯) s 套接口文件 我们初学者一般懂文件夹d和普通文件-就可以了 这里我们Linux...认识文件类型只看前面的第一个符号,不看我们文件的后缀,如果我们不带后缀Linux也是可以识别出该文件是一个普通文件还是一个目录文件,但是,Linux可以识别,不代表在Linux上所安装的软件可以识别,比如说...gcc,它就要通过后缀来判定文件是否是c文件,没有后缀无法编译 所以前面的是给Linux看的,后缀的是给Linux上面的软件看的 (2)文件权限 文件权限共9位,按顺序3位一组共3组,第一组为u
1.shell命令以及运行原理 Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。...shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。...2.Linux权限概念 Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 通用户:在linux下做有限的事情。...3.Linux权限管理 3.1文件访问者分类 文件和文件目录的拥有者:u---User(就是创建该文件的用户) 文件和文件目录的所有者所在的组的用户(所属者):g---Group(不多说) 其它用户...=权限字符 +:向权限范围增加权限代号所表示的权限 :向权限范围取消权限代号所表示的权限 :向权限范围赋予权限代号所表示的权限 用户符号: u:拥有者 g:所属者 o:其它用户 all:所有用户
Linux下有两种用户:超级用户(root)、普通用户。 超级用户:可以再linux系统下做任何事情,不受限制 普通用户:在linux下做有限的事情。...g-x test.txt +:向权限范围增加权限代号所表示的权限-:向权限范围取消权限代号所表示的权限=:向权限范围赋予权限代号所表示的权限用户符号: u:拥有者 g:拥有者同组用 o:其它用户...假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask 格式:umask 权限值 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。...目录的权限 1.可执行权限: 如果目录没有可执行权限, 则无法cd到目录中 2.可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容. 3.可写权限: 如果目录没有可写权限,...但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档 因此默认创建的目录权限为:775