node暴露(exports)规则和加载(require)规则

node笔记

  • fs核心模块中的readFile,readDir
  • http核心模块createServer,listen,on
  • url核心模块url.parse 从路径中取出
  • 服务端重定向
//301是永久重定向 单向性
res.statusCode = 302 //临时重定向
res.setHeader('Location',path) //设置重定向的路径

5.暴露规则

  • 可以理解为在每一个模块中都有一个module对象
  • const module={ exports:{} }然后module中有一个exports对象 ,然后在末尾 return module.exports ,但是这个是在node底层的我们看不见
  • 在哪一个文件中require那个文件就会得到module.exports
  • 但是平常我们还能见到这种写法exports.
  • 但是呢我们平常还可以用到这种写法exports.a = 'hello nodejs'那这种情况这个exports是什么?
  • 其实在这里面还有一条语句const exports = module.exports同样这也是底层实现的
  • 还有一种情况exports = 'hello nodejs'这个是不对的 因为最后return的是module.exports并不是exports
module.exports = 'hello nodejs'
exports.foo = 'helle' //这样的话会报错因为module.exports已经被改成了一个字符串,不是一个对象了。

6.require暴漏规则

  • 优先从缓存加载
  • 6.1.加载核心模块 核心模块其实也有对应的文件,由于node是开源的所以这个可以在github上查看源码在lib目录有这些文件 例如fs 、url、http等require('fs) ....
  • 6.2第三方模块 也就是我们平常npm的那些包,这个写法和核心模块的类似没有路径require('jquery') ......
  • 这中加载规则是为默认找node_modules这个目录,然后再在这个目录中找jquery这个目录,在这个目录下找到package.json中的main属性,main属性就记录了jQuery的入口js模块, 然后就会加载这个包,实际还是加载的文件。
  • 如果没有package.json或则main中没有路径,index.js文件就是默认选择的文件,但是如果这个文件也没有运行时就会报错。
  • !!! 重点 !!! 如果上面的一切都不成立,也就是说在此目录中没有找到node_modules,会默认在上一级目录中有没有这个node_modules,如此向上找知道查询到磁盘根目录,如果还没有找到则会报错 can‘t find module xxx
  • 6.3 自己写的js文件加载require('./index.js')自己的js文件肯定是要把路径写上的,如果不写路径的话但是它也不是核心模块,也不是第三方的包,肯定是会报错的。
  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值