镇江网站建设推广找思创,PHP文件加到WordPress页面,图标logo设计,利用php做直播网站对Node.js中的基础知识进行讲解#xff0c;包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容#xff0c;这些知识是学习Node.js应用开发的基础。
1、Node.js全局对象
全局#xff0c;即程序中任何地方都可以使用#xff0c;Node.js内…对Node.js中的基础知识进行讲解包括全局变量、全局对象、全局函数以及用于实现模块化编程的exports和module对象等内容这些知识是学习Node.js应用开发的基础。
1、Node.js全局对象
全局即程序中任何地方都可以使用Node.js内置了多个全局变量、全局对象和全局函数在开发Node.js程序时都可以使用下面分别对它们进行讲解。
1.1、全局变量
Node.js中的全局变量有两个分别是__filename和__dirname它们的说明如下
__filename全局变量__filename表示当前正在执行的脚本的文件名包括文件所在位置的绝对路径但该路径和命令行参数所指定的文件名不一定相同。如果在模块中则返回的值是模块文件的路径。__dirname全局变量__dirname表示当前执行的脚本所在的目录。
例如下面代码用来分别输出Node.js中两个全局变量的值
console.log(当前文件名,__filename);
console.log(当前目录,__dirname);程序运行效果如下图所示
1.2、 全局对象
全局对象可以在Node.js程序的任何地方进行访问它可以为程序提供经常使用的特定功能。Node.js中的全局对象如下表所示 接下来分别讲解console对象和process对象的使用。
1、console对象
console对象提供了Node.js控制台的标准输出其常用方法及说明如下表所示
1console.log()方法在console.log()方法中可以使用占位符输出变量如数字变量、字符串变量和JSON变量等常用的占位符如下表所示 例如下面代码使用%d占位符输出一个整数值
console.log(变量的值是%d,57);上面代码中在console.log()方法里添加了两个参数。第一个参数是字符串’变量的值是%d’第二个参数是数字57。其中%d是占位符会寻找后面位置的数字因为第二个参数57紧紧跟在后面所以输出结果如下
变量的值是57使用console.log()方法输出内容时还可以有多个占位符示例代码如下
console.log(%d%d%d,273,52,27352);
console.log(%d%d%d,273,52,27352,52273);
console.log(%d%d%d %d,273,52,27352);上面代码运行效果如下
27352325
27352325 52273
27352325 %d观察代码可以发现第1行代码中占位符的个数是3个后面的数字变量的个数也是3个所以输出结果是“27352325”第2行代码中占位符的个数是3个但是后面数字变量的个数是4个输出结果“2735232552273”说明多出的数字变量52273原样输出第3行代码中占位符的个数是4个但是后面数字变量的个数是3个输出结果“27352325 %d”说明多余的占位符没有找到匹配的数字变量只能原样输出。
使用其他占位符的示例代码如下
console.log(字符串 %s,hello world,和顺序无关);
console.log(JSON %j,{name:Node.js});上面代码运行效果如下
字符串 hello world 和顺序无关
JSON {name:Node.js}2console.time()方法和console.timeEnd()方法console.time()方法和console.timeEnd()方法用来记录程序的执行时间段。console.time()方法用来开始计时其参数只是起到标识的作用console.timeEnd()方法用来结束计时并输出程序运行所需的时间它在显示结果时会在标识参数后面自动添加以毫秒为单位的时间。例如下面代码用来输出执行10的阶乘运算所需要的时间
//开始计时
console.time(时间);
var output 1;
for (var i 1; i 10; i) {output * i;
}
console.log(Result:, output);
//结束计时并输出程序执行时间
console.timeEnd(时间);Result: 3628800
时间: 11.027ms说明 程序的执行时间不是固定时间它与计算机配置有关。
2、process对象
process对象用于描述当前程序的状态与console对象不同的是process对象只在Node.js中存在在JavaScript中并不存在该对象。process对象的常用属性及说明如下表所示 process对象的常用方法及说明如下表所示 输出process对象常用属性的值
console.log(- process.env:, process.env);
console.log(- process.version:, process.version);
console.log(- process.versions:, process.versions);
console.log(- process.arch:, process.arch);
console.log(- process.platform:, process.platform);
console.log(- process.connected:, process.connected);
console.log(- process.execArgv:, process.execArgv);
console.log(- process.exitCode:, process.exitCode);
console.log(- process.mainModule:, process.mainModule);
console.log(- process.release:, process.release);
console.log(- process.memoryUsage():, process.memoryUsage());
console.log(- process.uptime():, process.uptime());运行效果如下
- process.env: {USERDOMAIN_ROAMINGPROFILE: DESKTOP-05BA7LG,LOCALAPPDATA: C:\\Users\\XIAOKE\\AppData\\Local,PROCESSOR_LEVEL: 6,……
}
- process.version: v19.0.1
- process.versions: {node: 19.0.1,v8: 10.7.193.13-node.16,uv: 1.43.0,zlib: 1.2.11,brotli: 1.0.9,ares: 1.18.1,modules: 111,nghttp2: 1.47.0,napi: 8,llhttp: 8.1.0,openssl: 3.0.7quic,cldr: 41.0,icu: 71.1,tz: 2022b,unicode: 14.0,ngtcp2: 0.8.1,nghttp3: 0.7.0
}
- process.arch: x64
- process.platform: win32
- process.connected: undefined
- process.execArgv: []
- process.exitCode: undefined
- process.mainModule: Module {id: .,path: K:\\nodepro,exports: {},filename: K:\\nodepro\\index.js,loaded: false,children: [],paths: [ K:\\nodepro\\node_modules, K:\\node_modules ]
}
- process.release: {name: node,sourceUrl: https://nodejs.org/download/release/v19.0.1/node-v19.0.1.tar.gz,headersUrl: https://nodejs.org/download/release/v19.0.1/node-v19.0.1-headers.tar.gz,libUrl: https://nodejs.org/download/release/v19.0.1/win-x64/node.lib
}
- process.memoryUsage(): {rss: 28078080,heapTotal: 6639616,heapUsed: 6031272,external: 455122,arrayBuffers: 17378
}
- process.uptime(): 0.0950981.3、全局函数
全局函数即可以在程序的任何地方调用的函数Node.js主要提供了6个全局函数其说明如下表所示 下面对Node.js中全局函数的使用进行讲解。
1、setTimeout(cb,ms)和clearTimeout(t)
这两个全局函数分别用来设置和取消一个定时器此处需要说明的是setTimeout(cb,ms)设置的定时器仅调用一次指定的方法。示例代码如下
var timersetTimeout(function(){console.log(您将在2秒后看到这句话)
},2000)
//clearTimeout(timer)运行上面代码2秒后将会显示如下内容
您将在2秒后看到这句话如果将上面代码中的最后一行取消注释则运行程序时不会输出任何内容因为虽然前3行代码添加了一个定时器但是第4行又取消了该定时器所以在控制台不会输出内容。
2、setInterval(cb,ms)和clearInterval(t)
这两个全局函数分别用来添加和取消一个定时器。其中参数cb为要执行的函数ms为调用cb函数前等待的时间t表示要取消的setInterval()方法设置的定时器。使用setInterval()方法设置定时器与使用setTimeout()方法设置定时器的区别是使用setInterval()方法设置的定时器可以多次调用指定的方法而使用setTimeout()方法设置的定时器只能调用一次指定的方法。示例代码如下
var i 0 //记录执行程序的次数
var timer
timer setInterval(function () {i 1console.log(已执行 i 次)if (i 5) {clearInterval(timer) //执行5次后取消定时器console.log(执行完毕)}
}, 2000)运行上面的代码每隔2秒会显示一次执行函数的次数直到执行5次以后取消定时器最终输出结果如下
已执行1次
已执行2次
已执行3次
已执行4次
已执行5次
执行完毕3、setImmediate(callback[,…args])和clearImmediate(immediate)
这两个全局函数用来安排在I/O事件的回调之后立即执行的函数以及取消setImmediate()创建的Immediate对象。其中callback参数指的是要执行的函数immediate参数表示使用setImmediate()创建的Immediate对象。
说明 I/O(input/output)即输入/输出通常指数据在内部存储器与外部存储器或其他周边设备之间的输入和输出。
示例代码如下
console.log(正常执行1);
var a setImmediate(function () {console.log(我被延迟执行了);
});
console.log(正常执行2)
//clearImmediate(a)上面代码的运行结果如下
正常执行1
正常执行2
我被延迟执行了如果将最后一行代码取消注释则运行结果如下
正常执行1
正常执行22、模块化编程
Node.js主要使用模块系统进行编程所谓模块是指为了方便调用功能预先将相关方法和属性封装在一起的集合体。模块和文件是一一对应的即一个Node.js文件就是一个模块这个文件可以是JavaScript代码、JSON或者编译过的C/C扩展等。下面对Node.js模板化编程中用到的两个对象exports和module进行解析。
2.1、exports对象
在Node.js中创建模块需要使用exports对象该对象可以共享方法、变量、构造和类等下面通过一个实例讲解如何使用exports创建一个模块。
使用exports对象实现模块化编程步骤如下 (1)在WebStorm中创建一个module.js文件其中通过exports对象共享求绝对值和计算圆面积的方法代码如下
//求绝对值的方法abs
exports.abs function (number) {if (0 number) {return number;} else {return -number;}
};
//求圆面积的方法circleArea
exports.circleArea function (radius) {return radius * radius * Math.PI;
};(2)在WebStorm中创建一个main.js文件用来调用前面创建的模块来计算指定值的绝对值及指定半径的圆面积代码如下
//加载module.js模块文件
var module require(./module.js);
//使用模块方法
console.log(abs(-273) %d, module.abs(-273));
console.log(circleArea(3) %d, module.circleArea(3));说明 上面代码中通过使用require()导入了创建的module.js模块文件。
运行main.js文件结果如下
abs(-273) 273
circleArea(3) 28.2743338823081382.2、module对象
在Node.js中除了使用exports对象进行模块化编程还可以使用module对象进行模块化编程。module对象的常用属性如下表所示 使用module对象实现模块化编程步骤如下 (1)在WebStorm中创建一个module.js文件其中定义一个输出方法然后通过module对象的exports属性指定对外接口代码如下
function Hello() {var name;this.setName function (thyName) {name thyName;};this.sayHello function () {console.log(name 你好);};
};
module.exports Hello;(2)在WebStorm中创建一个main.js文件用来调用创建的模块以输出内容代码如下
var Hello require(./module.js);
hello new Hello();
hello.setName(2023);
hello.sayHello();运行main.js文件结果如下
2023你好注意 与使用exports对象相比唯一的变化是使用module.exports Hello代替了exports。在外部引用该模块时其接口对象就是要输出的Hello对象本身而不是原先的exports。