首页 > 编程语言 >node05_模块化以及module对象

node05_模块化以及module对象

时间:2022-11-01 14:11:46浏览次数:46  
标签:exports 自定义 node05 作用域 模块化 module 对象 模块

 

1.定义一个自定义模块

 

 

 

//当前这个文件,就是一个用户自定义模块

console.log('加载了06这个模块')

2.引入定义的自定义模块

 

 

 

//使用require()方法加载其他模块时,会执行被加载模块中的代码
const m1 = require('./06m1模块化1')
console.log(m1)

 

 

 3.模块作用域:

1.模块作用域 和函数作用域类似,在自定义模块中自定义的变量、方法等成员,只能在当前模块内被访问,这种 模块级别的访问限制,叫做模块作用域 2.模块作用域的好处 防止了全局变量污染的问题 重新定义一个模块:

 

 

const usrname = '张三'
function sayhello(){
    console.log('大家好我是'+usrname)
}
/*
1.模块作用域
和函数作用域类似,在自定义模块中自定义的变量、方法等成员,只能在当前模块内被访问,这种
模块级别的访问限制,叫做模块作用域
2.模块作用域的好处
防止了全局变量污染的问题
*/

引入模块:

 

 如果直接打印username和调用sayhello会报错。

 

 使用m8.username和m8.sayhello也会报错

 

 打印m8是个空对象

 

 

 这里充分体现模块作用域:

和函数作用域类似,在自定义模块中自定义的变量、方法等成员,只能在当前模块内被访问,这种
模块级别的访问限制,叫做模块作用域。
那么怎么才能在引入的模块中使用被引入模块的自定义变量和方法呢?
这就需要借助module对象了。

  module对象:   在每个.JS自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息 1.新建一个自定义模块,并打印他的module对象
/*
  1.module对象
  在每个.JS自定义模块中都有一个module对象,它里面存储了和当前模块有关的信息
*/ 
console.log(module)

  

 

 module.exports对象:     在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。     在外界用require()方法导入自定义模块时,得到的就是module.exports搜指向的对象     使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准
1.新建一个自定义模块
/* module.exports对象
    在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。
    在外界用require()方法导入自定义模块时,得到的就是module.exports搜指向的对象
    使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准
*/
const username = '鱼鱼鱼'
const say = function (){
    console.log('犹犹豫豫'+ username)
}
module.exports.say=say
module.exports.username = username

 2.引入自定义模块

const m11 = require('./11module.exports对象')
console.log(m11,m11.username)
m11.say()
//使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准

  

 

 使用module.exports对象将自定义模块中的成员进行暴露之后,就可以在其他引入的模块中访问了


注:  在自定义模块中,可以使用module.exports对象,将模块内的成员共享出去,供外界使用。
     在外界用require()方法导入自定义模块时,得到的就是module.exports搜指向的对象
     使用require()方法导入模块时,导入的结果,永远以module.exports指向的对象为准



标签:exports,自定义,node05,作用域,模块化,module,对象,模块
From: https://www.cnblogs.com/SadicZhou/p/16847492.html

相关文章

  • node.js - http、模块化、npm
    今天是node学习的第二天,其实越往后面学越感觉有点熟悉的味道了,光针对于node来说哈,为什么呢,因为我之前学过一点云计算的东西,当时感觉没什么用搞了下服务器客户端这些,没想到这......
  • vue 快速删除node_modules
      因为平时装依赖的时候,有可能会报错怎么不管用的时候,就需要把node_modules文件夹删了重新intall一下,但是直接删的话会要管理员权限,或者各种问题,这个时候就可以使用一个......
  • vue3 报错解决:找不到模块‘xxx.vue’或其相应的类型声明。(Vue 3 can not find module)
    在使用vuets语言开发项目的过程中,会遇到,导入vue文件后,提示 找不到模块‘xxx.vue’或其相应的类型声明。(Vue3cannotfindmodule)解决方式:在项目根目录新建一个......
  • node_modules修改?
    1.直接改node_modules的内容.....但是下次npmi之后那个包的代码又恢复原状 2.独立维护需要改的包把需要改的包复制下来,修改,推送到npm上。项目里用新包即可,但是增加......
  • Linux中的initcall以及module_init
    背景Linux内核是如何确保各子系统按序加载的?initcall调用流程start_kernel-->arch_call_rest_init-->rest_init-->kthread_create(kernel_init)-->......
  • c# - Mvc动态注册HttpModule实例
    c#-Mvc动态注册HttpModule实例再也不容为了兼容iis6、7、8、9、10了  -_-!!!!。不用配置web.config 的   <httpModules> or <modules>节点了!!!Microsoft.W......
  • idea - mac idea 无法在 project 导入或添加 module
    idea-macidea无法在project导入或添加module解决方法:本地hosts映射导致,注释掉一下localhost的映射,重试0.0.0.0localhost127.0.0.1localhost255.255.255.255lo......
  • ABAP-F-02记账模块化
    FUNCTIONzfi_fm_01.*"----------------------------------------------------------------------*"*"本地接口:*"IMPORTING*"VALUE(LS_HEADER)TYPEZSFB01_S......
  • nvm安装后无法找到D:\nodejs\node_modules\npm\bin\npm-cli.js的解决方法
    原因:系统环境变量配置不正确,需要手工修改,如图   将上图中的路径D:\NodeVersionManagement\nodejs(路径不准确)改为D:\NodeVersionManagement\nodejs\node_modules\np......
  • 【解决错误】AttributeError: module 'tensorflow.compat.v2.__internal__' has no at
    原因一般为tensorflow和keras版本不匹配。解决方法以下是tensorflow版本对应关系我最开始使用的为tensorflow=2.4.0,keras=2.4.3,但是问题仍然没有解决,我就安装了te......