Node.js:函数、路由、全局对象

Node.js函数

在JavaScript中,一个函数可以作为另一个函数的参数,可以先定义一个函数,然后进行传递,也可以在传参的地方直接定义

function sayhello(){console.log("hello");
}
function run(hello, value){hello();console.log(value);
}
run(sayhello, 1);

hello
1


匿名函数

不需要定义函数的名字,直接进行调用即可

function execute(somefunc, value){somefunc(value);
}
execute(function(value){console.log(value);
},"Hello!");

实例:通过函数的匿名传递让http服务工作

var http = require("http");
http.createServer(function(request, response) {response.writeHead(200, {"Content-Type": "text/plain"});response.write("Hello World");response.end();
}).listen(8888);

这种方法类似于go语言的handler

Node.js路由

我们需要的所有的数据都被包含于request对象中,该对象作为onRequest()回调函数的第一个参数传递,但是为了解析这些数据,我们需要包含额外的node.js模块,分别为url和querystring模块

请添加图片描述

var http = require("http");
var url = require("url");
function start(){function onRequest(request, response){var pathname = url.parse(request.url).pathname;console.log("Request for "+pathname+" received.");response.writeHead(200, {"Content-Type":"text/plain"});response.write("HW");response.end();}http.createServer(onRequest).listen(8888);console.log("Server launch!");
}
exports.start = start;

全局对象

JavaScript中有一个特殊的对象,称为全局对象(Global Object),它及其所有的属性都可以在程序的任何地方进行访问,即全局变量
浏览器中通常window是全局对象,而node.js中的全局对象是global,所有全局变量都是global对象的属性
我们可以直接访问到global的属性

全局对象与全局变量

global的最根本的作用是作为全局变量的宿主
满足下列变量的为全局变量

  • 在最外层定义
  • 全局对象的属性
  • 隐式定义,直接赋值的变量

当你定义一个全局变量时,这个变量同时也会成为全局对象的属性,最好不要使用 var 定义变量以避免引入全局变量,因为全局变量会污染命名空间,提高代码的耦合风险。


__filename

__filename——当前正在执行的脚本名,将输出绝对路径,且和命令行参数所指定的文件名不一定相同。

console.log(__filename);
__dirname

__dirname——当前执行的脚本所在的目录

console.log(__dirname);
setTimeout(cb, ms)

全局函数,在指定的事件结束之后指定函数cb,但是仅仅执行一遍函数,返回一个代表计时器的句柄值

function sayHello(){console.log("Hello!");
}
setTimeout(sayHello, 2000);
clearTimeout(t)

停止作用在全局的计时器,参数t是全局计时器的一个句柄

function sayHello(){console.log("Hello!");
}
var t = setTimeout(sayHello, 2000);
clearTimeout(t);
setInterval(cb,ms)

和setTimeout类似,但是会循环调用某一个函数,直到被清除


function printHello(){console.log("Hello!");
}
let interval = globalThis.setInterval(printHello, 3000);
function clear(){globalThis.clearInterval(interval);
}
global.setTimeout(clear, 10000);
console

console是一个标准的控制台输出,原来是IE的内部调试工具,后来成为实际标准

  • console.log()打印字符串
  • console.info()返回消息型数据,除了chrome,其他会返回蓝色的惊叹号
  • console.error()输出错误消息,返回红叉
  • console.warn()警告消息,黄色惊叹号
  • console.dir()对一个对象进行检查,并以易于阅读和打印的格式进行显示
  • console.time()输出事件表示计时开始
  • console.timeEnd()结束时间表示计时结束
  • console.trace()当前执行的代码在堆栈中的调用路径,这个测试函数运行很有帮助,只要给想测试的函数里面加入 console.trace 就行了。
  • console.assert()用于判断某个表达式或变量是否为真,接收两个参数,第一个参数是表达式,第二个参数是字符串。只有当第一个参数为false,才会输出第二个参数,否则不会有任何结果。\
progress

是一个全局变量,global的属性
描述当前的node.js的进程状态的对象,提供了一个与操作系统的简单接口

  • exit
    当进程准备退出时候触发
  • beforeExit
    当node清空时间循环,并且没有任何其他的安排的时候这个事件会被触发
  • uncaughtExpection
    当一个异常冒泡回到事件循环,触发这个事件。如果给异常添加了监视器,默认的操作(打印堆栈跟踪信息并退出)就不会发生。
  • Signal 事件
    当进程接收到信号时就触发。信号列表详见标准的 POSIX 信号名,如 SIGINT、SIGUSR1 等。
process.on('exit', function(code) {// 以下代码永远不会执行setTimeout(function() {console.log("该代码不会执行");}, 0);console.log('退出码为:', code);
});
console.log("程序执行结束");

process提供了很多的有用属性,比如stdout、执行参数argv等
详见:https://www.runoob.com/nodejs/nodejs-global-object.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/92582.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/92582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025暑期—06神经网络-常见网络3

VGG16网络64个卷积核做两次卷积,填充后编程224X224X64 pooling 两次卷 pooling 三次卷...分辨率降低一半,通道数增加1倍所有卷积核都是3x3, 所有的pooling 都是2x2残差网络每一层的块都有越层的连接。

使用 FastAPI 构建 Elasticsearch API

作者:来自 Elastic Jeffrey Rengifo 学习如何使用 Pydantic 模式和 FastAPI 后台任务,通过实际示例构建一个 Elasticsearch API。 想获得 Elastic 认证吗?查看下一期 Elasticsearch Engineer 培训的时间! Elasticsearch 拥有丰富…

[2025CVPR-目标检测方向]FSHNet:一种用于3D物体检测的全稀疏混合网络。

1. ​简介​ 论文提出了FSHNet(Fully Sparse Hybrid Network),一种用于3D物体检测的全稀疏混合网络。FSHNet旨在解决现有稀疏3D检测器的两大核心问题:长距离交互能力弱和网络优化困难。稀疏检测器(如VoxelNeXt和SAFDN…

MySql 8.0.42 zip版安装教程和使用

今天要装个MySQL,就按照自己以前的教程来做,不知道是不是版本更新了的原因,又遇到了一点小阻碍,于是再记录一下吧。 下载MySQL 下载链接:MySQL :: Download MySQL Community Serverhttps://dev.mysql.com/downloads/…

【lucene】实现knn

在 Lucene 中,可以通过 KnnFloatVectorQuery 和 KnnFloatVectorField 来实现 KNN(k-Nearest Neighbors)搜索。以下是具体介绍:1. 功能原理KnnFloatVectorQuery 是 Lucene 用于执行最近邻搜索的查询类,它可以在一个字段…

RabbitMQ实践学习笔记

RabbitMQ实践 以下是关于RabbitMQ实践的整理,涵盖常见场景和示例代码(基于Markdown格式)。内容按模块分类,避免步骤词汇,直接提供可操作的方法: 基础连接与队列声明 使用Python的pika库建立连接并声明队列: import pikaconnection = pika.BlockingConnection(pika.C…

量子生成对抗网络:量子计算与生成模型的融合革命

引言:当生成对抗网络遇上量子计算在人工智能与量子计算双重浪潮的交汇处,量子生成对抗网络(Quantum Generative Adversarial Networks, QGAN)正成为突破经典算力瓶颈的关键技术。传统生成对抗网络(GAN)在图…

VBA 多个选项,将选中的选项录入当前选中的单元格

1、使用LISTBOX插件&#xff0c;选中后回车录入 维护好数据&#xff0c;并新增一个activeX列表框插件 Private Sub Worksheet_SelectionChange(ByVal Target As Range)If Target.Count > 1 Then Exit SubIf Target.Row > 2 And Target.Row < 10 And Target.Column 2…

【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博点赞量Top6实现

大家好&#xff0c;我是java1234_小锋老师&#xff0c;最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flaskpandasecharts)视频教程&#xff0c;持续更新中&#xff0c;计划月底更新完&#xff0c;感谢支持。今天讲解主页-微博点赞量Top6实现 视频在线地址&…

SAP调用外部API

SAP需求将中文字符转化为对应的拼音具体思路,由于sap中没有将中文字符转化为拼音的函数或方法类,则以http请求访问外部服务器发布的API服务,然后获取其返回值即可1.调用外部网站上提供的api缺点:免费次数有限,后需要充值这里是用www格式的json报文*&----------------------…

(12)机器学习小白入门YOLOv:YOLOv8-cls 模型微调实操

YOLOv8-cls 模型微调实操 (1)机器学习小白入门YOLOv &#xff1a;从概念到实践 (2)机器学习小白入门 YOLOv&#xff1a;从模块优化到工程部署 (3)机器学习小白入门 YOLOv&#xff1a; 解锁图片分类新技能 (4)机器学习小白入门YOLOv &#xff1a;图片标注实操手册 (5)机器学习小…

基于Matlab传统图像处理技术的车辆车型识别与分类方法研究

随着计算机视觉和图像处理技术的发展&#xff0c;车辆检测与识别已经成为智能交通系统中的一个重要研究方向。传统图像处理方法通过对图像进行预处理、特征提取、分类与识别&#xff0c;提供了一种无需复杂深度学习模型的解决方案。本研究基于MATLAB平台&#xff0c;采用传统图…

未来趋势:LeafletJS 与 Web3/AI 的融合

引言 LeafletJS 作为一个轻量、灵活的 JavaScript 地图库&#xff0c;以其模块化设计和高效渲染能力在 Web 地图开发中占据重要地位。随着 Web3 和人工智能&#xff08;AI&#xff09;的兴起&#xff0c;地图应用的开发范式正在发生变革。Web3 技术&#xff08;如区块链、去中…

Spring AI 系列之二十一 - EmbeddingModel

之前做个几个大模型的应用&#xff0c;都是使用Python语言&#xff0c;后来有一个项目使用了Java&#xff0c;并使用了Spring AI框架。随着Spring AI不断地完善&#xff0c;最近它发布了1.0正式版&#xff0c;意味着它已经能很好的作为企业级生产环境的使用。对于Java开发者来说…

LFU算法及优化

继上一篇的LRU算法的实现和讲解&#xff0c;这一篇来讲述LFU最近使用频率高的数据很大概率将会再次被使用,而最近使用频率低的数据,将来大概率不会再使用。做法&#xff1a;把使用频率最小的数据置换出去。这种算法更多是从使用频率的角度&#xff08;但是当缓存满时&#xff0…

关于原车一键启动升级手机控车的核心信息及注意事项

想知道如何给原车已经有一键启动功能的车辆加装手机远程启动。这是个很实用的汽车改装需求&#xff0c;尤其适合想在冬天提前热车、夏天提前开空调的车主。一、适配方案与核心功能 ‌升级专车专用4G手机控车模块‌&#xff0c;推荐安装「移动管家YD361-3」系统&#xff0c;该方…

数据结构与算法:类C语言有关操作补充

数据结构与算法:类C语言操作补充 作为老师,我将详细讲解类C语言(如C或C++)中的关键操作,包括动态内存分配和参数传递。这些内容在数据结构与算法中至关重要,例如在实现动态数组、链表或高效函数调用时。我会用通俗易懂的语言和代码示例逐步解释,确保你轻松掌握。内容基…

Go 并发(协程,通道,锁,协程控制)

一.协程&#xff08;Goroutine&#xff09;并发&#xff1a;指程序能够同时执行多个任务的能力&#xff0c;多线程程序在一个核的cpu上运行&#xff0c;就是并发。并行&#xff1a;多线程程序在多个核的cpu上运行&#xff0c;就是并行。并发主要由切换时间片来实现"同时&q…

图机器学习(15)——链接预测在社交网络分析中的应用

图机器学习&#xff08;15&#xff09;——链接预测在社交网络分析中的应用0. 链接预测1. 数据处理2. 基于 node2vec 的链路预测3. 基于 GraphSAGE 的链接预测3.1 无特征方法3.2 引入节点特征4. 用于链接预测的手工特征5. 结果对比0. 链接预测 如今&#xff0c;社交媒体已成为…

每日一算:华为-批萨分配问题

题目描述"吃货"和"馋嘴"两人到披萨店点了一份铁盘&#xff08;圆形&#xff09;披萨&#xff0c;并嘱咐店员将披萨按放射状切成大小相同的偶数个小块。但是粗心的服务员将披萨切成了每块大小都完全不同的奇数块&#xff0c;且肉眼能分辨出大小。由于两人都…