美文网首页
4. 核心模块与文件模块

4. 核心模块与文件模块

作者: gem_Y | 来源:发表于2020-06-21 17:26 被阅读0次

在Node.js中,以模块为单位划分所有功能。每一个模块都是一个Javascript脚本文件。

4.2 从模块外部访问模块内部的成员

4.2.1 使用exports 对象

var myMsg = 'hello'
var funcname = function() {
  return 'i am funcname1 function'
}
exports.msg = myMsg
exports.funcname = funcname
var foo = require('./chapter-4/foo')
console.log(foo.msg)
console.log(foo.funcname())

4.2.2 将模块定义为类

也可以在模块文件内将 exports对象书写为 “module.exports” ,\color{red}{但需要将模块定义为一个类时,只能使用 module.exports}

var _name;
var name = '初始值'
// 模块对象的构造函数
var foo = function(name) {
  _name = name
}
// 获取私有变量_name的变量值
foo.prototype.GetName = function() {
  return _name
}
// 设置私有变量_name的值
foo.prototype.SetName = function(val) {
  _name = val
}
foo.prototype.name = name

module.exports = foo
var foo = require('./chapter-4/foo-class.js')
var myFoo = new foo("Tom") // 新建模块对象
console.log(myFoo.GetName())
myFoo.SetName('Gemma')
console.log(myFoo.GetName())

// 获取模块对象内的name公有变量值
console.log(myFoo.name)

4.2.3 为模块类定义类变量和类函数

// ...续上面
foo.staticName = '' // 定义类变量
// 定义类函数
foo.staticFunction = function() {
  console.log(foo.staticName)
}

module.exports = foo
// 类变量
foo.staticName = '静态变量'
foo.staticFunction()

4.3 组织与管理模块

4.3.1 从node_modules目录中加载模块

/home/ry/project/app.js

require('bar.js')

加载的路径依次为

  1. /home/ry/projects/node_modules/bar.js
  2. /home/ry/node_modules/bar.js
  3. /home/node_modules/bar.js
  4. /node_modules/bar.js

4.3.2 使用目录来管理模块

1)就是平常见到的在目录下建 index.js 文件,require('bar') 就会默认加载bar目录下面的
index.js

  1. 在应用程序根目录下的node_modules 子目录的 bar目录下创建一个package.json文件
"name": "foo",
"main": "./lib/bar.js"
require('bar')

4.4 模块对象的属性

  • module.id 当前模块的ID。默认情况下,主模块的ID 属性值为“.”,其他模块的ID属性值为该模块文件的绝对路径。在模块文件中可以修改当前模块的ID属性值
console.log(module.id)
module.id="foo"
console.log(module.id)
  • module.filename 当前模块文件的文件名


    image.png
  • module.loaded 模块是否加载完毕
  • module.parent 当前模块的父模块对象,即调用当前模块的模块对象
  • module.children 属性为一个数组,为当前模块中已加载的所有模块对象

4.5 Node.js中的包

在Node.js中,一个包事实上是一个目录,通常包含如下内容:
1) package.json 其中包含了用于对包进行描述的JSON格式的文件。

  1. 在bin子目录中存放二进制文件
    3)在lib子目录中存放Javascript文件
    4)在doc子目录存放对包或包的使用方法进行说明的文档文件
    5)在test子目录中存放一些对包进行单元测试用的文件

package.json 通常包含的字段

1)name

  1. preferglobal 是否支持全局安装
    3)bugs bug的提交地址
    4)keywords 关键字数组,通常用于搜索

相关文章

  • 4. 核心模块与文件模块

    在Node.js中,以模块为单位划分所有功能。每一个模块都是一个Javascript脚本文件。 4.2 从模块外部...

  • 05-模块的分类

    ###1.1模块的分类 ```模块分为核心模块、文件模块,其中包是一种特殊的文件模块 ``` - 核心模块 + f...

  • Node.js 核心模块概述

    模块加载原理与加载方式 Node 中的模块:核心模块/原生模块:Node提供的模块。文件模块:用户编写的模块。 N...

  • 那些年成为node攻城狮的路(二)

    模块加载机制浅析 node中模块分为核心模块和文件模块两大类,核心模块诸如fs、http、util...,文件模块...

  • Node之模块与npm包管理器

    核心模块与文件模块 在Node.js中,以模块为单位划分所有功能。核心模块为Node内置模块,还有一些第三方的模块...

  • 2018-09-01-day10作业-学生信息管理系统

    1.主界面模块 2.注册模块 3.登录模块 4.文件操作模块 5.学生模块 6.文件设计

  • 03、NodeJS-文件操作

    一、核心模块和对象 核心模块的意义 常用内置模块path:处理文件路径fs:操作文件系统child_process...

  • 03、NodeJS-文件操作

    一、核心模块和对象 核心模块的意义 常用内置模块path:处理文件路径fs:操作文件系统child_process...

  • 4、node模块调用栈

    下面是文件模块、核心模块、内建模块、C/C++扩展模块之间的调用关系。 C/C++内建模块,最底层模块,它属于核心...

  • require 函数搜索module方式

    node.js中模块有两种类型:核心模块和文件模块,核心模块直接使用名称获取,比如最长用的http模块: 路径:相...

网友评论

      本文标题:4. 核心模块与文件模块

      本文链接:https://www.haomeiwen.com/subject/kwyaxktx.html