1、核心模块与文件模块
nodejs是一个js运行环境,是一个平台。nodejs基于操作系统,封装了一些功能,http、tcp、udp,i/o模块、path、fs、stream等等。
以上这些通过nodejs内置的模块,它们就称为核心模块。http、fs、path等
文件模块:只要咱们写一个js文件,每一个文件都是模块。注:核心模块是nodejs内置的一些功能模块,文件模块是开发人员编写的js文件
2、从模块外部访问模块内部的成员
在nodejs中,一个文件又被称为一个模块。从一个模块访问外部模块中变量或方法
先创建了两个模块,demo1,demo2
在demo1中声明的变量str,方法add()
在demo2中没有权限访问,如果要访问到的话,就要把变量或方法做成全局属性
用到global来把str和add函数变成全局属性
global.str = “声明变量”;
global.add = function(){console.log(‘函数表达式’);}
在demo2中就可以访问到str和add()
2.1、使用exports对象
// exports 这个对象的属性 是可以将模块内的方法、变量等抛出,并且在其它引入的模块中可见(可使用)
// demo1.js
exports.str = "hello";
exports.hello = function(){
console.log('你好世界');
}
// 在demo2.js中引入demo1.js文件 可以使用demo1中的变量和方法
var demo1 = require('./demo1');
demo1.hello();
demo1.str; // 这里是str变量的调用 需要console.log才能看到
2.2、将模块定义为类
// class是在ECMAScript2015版本之后加入的概念 es6
// class 关键字:确定一个类型 Student以类概念的存在
class Student {
// 构造函数 默认存在一个无参的构造函数
constructor(n,a){
this.name = n;
this.age = a;
}
// 函数表达式
add = function(){
console.log('add');
}
}
module.exports = Student;
2.3、将模块定义为类变量和类函数
// 返回一个JSON Object
var app = {
name: 'app',
version: '1.0.0',
sayName: function(name){
console.log(this.name);
}
}
module.exports = app;
// 调用模块
var app = require('./app.js');
app.sayName('hello');//hello
// 定义变量
// 定义函数
var func1 = function() {
console.log("func1");
};
var func2 = function() {
console.log("func2");
};
exports.function1 = func1;
exports.function2 = func2;
// 函数调用
var functions = require("./functions");
functions.function1();
functions.function2();
3、模块对象的属性
什么是模块对象?
模块:核心模块(nodejs内置),第三方模块(第三方组织发布的),自定义模块(开发人员
在nodejs平台上,每一个文件就可以称为一个模块。
定义了一个modules它在模块内就是一个模块对象。每一个模块内斗内置了一个对象就是module(模块)
每个模块对象都代表当前模块。使用module.exports时才能把整个的模块文件作为一个对象抛出。
模块对象的属性:exports就是module.exports 定义的属性。
注:module.exports 和exports的区别
1.module.exports 初始值为一个空对象 {}
2.exports 是指向的 module.exports 的引用
3.require() 返回的是 module.exports 而不是 exports
本文深入探讨Node.js的模块系统,包括核心模块与文件模块的区别,如何从一个模块访问另一个模块的成员,以及如何使用exports对象和module.exports来暴露模块内的方法和变量。同时,文章还介绍了将模块定义为类和类变量的方法。

5849

被折叠的 条评论
为什么被折叠?



