自定义模块的导入

函数作用域:定义一个function,在函数中定义的变量只能在函数内被访问,出函数就访问不了

类比模块作用域:在自定义模块中定义的变量、方法等成员,只能在当前模块内被访问,这种模块级别的访问限制----------------------减少了全局变量污染的问题

模块中定义的变量和方法在调用中没有访问访问权限

console.log('这是自定义的模块1 检验模块作用域问题');
 const username='张三';//模块中的全局变量
 function say(){
    console.log('大家好,我是'+username)
 }
const f1=require('./test_md');//加载自定义模块---会加载模块的所有内容

console.log(f1);//使用f1接收模块 f1默认是空对象

如何向外共享模块作用域中的成员:

  • module对象:每个js自定义模块中都有一个 module,他里面存储了和当前模块有关的信息

里面的信息如下: 

  • path:当前模块的存储路径
  • filename:当前模块的文件名称
  • exports:向外共享成员,让模块内的成员可以被外界访问到。module.exports对象,将模块中的成员共享出去,提供给外界使用
console.log('这是自定义的模块1 检验模块作用域问题');
 const username='张三';//模块中的全局变量
 function say(){
    console.log('大家好,我是'+username)
 }
 console.log(module);

 

这是自定义的模块1 检验模块作用域问题
Module {
  id: '.',
  path: 'E:\\nodejs实验\\js',
  exports: {},
  filename: 'E:\\nodejs实验\\js\\test_md.js',
  loaded: false,
  children: [],
  paths: [
    'E:\\nodejs实验\\js\\node_modules',
    'E:\\nodejs实验\\node_modules',
    'E:\\node_modules'
  ]
}

所以实际上我们使用require导入的模块,所使用的变量是原来模块的module.exports指向的那个对象


 module.exports.username='张三';//对外提供变量
 module.exports.say=function(){
   console.log('大家好,我是'+username)
 };//对外提供方法

暴露模块的私有成员:

使用module.exports.对外的接口=模块内的变量

使用module.exports.对外的接口函数=模块内的函数

module.exports.username=username;


const username='李四';
function say(){
   console.log('大家好,我是'+username)
}
module.exports.a=username;
module.exports.say=say;

 使用require()方法导入模块的注意点:永远以module.exports指向的对象为主(进行了重新的指向)


 const age='李四';
 module.exports.age=age;
 module.exports.username='张三';//对外提供变量
 module.exports.say=function(){
   console.log('大家好,我是'+username)
 };//对外提供方法

 //让 module.exports指向全新对象

 module.exports={
  nickname:'小白',
  sayhi(){
    console.log('hi');
  }
 }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值