NodeJS基礎學習總結

2022-01-20 07:49:24 字數 2794 閱讀 2157

一、nodejs解釋

js是指令碼語言,指令碼語言都需要乙個解析器才能執行。對於寫在html頁面裡的js,瀏覽器充當了解析器的角色。而對於需要獨立執行的js,nodejs就是乙個解析器。

每一種解析器都是乙個執行環境,不但允許js定義各種資料結構,進行各種計算,還允許js使用執行環境提供的內建物件和方法做一些事情。例如執行在瀏覽器中的js的用途是操作dom,瀏覽器就提供了document之類的內建物件。而執行在nodejs中的js的用途是操作磁碟檔案或搭建http伺服器,nodejs就相應提供了fshttp等內建物件

儘管存在一聽說可以直接執行js檔案就覺得很酷的同學,但大多數同學在接觸新東西時首先關心的是有啥用處,以及能帶來啥價值。

nodejs的作者說,他創造nodejs的目的是為了實現高效能web伺服器,他首先看重的是事件機制和非同步io模型的優越性,而不是js。但是他需要選擇一種程式語言實現他的想法,這種程式語言不能自帶io功能,並且需要能良好支援事件機制。js沒有自帶io功能,天生就用於處理瀏覽器中的dom事件,並且擁有一大群程式設計師,因此就成為了天然的選擇。

如他所願,nodejs在服務端活躍起來,出現了大批基於nodejs的web服務。而另一方面,nodejs讓前端眾如獲神器,終於可以讓自己的能力覆蓋範圍跳出瀏覽器視窗,更大批的前端工具如雨後春筍。

因此,對於前端而言,雖然不是人人都要拿nodejs寫乙個伺服器程式,但簡單可至使用命令互動模式除錯js**片段,複雜可至編寫工具提公升工作效率。nodejs生態圈正欣欣向榮。

二、模組

編寫稍大一點的程式時一般都會將**模組化。在nodejs中,一般將**合理拆分到不同的js檔案中,每乙個檔案就是乙個模組,而檔案路徑就是模組名

在編寫每個模組時,都有requireexportsmodule三個預先定義好的變數可供使用。

1、require

require函式用於在當前模組中載入和使用別的模組,傳入乙個模組名,返回乙個模組匯出物件。模組名可使用相對路徑(以./開頭),或者是絕對路徑(以/c:之類的碟符開頭)。另外,模組名中的.js副檔名可以省略。以下是乙個例子。

var foo1 = require('

./foo');

var foo3 = require('

/home/user/foo');

//foo1至foo3中儲存的是同乙個模組的匯出物件。

可以使用以下方式載入和使用乙個json檔案。

var data = require('

./data.json

');

2、exports

exports物件是當前模組的匯出物件,用於匯出模組公有方法和屬性。別的模組通過require函式使用當前模組時得到的就是當前模組的exports物件。以下例子中匯出了乙個公有方法。

exports.hello =function () ;

3、module

通過module物件可以訪問到當前模組的一些相關資訊,但最多的用途是替換當前模組的匯出物件。例如模組匯出物件預設是乙個普通物件,如果想改成乙個函式的話,可以使用以下方式。

module.exports =function () ;

以上**中,模組預設匯出物件被替換為乙個函式。

4、模組初始化

乙個模組中的js**僅在模組第一次被使用時執行一次,並在執行過程中初始化模組的匯出物件。之後,快取起來的匯出物件被重複利用。

5、主模組

通過命令列引數傳遞給nodejs以啟動程式的模組被稱為主模組。主模組負責排程組成整個程式的其它模組完成工作。例如通過以下命令啟動程式時,main.js就是主模組。

$ node main.js

6、例項

//

例如有以下目錄。

- /home/user/hello/

- util/counter.js

main.js

//其中counter.js內容如下:

//該模組內部定義了乙個私有變數i,並在exports物件匯出了乙個公有方法count。

var i = 0

;function count()

exports.count =count;

//主模組main.js內容如下:

var counter1 = require('

./util/counter');

var counter2 = require('

./util/counter');

console.log(counter1.count());

console.log(counter2.count());

console.log(counter2.count());

//執行結果

$ node main.js12

3

可以看到,counter.js並沒有因為被require了兩次而初始化兩次。

小結:

nodejs學習總結

1.yarn全域性安裝依賴 可以直接在命令列使用 yarn global add 依賴名 將會安裝到全域性路徑2.yarn本地安裝依賴 yarn add 依賴名 會在node modules資料夾下加入依賴3.yarn初始化乙個專案,生成package.json yarn init4.yarn安裝專...

nodejs 學習筆記 基礎

本來就沒有寫部落格的習慣,這幾天在學習nodejs,對於一些基本的東西記錄了下來,以備忘記是查閱。1.不要使用 settimeout fn,0 代替 process.nexttick callback 前者比後者效率要低得多 2.util.inherits 實現繼承 var util require...

nodejs基礎學習 模組安裝

第三章 nodejs modular安裝 挺頭疼的。好像是我搞錯了,只是後端的nodejs,沒有angularjs。modular安裝命令 npm install g g 全域性安裝,可使modular在命令視窗中執行。存放位置為 usr local 全域性安裝原理,通過在 usr local bi...