国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Nodejs】Node.js簡介

這篇具有很好參考價值的文章主要介紹了【Nodejs】Node.js簡介。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

nodejs,# Node.js,node.js

1.前言


Node 的重要性已經(jīng)不言而喻,很多互聯(lián)網(wǎng)公司都已經(jīng)有大量的高性能系統(tǒng)運行在 Node 之上。Node 憑借其單線程、異步等舉措實現(xiàn)了極高的性能基準。此外,目前最為流行的 Web 開發(fā)模式是前后端分離的形式,即前端開發(fā)者與后端開發(fā)者在自己喜歡的 IDE 上獨立進行開發(fā),然后通過 HTTP 或是 RPC 等方式實現(xiàn)數(shù)據(jù)與流程的交互。這種開發(fā)模式在 Node 的強大功能的引領下變得越來越高效,也越來越受到各個互聯(lián)網(wǎng)公司的青睞。

1.1 前端同學為什么要學習后端/后端同學為什么要學習前端

  • 了解前后端交互流程。
  • 前端同學能夠和后臺開發(fā)的程序員更佳緊密地結(jié)合、更順暢地溝通。
  • 當網(wǎng)站的業(yè)務邏輯需要前置時,前端人員需要學習一些后臺開發(fā)的技術,以完成相應的任務;反過來也一樣。
  • 拓寬知識視野和技術棧,能夠站在全局的角度審視整個項目。

1.2 前端同學為什么要學 Node.js

(1)Node.js 使用 JavaScript 語言開發(fā)服務器端應用,便于前端同學上手(一些公司甚至要求前端工程師掌握 Node.js 開發(fā))。

(2)實現(xiàn)了前后端的語法統(tǒng)一,有利于和前端代碼整合,甚至共用部分代碼。

比如說,針對接口返回的各種字段,前后端都必須要做校驗。此時,如果用 Node.js 來做后臺開發(fā)的話,前后端可以共用校驗的代碼。

(3)Node.js 性能高、生態(tài)系統(tǒng)活躍,提供了大量的開源庫。

(4)Jeff Atwood 在 2007 年提出了著名的 Atwood 定律:任何能夠用 JavaScript 實現(xiàn)的應用系統(tǒng),最終都必將用 JavaScript 實現(xiàn)。 Jeff Atwood 是誰不重要(他是 Stack Overflow 網(wǎng)站的聯(lián)合創(chuàng)始人),重要的是這條定律。

2.Node.js是什么?


2.1 官方定義

Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境。Node.js 使用了一個事件驅(qū)動、非阻塞式 I/O的模型,使其輕量又高效。Node.js 的包管理工具 npm 是全球最大的開源庫生態(tài)系統(tǒng)。Node.js 不是一門語言,也不是 JavaScript 的框架,也不是像Nginx一樣的Web服務器 ,Node.js 是 JavaScript 在服務器端的運行環(huán)境(平臺)。

2.2 Node.js 的組成

在 Node.js 里運行 JavaScript,跟在 Chrome 里運行 JavaScript 有什么不同?

二者采用的是同樣的 JS 引擎。在 Node.js 里寫 JS,和在前端寫 JS,幾乎沒有不同。在寫法上的區(qū)別在于:Node.js 沒有瀏覽器、頁面標簽相關的 API,但是新增了一些 Node.js 相關的 API。通俗來說,對于開發(fā)者而言,在前端寫 JS 是用于控制瀏覽器;而 Node.js 環(huán)境寫 JS 可以控制整個計算機。

我們知道,JavaScript 的組成分為三個部分:
ECMAScript

  • DOM:標簽元素相關的API
  • BOM:瀏覽器相關的API
  • ECMAScript 是 JS 的語法;DOM 和 BOM 瀏覽器端為 JS 提供的 API。

而 Node.js 的組成分為:

  • ECMAScript。ECMAScript 的所有語法在 Node 環(huán)境中都可以使用。
  • Node 環(huán)境提供的一些附加 API(包括文件、網(wǎng)絡等相關的 API)。

如下圖所示:
nodejs,# Node.js,node.js

2.3 小總結(jié)

  • Node 是一個服務器端 JavaScript 解釋器
  • Node.js 是一個基于 Chrome V8 引擎的 JavaScript 運行環(huán)境
  • Node.js 使用了一個事件驅(qū)動、非阻塞式 I/O 的模型,使其輕量又高效
  • Node.js 的包管理器 npm,是全球最大的開源庫生態(tài)系統(tǒng)
  • Node.js 是一門動態(tài)語言,運行在服務端的 Javascript

3.Node.js 的應用


Node.js 擁有強大的開發(fā)者社區(qū),現(xiàn)在已經(jīng)發(fā)展出比較成熟的技術體系,以及龐大的生態(tài)。它被廣泛地應用在 Web 服務、開發(fā)工作流、客戶端應用等諸多領域。其中,在 Web 服務領域,業(yè)界對 Node.js 的接受程度最高。

3.1 BFF 中間層

BFF,即 Backend For Frontend(服務于前端的后端)。玉伯在《從前端技術進化到體驗科技》這篇文章中點出了 BFF 層的概念:
BFF 模式下,整體分工很清晰,后端通過 Java/C++ 等語言負責服務實現(xiàn),理想情況下給前端提供的是基于領域模型的 RPC 接口,前端則在 BFF 層直接調(diào)用服務端 RPC 接口拿到數(shù)據(jù),按需加工消費數(shù)據(jù),并實現(xiàn)人機交互?;?BFF 模式的研發(fā),很適合擁有前端技術背景的全棧型工程師。這種模式的好處很明顯,后端可以專注于業(yè)務領域,更多從領域模型的視角去思考問題,頁面視角的數(shù)據(jù)則交給前端型全棧工程師去搞定。領域模型與頁面數(shù)據(jù)是兩種思維模式,通過 BFF 可以很好地解耦開,讓彼此更專業(yè)高效。

在 Web 服務里,搭建一個中間層,前端訪問中間層的接口,中間層再訪問后臺的 Java/C++ 服務。這類服務的特點是不需要太強的服務器運算能力,但對程序的靈活性有較高的要求。這兩個特點,正好和 Node.js 的優(yōu)勢相吻合。Node.js 非常適合用來做 BFF 層,優(yōu)勢如下:

  • 對于前端來說:讓前端有能力自由組裝后臺數(shù)據(jù),這樣可以減少大量的業(yè)務溝通成本,加快業(yè)務的迭代速度;并且,前端同學能夠自主決定與后臺的通訊方式。
  • 對于后臺和運維來說,好處是:安全性(不會把主服務器暴露在外面)、降低主服務器的復雜度等。

3.2 服務端渲染

客戶端渲染(CSR / Client side render):前端通過一大堆接口請求數(shù)據(jù),然后通過 JS 動態(tài)處理和生成頁面結(jié)構(gòu)和展示。優(yōu)點是前后端分離、減小服務器壓力、局部刷新。缺點是不利于 SEO(如果你的頁面然后通過 Ajax 異步獲取內(nèi)容,抓取工具并不會等待異步完成后再行抓取頁面內(nèi)容)、首屏渲染慢。

服務端渲染(SSR / Server Side Render):服務器返回的不是接口數(shù)據(jù),而是一整個頁面(或整個樓層)的 HTML 字符串,瀏覽器直接顯示即可。也就是說,在服務器端直接就渲染好了,然后一次性打包返回給前端。優(yōu)點是有利于 SEO、首屏渲染很快。

總結(jié): 搜索引擎優(yōu)化 + 首屏速度優(yōu)化 = 服務端渲染。

備注:這里的「服務端渲染」只是讓 Node.js 做中間層,不會替代后端的,后臺同學請放心。

參考鏈接:
Vue 服務端渲染的概念
服務器端渲染(SSR)和客戶端渲染(CSR)的區(qū)別,以及優(yōu)化首屏的一些思考
服務端渲染(SSR)
方應杭

歷史回顧:
(1)一開始,頁面很簡單,html 是后端渲染的(比如PHP、ASP、JSP等方式)。后端發(fā)現(xiàn)頁面中的 js 好麻煩(雖然簡單,但是坑多),于是讓公司招聘專門寫 js 的人,簡稱「前端切圖仔」。

(2)隨著 Node.js 和前端 MVC 的興起,以及前端越來越復雜,慢慢演變成了「前后端分離」。

(3)前端的 SPA 應用流行之后,發(fā)現(xiàn) SEO 問題很大,而且首屏渲染速度很慢,但是自己選的路再難走也要走下去,于是用 Node.js 在服務端渲染被看成是一條出路。

(4)以前在一起的時候,是后端做部分前端的工作;現(xiàn)在在一起的時候,是前端做部分后端的工作。

3.3 做小型服務、小型網(wǎng)站的后端(基于 Express、Koa 框架)

現(xiàn)在很多公司的后臺管理系統(tǒng),都是用 Node.js 來開發(fā)接口,畢竟,后臺管理系統(tǒng)對性能和并發(fā)的要求不是太高。有了 Node.js 之后,通過 JS 直接操作 DB,做增刪改查,生成接口,極大降低了前端同學的學習門檻。

當然,有時候做 Node.js 開發(fā),是因為:后臺人力不夠,所以把后臺開發(fā)的一部分工作量,轉(zhuǎn)移給前端同學。

3.4 做項目構(gòu)建工具

前端正在廣泛使用的構(gòu)建工具 gulp、Webpack,就是基于 Node.js 來實現(xiàn)的。

3.5 做 PC 客戶端軟件(基于 Electron 框架)

Electron 框架就是基于 Node.js 的,可以用來開發(fā)客戶端軟件。

Electron 原名為 Atom Shell,是由 GitHub 開發(fā)的一個開源框架。Electron 以 Node.js 作為運行時(runtime),以 chromium 作為渲染引擎,使開發(fā)者可以使用 JS 這種前端技術棧開來發(fā)跨平臺的桌面GUI應用程序。

有一點你可能會感到驚訝:程序員們都在用的代碼編輯器 VS Code 軟件, 就是基于 Electron 框架來開發(fā)的。其他使用 Electron 進行開發(fā)的知名應用還有:Skype、GitHub Desktop、Slack、WhatsApp等。

還有一個例子是:電子游戲直播網(wǎng)站 Twitch,號稱是國外游戲直播的鼻祖,它在 PC 端的客戶端軟件,就是用 Electron 框架的。你會發(fā)現(xiàn),Twitch 的網(wǎng)站視覺,和 PC 端的視覺,幾乎是一樣的。如果兩端都采用 JS 語言,就可以極大的復用現(xiàn)有的工程。

3.6 知名度較高的 Node.js 開源項目

nodejs,# Node.js,node.js

  • express:Node.js 中著名的 web 服務框架。
  • Koa:下一代的 Node.js 的 Web 服務框架。所謂的“下一代”是相對于 Express 而言的。
  • Egg:2016 年,阿里巴巴研發(fā)了知名的 Egg.js 開源項目,號稱企業(yè)級 Web 服務框架。Egg.js 是基于 Koa 開發(fā)的。
  • mocha:是現(xiàn)在最流行的 JavaScript 測試框架,在瀏覽器和 Node 環(huán)境都可以使用。
  • PM2:node 多進程管理。
  • jade:非常優(yōu)秀的模板引擎,不僅限于 js 語言。
  • CoffeeScript:用簡潔的方式展示 JavaScript 優(yōu)秀的部分。
  • Atom:編輯器。
  • VS Code:最酷炫的編輯器。
  • socket.io:實時通信框架。

3.7 總結(jié)

或許,能用 Node.js 做的后臺應用,Java/C++ 也能做;但是 Node.js 可以讓我們多一種選擇。

短期來看,Node.js 很難像 Java/C++ 那樣,成為后臺的主力開發(fā)語言。這并非是因為 Node.js 的性能問題,主要是因為,Node.js 還比較年輕,經(jīng)驗積累太少,框架的支持度不夠。搞企業(yè)級服務,Node.js 敵不過 Java/C++,所以目前只能搞「輕量級」;但未來可期。

限制語言能力的不是語言本身,而是生態(tài)。

4.Node.js 的特點

  • 異步、非阻塞 IO 模型
  • 事件循環(huán)
  • 單線程
  • 總結(jié):輕量和高效

Node.js 的性能和效率非常高。

傳統(tǒng)的 Java 語言是一個請求開啟一個線程,當請求處理完畢后就關閉這個線程。而 Node.js 則完全沒有采用這種模型,它本質(zhì)上就是一個單線程。

你可能會疑問:一個線程如何服務于大量的請求、如何處理高并發(fā)的呢?這是因為,Node.js 采用的是異步的、非阻塞的模型。

這里所謂的“單線程”,指的是 Node 的主線程只有一個。為了確保主線程不被阻塞,主線程是用于接收客戶端請求。但不會處理具體的任務。而 Node 的背后還有一個線程池,線程池會處理長時間運行的任務(比如 IO 操作、網(wǎng)絡操作)。線程池里的任務是通過隊列和事件循環(huán)的機制來執(zhí)行。文章來源地址http://www.zghlxwxcb.cn/news/detail-657053.html

5.使用 Node.js 時的劣勢


  • 程序運行不穩(wěn)定,可能會出現(xiàn)服務不可用的情況
  • 程序運行效率較低,每秒的請求數(shù)維持在一個較低的水平
  • 前端同學對服務器端的技術不太熟悉。

到了這里,關于【Nodejs】Node.js簡介的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【Node.js從基礎到高級運用】十三、NodeJS中間件高級應用

    【Node.js從基礎到高級運用】十三、NodeJS中間件高級應用

    在現(xiàn)代web開發(fā)中,Node.js因其高效和靈活性而備受青睞。其中,中間件的概念是構(gòu)建高效Node.js應用的關鍵。在這篇博客文章中,我們將深入探討Node.js中間件的高級應用,包括創(chuàng)建自定義中間件、使用第三方中間件等。我們將從基礎講起,逐步深入,旨在為讀者提供全面而深入

    2024年03月22日
    瀏覽(26)
  • Nodejs 入門8 NeDB 輕量級的Node.js 數(shù)據(jù)庫

    Nodejs 入門8 NeDB 輕量級的Node.js 數(shù)據(jù)庫

    常用的sqlite輕量級數(shù)據(jù)庫,nodejs在windows環(huán)境下安裝配置有時候會比較麻煩,很難順利安裝。 Nedb(Node Embedded Database)在一些情況下可以替代sqlite,特別適用于小型項目和快速原型開發(fā)。本文將介紹Nedb的基本概念、特性和使用方法,以幫助大家更好地了解和利用這個便捷的工

    2024年01月22日
    瀏覽(30)
  • 記錄一下,C#運行nodejs調(diào)用js文件提示報錯:Error: node:internal/modules/cjs/loader:1080

    個人記錄一下,C#運行nodejs調(diào)用js文件提示報錯: 報錯提示信息: Error: node:internal/modules/cjs/loader:1080 throw err; ? ^ ?Error: Cannot find module \\\'F:鎴戠殑....................” .....................下面還有很多報錯內(nèi)容 還有英文提示模塊未找到的提示。 我另一個文件運行沒報錯,運行正常有

    2024年02月11日
    瀏覽(30)
  • 最新版 nodejs和npm版本不匹配問題解決:ERROR: npm v9.5.1 is known not to run on Node.js

    最新版 nodejs和npm版本不匹配問題解決:ERROR: npm v9.5.1 is known not to run on Node.js

    最近項目用到了node和npm ,查看一下當前版本,發(fā)現(xiàn)有報錯 ? ERROR: npm v9.6.2 is known not to run on Node.js v12.13.1. You\\\'ll need to upgrade to a newer Node.js version in order to use this version of npm. This version of npm supports the following node versions: `^14.17.0 || ^16.13.0 || =18.0.0`. You can find the latest version at https

    2023年04月16日
    瀏覽(37)
  • nvm安裝node后,報錯Cannot find module ‘C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js‘

    問題描述 nvm安裝node后,也會自動安裝npm工具,但是在提示安裝完成之后,使用npm相關命令時,會報如下錯誤 Error: Cannot find module \\\'C:Program Filesnodejsnode_modulesnpmbinnpm-cli.js\\\' 原因: 可以查看當前node版本? node -v,如v14.18.1,然后去nvm安裝地址中找C:Users10153615AppDataRoamingnvm,

    2024年04月13日
    瀏覽(102)
  • Error: Cannot find module E:\nodejs\node_modules\npm\bin\npm-cli.js

    Error: Cannot find module E:\nodejs\node_modules\npm\bin\npm-cli.js

    在用node開發(fā)服務器端的時候,發(fā)現(xiàn)用npm下載一個插件,成功之后,再用npm命令進行相關操作,報錯了Error: Cannot find module E:nodejsnode_modulesnpmbinnpm-cli.js。 這個錯誤翻譯過來就是說:找不到nodejsnode_modulesnpmbinnpm-cli.js這個路徑對應的文件了,跑我的E盤看的時候,確實npm文件

    2024年02月08日
    瀏覽(101)
  • 在nodejs應用中集成node-red

    隨著物聯(lián)網(wǎng)(IoT)和邊緣計算的快速發(fā)展,實時數(shù)據(jù)處理和可視化變得越來越重要。Node-RED是一個基于JavaScript的開源平臺,用于創(chuàng)建實時數(shù)據(jù)流應用程序。它提供了一個可視化的開發(fā)環(huán)境,使用戶可以輕松地構(gòu)建、部署和管理數(shù)據(jù)流。本文將介紹如何在Node.js應用中集成Node-RED,以

    2024年02月14日
    瀏覽(21)
  • nodejs:非docker下設置NODE_ENV

    參考: ????????使用process.env.NODE_ENV的正確姿勢 - 掘金

    2024年02月13日
    瀏覽(18)
  • 通過nodejs修改node_modules中的源碼

    通過nodejs修改node_modules中的源碼

    在開發(fā)項目時,當node_modules中的默認配置不滿足當前項目需求時,就需要對node_modules中相應的源碼進行修改。但如果直接操作源碼進行手動修改,代碼不會同步到倉庫中,當其他人拉取代碼進行開發(fā)時,或者執(zhí)行了npm install后源碼依舊是默認配置。而此時則可以通過nodejs對源

    2024年02月05日
    瀏覽(22)
  • nodejs-websocket之簡單利用node搭建服務器

    一、 需要安裝 node.js 通過npm 安裝 webSocket包 npm install websocket 二、編寫服務端 這段代碼是一個使用Node.js的websocket庫(nodejs-websocket)創(chuàng)建的服務器,監(jiān)聽端口3000。以下是對代碼的簡要解釋: 引入所需的websocket模塊: const ws = require(\\\'nodejs-websocket\\\') 設置服務器端口號: const PORT =

    2024年02月07日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包