nodeJS基础--模块加载机制

node学习day1

关键字: 全局对象global 模块module 对外exports
文件路径__filename 文件目录路径__dirname

node的模块加载机制

  • node没有window对象,其全局对象为global

  • 每个文件中的变量和函数并不挂载在global对象中,而是挂在在其所在的文件下

  • 一个文件就是一个模块
  • 声明全局变量的方式为: global.变量名
  • node通过 require 引入模块
    • require() 总是会优先加载核心模块
    • 查找相同名字的文件
    • 如果查不到,则加上后缀.js进行查找
    • 如果查不到,则加上后缀.js.json进行查找
    • 如果查不到,则加上后缀.node进行查找
    • 如果给定的路径不存在,则 require() 会抛出一个 code 属性为 ‘MODULE_NOT_FOUND’ 的 Error。

模块

每个文件就是一个模块,每个模块都是一个module对象,它具有exports属性,可以对外暴露接口,
使引入该模块的模块可以使用此模块的数据

“`js

var  plane  =  require ('plane.js') //引入模块,返回的值就是一个module对象

plane.file()   //假如这个引入的plane模块有一个file()函数,则可以如此调用,变量亦是如此

plane.a


console.log( __dirname ); //返回当前 <文件所在目录> 的绝对路径
console.log( __filename ); //返回当前 <文件> 所在的绝对路径

目录作为模块

可以把程序和库放到一个单独的目录,然后提供一个单一的入口来指向它。 把目录递给 require() 作为一个参数,有三种方式。

第一种方式是在根目录下创建一个 package.json 文件,并指定一个 main 模块。 例子,package.json 文件类似:

{ “name” : “some-library”,
“main” : “./lib/some-library.js” }
如果这是在 ./some-library 目录中,则 require(‘./some-library’) 会试图加载 ./some-library/lib/some-library.js。

这就是 Node.js 处理 package.json 文件的方式。

注意:如果 package.json 中 “main” 入口指定的文件不存在,则无法解析,Node.js 会将模块视为不存在,并抛出默认错误:

Error: Cannot find module ‘some-library’
如果目录里没有 package.json 文件,则 Node.js 就会试图加载目录下的 index.js 或 index.node 文件。 例如,如果上面的例子中没有 package.json 文件,则 require(‘./some-library’) 会试图加载:

./some-library/index.js
./some-library/index.node

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值