日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Node.js—简介

發(fā)布時(shí)間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js—简介 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、Node.js是什么

1. 基本概述

Node.js是一個(gè)可以讓JavaScript運(yùn)行在服務(wù)器端的平臺(tái)。它是一個(gè)為實(shí)時(shí)Web應(yīng)用開(kāi)發(fā)而誕生的平臺(tái),它從誕生之初就充分考慮了在實(shí)時(shí)響應(yīng)、超大規(guī)模數(shù)據(jù)要求下架構(gòu)的可擴(kuò)展性。這使得它摒棄了傳統(tǒng)平臺(tái)依靠多線程來(lái)實(shí)現(xiàn)高并發(fā)的設(shè)計(jì)思路,而采用了單線程、異步I/O、事件驅(qū)動(dòng)式的程序設(shè)計(jì)模式。

Node.js 有著強(qiáng)大而靈活的包管理器(node package manager, npm),目前已經(jīng)有上萬(wàn)個(gè)第三方模塊,其中有網(wǎng)站開(kāi)發(fā)框架,有 MySQL、PostgreSQL、MongoDB數(shù)據(jù)庫(kù)接口,有模板語(yǔ)言解析、 CSS 生成工具、郵件、加密、圖形、調(diào)試支持,甚至還有圖形用戶界面和操作系統(tǒng) API工具。

Node.js 可以作為服務(wù)器向用戶提供服務(wù),與 PHP、 Python、 Ruby on Rails 相比,它跳過(guò)了 Apache、 Nginx 等 HTTP服務(wù)器,直接面向前端開(kāi)發(fā)。 Node.js 的許多設(shè)計(jì)理念與經(jīng)典架構(gòu)(如 LAMP)有著很大的不同,可提供強(qiáng)大的伸縮能力 。

2. 相關(guān)名詞介紹

(1) JavaScript

JavaScript是由ECMAScript、文檔對(duì)象模型(DOM)和瀏覽器對(duì)象模型(BOM)組成的,而Mozilla則指出JavaScript由Core JavaScript和Client JavaScript組成的。Node.js中的JavaScript只是Core JavaScript,或者說(shuō)是ECMAScript的一個(gè)實(shí)現(xiàn),不包含DOM、BOM或者Client JavaScript,這是因?yàn)镹ode.js不運(yùn)行在瀏覽器中,所以不需要使用瀏覽器中的許多特性。

(2) V8引擎

Node.js 的 JavaScript 引擎是 V8,來(lái)自 Google Chrome 項(xiàng)目。 V8 號(hào)稱是目前世界上最快的 JavaScript 引擎,經(jīng)歷了數(shù)次引擎革命,它的 JIT(Just-in-time Compilation,即時(shí)編譯)執(zhí)行速度已經(jīng)快到了接近本地代碼的執(zhí)行速度。 Node.js 不運(yùn)行在瀏覽器中,所以也就不存在 JavaScript 的瀏覽器兼容性問(wèn)題,你可以放心地使用 JavaScript 語(yǔ)言的所有特性。

二、Node.js能做什么

  • 具有復(fù)雜邏輯的網(wǎng)站;
  • 基于社交網(wǎng)絡(luò)的大規(guī)模 Web 應(yīng)用;
  • Web Socket 服務(wù)器;
  • TCP/UDP 套接字應(yīng)用程序;
  • 命令行工具;
  • 交互式終端程序;
  • 帶有圖形用戶界面的本地應(yīng)用程序;
  • 單元測(cè)試工具;
  • 客戶端 JavaScript 編譯器;
  • Node.js 內(nèi)建了 HTTP 服務(wù)器支持,也就是說(shuō)你可以輕而易舉地實(shí)現(xiàn)一個(gè)網(wǎng)站和服務(wù)器的組合。

三、Node.js異步I/O與事件驅(qū)動(dòng)

Node.js 最大的特點(diǎn)就是采用異步式 I/O 與事件驅(qū)動(dòng)的架構(gòu)設(shè)計(jì)。 傳統(tǒng)高并發(fā)架構(gòu)方案是多線程模式,Node.js 使用的是單線程模型,對(duì)于所有 I/O 都采用異步式的請(qǐng)求方式,避免了頻繁的上下文切換。 Node.js 在執(zhí)行的過(guò)程中會(huì)維護(hù)一個(gè)事件隊(duì)列,程序在執(zhí)行時(shí)進(jìn)入事件循環(huán)等待下一個(gè)事件到來(lái),每個(gè)異步式 I/O 請(qǐng)求完成后會(huì)被推送到事件隊(duì)列,等待程序進(jìn)程進(jìn)行處理。

Node.js 的異步機(jī)制是基于事件的,所有的磁盤 I/O、網(wǎng)絡(luò)通信、數(shù)據(jù)庫(kù)查詢都以非阻塞的方式請(qǐng)求,返回的結(jié)果由事件循環(huán)來(lái)處理。

Node.js 進(jìn)程在同一時(shí)刻只會(huì)處理一個(gè)事件,完成后立即進(jìn)入事件循環(huán)檢查并處理后面的事件。這樣做的好處是,CPU 和內(nèi)存在同一時(shí)間集中處理一件事,同時(shí)盡可能讓耗時(shí)的 I/O 操作并行執(zhí)行。對(duì)于低速連接攻擊, Node.js 只是在事件隊(duì)列中增加請(qǐng)求,等待操作系統(tǒng)的回應(yīng),因而不會(huì)有任何多線程開(kāi)銷,很大程度上可以提高 Web 應(yīng)用的健壯性,防止惡意攻擊。

四、Node.js性能

Node.js 用異步式 I/O 和事件驅(qū)動(dòng)代替多線程,帶來(lái)了可觀的性能提升。 Node.js 除了使用 V8 作為JavaScript引擎以外,還使用了高效的 libev 和 libeio 庫(kù)支持事件驅(qū)動(dòng)和異步式 I/O。

Node.js 的開(kāi)發(fā)者在 libev 和 libeio 的基礎(chǔ)上還抽象出了層 libuv。對(duì)于 POSIX①操作系統(tǒng),libuv 通過(guò)封裝 libev 和 libeio 來(lái)利用 epoll 或 kqueue。

五、CommonJS規(guī)范

CommonJS 誕生了。 CommonJS 試圖定義一套普通應(yīng)用程序使用的API,從而填補(bǔ) JavaScript 標(biāo)準(zhǔn)庫(kù)過(guò)于簡(jiǎn)單的不足。

CommonJS 規(guī)范包括了模塊(modules)、包(packages)、系統(tǒng)(system)、二進(jìn)制(binary)、控制臺(tái)(console)、編碼(encodings)、文件系統(tǒng)(filesystems)、套接字(sockets)、單元測(cè)試(unit testing)等部分。

轉(zhuǎn)載于:https://www.cnblogs.com/hq82/p/10831569.html

總結(jié)

以上是生活随笔為你收集整理的Node.js—简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。