前端頁面開發之Node JS初學者指南

2020-12-14 IT168

  【IT168技術】目前,Node.js是在前端頁面開發中十分受歡迎的,它是一套用來編寫高性能網絡伺服器的JavaScript工具包,在本文中,將帶領各位初學者介紹Node JS的基本知識,要求本文的閱讀對象為有一定Javascript和其他開發語言基礎的讀者。

  什麼是Node.js

  Node是一個Javascript運行環境(runtime)。實際上它是對GoogleV8引擎(應用於Google Chrome瀏覽器)進行了封裝。V8引 擎執行Javascript的速度非常快,性能非常好。Node對一些特殊用例進行了優化,提供了替代的API,使得V8在非瀏覽器環境下運行得更好。例 如,在伺服器環境中,處理二進位數據通常是必不可少的,但Javascript對此支持不足,因此,V8.Node增加了Buffer類,方便並且高效地 處理二進位數據。因此,Node不僅僅簡單的使用了V8,還對其進行了優化,使其在各環境下更加給力。

  發展歷史

  2009年2月,Ryan Dahl在博客上宣布準備基於V8創建一個輕量級的Web伺服器並提供一套庫。

  2009年5月,Ryan Dahl在GitHub上發布了最初版本的部分Node.js包,隨後幾個月裡,有人開始使用Node.js開發應用。

  2009年11月和2010年4月,兩屆JSConf大會都安排了Node.js的講座。

  2010年年底,Node.js獲得雲計算服務商Joyent資助,創始人Ryan Dahl加入Joyent全職負責Node.js的發展。

  2011年7月,Node.js在微軟的支持下發布Windows版本。

  初識Node.js

  要開始使用Node.js的,必須先了解Node.js和傳統的伺服器端腳本環境(如:PHP,Python和Ruby的,等等)之間的差異。

  相信大部分讀者都已經對ajax編程十分熟悉了,其中ajax中的a(asynchronous)指的是異步編成,所以在node.js世界中,一切的方法都是異步執行的,因此比如你需要程序中閱讀一個作業系統中的文件,則必須指定一個回調方法,則在讀取完這個文件後,則會執行這個回調方法的內容。

  下面,就Node.js跟其他語言來做個小的對比,讀者可以可以看出其中的端倪。因為Node.js不是伺服器運行環境,它實際上是在服務端運行的javascript,因此在性能上是十分高效的。下面是Node.js編寫的一個小程序代碼:

var i, a, b, c, max;
max
= 1000000000;
var d
= Date.now();
for (i = 0; i < max; i++) {
    a
= 1234 + 5678 + i;
    b
= 1234 * 5678 + i;
    c
= 1234 / 2 + i;
}
 而相同的PHP代碼如下:
$a
= null;
$b
= null;
$c
= null;
$i
= null;
$max
= 1000000000;
$start
= microtime(true);
for ($i = 0; $i < $max; $i++) {
$a
= 1234 + 5678 + $i;
$b
= 1234 * 5678 + $i;
$c
= 1234 / 2 + $i;
}
var_dump(microtime(
true) - $start);

  下面的表是兩者對比的性能列表,以微秒為單位,如下:

  在命令行執行這兩個應用程式,所以沒有伺服器端的延遲執行。對每個應用分別測試10次,取平均值,結果。如果循環的次數比較少,則php的速度快點,但這種優勢,隨著迭代次數的增加而減少,會發現都比nodejs慢了!

  可以看到Node.js速度是很快,但必須正確地使用它。下面介紹Node.js中幾個重要的概念:

  Modules模塊

  Node.js使用Module模塊去劃分不同的功能,以簡化應用的開發。Modules模塊有點象C語言中的類庫。每一個Node.js的類庫都包含了十分豐富的各類函數,比如http模塊就包含了和http功能相關的很多函數,可以幫助開發者很容易地對比如http,tcp/udp等進行操作,還可以很容易的創建http和tcp/udp的伺服器。

  要在程序中使用模塊是十分方便的,只需要如下:

  在這裡,引入了http類庫,並且對http類庫的引用存放在http變量中了。這個時候,node.js會在我們應用中搜索是否存在node_modules的目錄,並且搜索這個目錄中是否存在http的模塊。如果node.js找不到這個目錄,則會到全局模塊緩存中去尋找,用戶可以通過相對或者絕對路徑,制定模塊的位置,比如:

  var myModule = require('./myModule.js');

  模塊中包含了很多功能代碼片斷,在模塊中的代碼大部分都是私有的,意思是在模塊中定義的函數方法和變量,都只能在同一個模塊中被調用。當然,可以將某些方法和變量暴露到模塊外,這個時候可以使用export是對象去實現,比如如下代碼:

var PI = Math.PI;
exports.area
= function (r) {
return PI
* r * r;
};
exports.circumference
= function (r) {
return
2 * PI * r;
};

  上面的代碼中,創建了PI這個變量,這個變量只能在同一個模塊中被訪問,並且用exports分別將兩個方法area和circumference對外暴露出去了,因此在其他模塊中可以訪問。

  儘量避免使用全局變量

  Node.js是使用Google的V8 JavaScript引擎。因此,我們應該遵循的最佳實踐去進行客戶端的開發。比如,我們應該儘量避免將所有東西都放在全局變量中。然而,這並不總是可能的。在node.js中,要聲明全局變量的話,甚至可以省略var關鍵字,這樣你可以很容易地創建一個全局變量的函數,比如:

  globalVariable = 1;

  globalFunction = function () { ... };

  但是儘可能的話,還是應該少在Node.js中到處使用全局變量。

  Node.js的安裝

  下面介紹下Node.js的安裝,首先在nodejs.org的網站上根據作業系統下載相關的安裝包,對於linux下的安裝,可以如下進行:

  sudo apt-get update

  sudo apt-get install node

  或者:

  sudo aptitude update

  sudo aptitude install node

  Node.js就會在sid庫,現在可以將它們增加到sources來源列表中

  sudo echo deb http://ftp.us.debian.org/debian/ sid main > /etc/apt/sources.list.d/sid.list

  但要注意的是,在完成安裝後,需要移走/etc/apt/sources.list.d/sid.list。

相關焦點

  • 10+ 最佳的 Node.js 教程結合實例
    Node.js的強大之處在於其能力支持數據密級性的交互應用,因為這類應用的函數圍繞著用戶事件,數據I/O和數據流的處理。對於JSON的API,Node.js同樣顯得很神奇,它是單頁WEB應用的心臟和靈魂。
  • 全程指導:Node JS實戰之製作塗鴉遊戲
    【IT168技術】Node.js目前無論是在前端還是後端開發中,已經越來越受到廣大開發者的關注,相關使用Node.js進行開發的案例也越來越多。  Node是一個Javascript運行環境(runtime)。實際上它是對GoogleV8引擎(應用於Google Chrome瀏覽器)進行了封裝。
  • Node.js為何在後端開發中不受重視?
    語言只是一個工具,對高手來講Java、golang、python、Javascript都可以完成複雜的後端開發工作,這些語言最大的區別是生態。Java無疑是所有後端開發語言中的佼佼者,它的生態完善度超乎你的想像,這也是Java在後端開發領域無法撼動的根本。其他幾種語言我覺得沒有根本性的區別,論生態完善度,都是半斤八兩,論高並發,golang當之無愧,論語言友好度,Node.js可以排到首位。
  • 基於Node.js 的爬蟲丨前端開發者
    前端開發者丨Node.js基於nodejs 的爬蟲 API接口項目,包括前端開發日報、知乎日報、前端top框架排行、妹紙福利、搞笑視頻、各類視頻新聞資訊 熱點詳情接口數據 https://ecitlm.github.io/Node-SpliderApi/#/原文地址:https://gitee.com/ecitlm/splider
  • 10 個最適合 Web 和 APP 開發的 NodeJS 框架
    Node.js Express 對於一個已經在使用 node.js 的開發人員來說,Express 或者」node.js express」並不是一個新鮮事。Express 框架提供了對 node.js 原生 API 的比較好的封裝,從而使開發者更加容易地使用node.js。 Express 框架提供了用來開發強壯的 web/移動應用,以及 API 的所有功能。
  • 前端開發為什麼要學Node.js?小白如何深入理解Node.js?
    隨著網際網路的高速發展以及市場需求推動,Node已經成為前端知識棧必備技能之一,千鋒廣州Web大前端老師也發現很多企業在招聘中也會著重考察求職者對Node的掌握程度。有人好奇從事Web前端為什麼要學習Node.js?今天千鋒廣州Web前端培訓老師就給大家詳細的分析一下。
  • 前端高效開發必備的 js 庫梳理
    作者: 徐小夕 來源:趣談前端之前有很多人問學好前端需要學習哪些 js 庫, 主流框架應該學 vue 還是 react ? 針對這些問題, 筆者來說說自己的看法和學習總結。前端由於入行門檻低, 更新換代很快, 每年都會有大量新的框架和庫出現, 也有大量庫被淘汰(比如 JQuery, 但是學習它的設計思想很有必要). 所以我們大可不必擔心, 保持自己的學習步伐, 按需學習即可.
  • Ember.js和Vue.js,哪種框架更適合前端開發?
    隨著前端技術的發展,比起純JavaScript腳本,大多數開發人員更喜歡使用基於JavaScript的框架來開發Web應用,如Vue、React等。這些框架大大簡化了你的代碼,也使你能夠完
  • 009 | 快速入門Web前端開發的正確姿勢
    入門標準很簡單,就一條:達到能參與 Web 前端實際項目的開發水平。請注意,是實際項目,這就需要了解如今的實際項目開發都用了哪些技術棧。HTML/CSS/JavaScript 這三大基礎技術棧肯定是需要掌握的,但要能參與實際項目開發,肯定還要掌握其他一些主流的框架體系。
  • 學習筆記:node後臺開發總結
    這是我來到北昌教育學習軟體開發的第五個月,我學的是全棧開發專業,全棧開發要求前端+後端都要掌握,在這個月裡黃賢存老師帶我們深入學習了mysql資料庫的操作以及node,最後我們用所學的知識開發出一個完整的管理後臺,我把本月的知識用簡短的文章進行總結。
  • 我開始討厭node.js了
    擁抱JavaScript2014年,我從一個半吊子c#程式設計師轉速前端,突然就愛上了JavaScript,感覺好像一顆被c#束縛已久的心終於解放了,js那种放蕩不羈愛自由的操作領悟神魂顛倒,我感覺自己擺脫了那些過度封裝的程序,所有的代碼都盡在掌握之中,那種感覺說不出的爽。
  • 前端技術及開發模式的演進
    這裡補充多說一點內容,就是jsp這個東西,雖然現在用的不多,但還是說一下,之前南風哥面試問過很多面試者,前端都會什麼技術,面試者張口就來,jsp .... 什麼什麼,這裡南風哥想說,jsp不屬於前端技術,為什麼 ?
  • Node.js 是什麼?我為什麼選擇它?
    時間回歸到 2009 年,在當時 JavaScript 還是一個跑在瀏覽器環境裡的一門腳本語言,當時的筆者還是一名高中生,接觸的程式語言是 VB 並不知 JavaScript 為何物,但隨後接觸 JavaScript 之後了解到這之前用它可以寫一些瀏覽器腳本,做一些動態特效,主要用於前端頁面交互。
  • Node.js 入門到幹活,10 個項目就夠了
    Node.js 入門到幹活,10 個項目就夠了 Node.js 在很多大公司都有不錯的實踐,比如:淘寶、天貓 Web 版,很多頁面都是在 Node 伺服器上渲染的。還有各種腳手架、前端打包發布工具、構建生態的小工具,也基本都是 Node.js 編寫的。
  • Node.js與Ruby on Rails:二者哪個最適合Web開發?
    讓我們先來看看兩種技術之間的一些相似之處。受歡迎的伺服器端技術。相當容易學習。高性能。為頂級網站/應用程式使用。強大的社區。基於類似MVC的結構。快速開發。這兩個節點。js和Rails是受人尊敬和流行的伺服器端技術,可以做很多不同的事情。
  • 初學編程,前端、後端開發哪個更有優勢?
    初學編程,除了要去對這個行業進行調查了解以外,最重要的是要做選擇。編程不僅僅就是寫代碼做程序就完了,要去看今年最好的軟體開發技術是哪個,最優秀的程式語言是哪一種,它們又是被應用在哪些領域裡?當你有這些疑問的時候,可以來看這篇文章,這篇文章詳細介紹了前端和後端開發技術的對比,從使用程式語言的不同,到對開發技能的要求,甚至未來的發展規劃都有詳細的介紹。什麼是前端開發?前端開發主要涉及到網站和APP,用戶能夠從App、瀏覽器上看到的東西都屬於前端。
  • nodejs windows環境下搭建
    目前,Node.js是在前端開發中十分受歡迎,它是一套用來編寫高性能網絡伺服器的JavaScript工具包,官網中介紹:Node.js 是一個基於Chrome JavaScript 運行時建立的一個平臺, 用來方便地搭建快速的 易於擴展的網絡應用; Node.js 藉助事件驅動, 非阻塞I
  • 【分享】Vue.js新手入門指南
    7.組件化開發還記得在傳統前端開發的時候,我們都是每個人做一個頁面,然後最後套入各種後端模版引擎,比如說PHP的Smarty或者Java的JSP等等。但也有人認為基本上會用Vue.js開發的都是頁面中內容很多的元素,肯定操作的DOM量級普遍較大,平均一下還是比較划算的。9.我到底該怎麼用Vue.js做單頁應用開發?說了這麼多,我還是不知道怎麼用它做出一個像知乎那樣的頁面啊,到底怎麼學它呢?
  • Node.js一年開發經驗總結分享
    為何用Node對於我來說,對於團隊來說,使用Node的原因其實很簡單:開發起來快。熟悉JS的前端同學可以很快上手,節省成本。同樣是寫JS,Node.js開發和頁面開發有什麼區別>在瀏覽器端開發頁面,是和用戶打交道、重交互,瀏覽器還提供了各種Web Api供我們使用。
  • Node.js全棧前端衝刺課,為你的學習全程買單!
    以軟體開發為例,我國軟體人才需求以每年遞增20%的速度增長,每年新增需求近百萬。俗話說「磨刀不誤砍柴工」,了解了網際網路的工種定義、職能及技能需求,才能使你能更高效,更有計劃的學習,從而邁向網際網路經營的目標。前端開發前端開發是什麼?