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
英文地址,請注明出處:http://en.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;且肉眼能分辨出大小。由于兩人都…