「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」
在Node环境中,全局变量可以在任意一个地方去使用,无论我们开发命令行应用还是web应用都能使用这些全局变量。比如console.log和__dirname等等。
今天我们来看一些Node中常用的全局对象和方法,让我进一步去理解Node,以及它和其他的JavaScript运行时的区别,比如浏览器。
在浏览器中我们常用的全局对象或方法有:
- window
- alert()
- console
- setTimeOut()
- setInterval()
同样在Node中也有一些重要的方法,除了ECMAScript提供的功能,Node也提供了一些重要的功能。
其中一个重要的对象就是process,它可以用来和操作系统之间通信。
另还有module模块,它是Node模块化编程的基石。
模块化是一个重要的功能,只有能够拆分模块,才能更好的组织大型客威化的应用,或者将模块发布给其他人,进行更好的复用。
无论我们使用Node提供的核心模块,还是安装npm上的第三方模块,都需要了解Node中的模块的基本概念。
使用npm安装第三方模块
比如我们安装express模块
npm install express
使用express模块
const express = require('express')
console.log(typeof express)
// function
创建自己的模块
除了第三方模块,我们经常在项目中封装自己的模块
Node的module提供了将代码拆分成多个文件的解决方案。和C语言的include不同,与Ruby和Python的require也不同。Node中的require返回一个对象,而不是像C语言中的预处理器那样把代码加载到当前的命名空间。
Node的这套模块系统,基于CommonJS规范标准:wiki.commonjs.org/wiki/Module…
我们通过exposts对象来导出变量或者方法
比如创建一个user.js
const getName = () => {
return '小帅';
};
exports.getName = getName;
然后在index.js
const user = require('./user');
console.log(`User: ${user.getName()}`);
// User: 小帅
我们通过module.exports来进行默认的导出
同样假如user.js如下:
class User {
constructor(name, age, email) {
this.name = name;
this.age = age;
this.email = email;
}
getUserStats() {
return `
Name: ${this.name}
Age: ${this.age}
Email: ${this.email}
`;
}
}
module.exports = User;
index.js如下
const User = require('./user');
const shuai = new User('小帅', 23, 'shuai@qq.com');
console.log(jim.getUserStats());
// 输出:
// Name: 小帅
// Age: 23
// Email: shuai@qq.com
根据导出的内容不同,可以选择使用exports或者module.exports来使用。
下篇文章我将详细对比他们之间有何不同,和区别。
欢迎我的公众号【小帅的编程笔记】,让自己和他人都能有所收获!