天天看點

一文入門NodeJS ¶

之前講ES6的時候有提過一部分Node的知識,簡單回顧下:一文讀懂ES6

npm國内鏡像:<code>https://npm.taobao.org</code>

配置國内源:<code>npm install -g cnpm --registry=https://registry.npm.taobao.org</code>

然後就可以把<code>cnpm</code>當作<code>npm</code>來用了,比如之前的<code>React</code>元件案例:

<code>cnpm install react</code>

<code>cnpm install react-dom</code>

<code>cnpm i babel-core@old</code>

解除安裝安裝的包:<code>npm uninstall -g uuid</code>用<code>npm</code>而不是<code>cnpm</code>

常用參數說明:

<code>i</code>是<code>install</code>的簡寫

<code>-g</code>是安裝到全局環境中(預設是目前目錄)

<code>-D</code>添加為開發依賴(<code>-D ==&gt; --save-dev</code> 開發環境)

<code>-S</code>添加為生産依賴(<code>-S ==&gt; --save</code> 生産環境)

eg:<code>cnpm i express -S</code>

eg:<code>cnpm init</code>之後:

一文入門NodeJS ¶
一文入門NodeJS ¶

PS:你把依賴包删了也沒事,執行<code>cnpm i</code>就會會根據<code>package.json</code>自動安裝依賴包

課外閱讀:

這個之前也說過,可以看看:VSCode and NoteBook for JavaScript | NodeJS,簡單說下:

每次F5運作的時候選一下<code>NodeJS</code>,或者添加一下調試的配置檔案

<code>nodejs</code>用法和<code>js</code>基本一樣,隻是多了些伺服器的子產品,eg:

一文入門NodeJS ¶

如果想同時運作<code>nodejs</code>和<code>html</code>再添加下配置就行了,比如:

配置完成後:想運作HTML就選擇谷歌浏覽器

一文入門NodeJS ¶

想運作<code>nodejs</code>的<code>js</code>檔案就選擇啟動程式(現在運作JS檔案的時候,F5即可自動切換成node)

一文入門NodeJS ¶

<code>${workspaceRoot}</code> VS Code目前打開的檔案夾

<code>${file}</code> 目前打開的檔案

<code>${relativeFile}</code> 相對于<code>workspaceRoot</code>的相對路徑

<code>${fileBasename}</code> 目前打開檔案的檔案名

<code>${fileDirname}</code> 所在的檔案夾,是絕對路徑

<code>${fileExtname}</code> 目前打開檔案的擴充名

<code>ijavascript</code>依賴于<code>Python2.7</code>,詳細過程:Jupyter NoteBook IJavaScript 配置

然後就和Python一樣用了:

一文入門NodeJS ¶

這塊官方文檔寫的很詳細,我就簡單說說,後面用到再詳細說

中文文檔:http://nodejs.cn/api

官方文檔:https://nodejs.org/api

文檔:<code>http://nodejs.cn/api/http.html</code> or <code>https://nodejs.org/api/http.html</code>

NodeJS既然作為伺服器,那得先有個伺服器的樣子,我們來個簡單的案例:

效果:

一文入門NodeJS ¶

其他内容需要結合其他子產品一起講解

文檔:<code>http://nodejs.cn/api/fs.html</code> or <code>https://nodejs.org/api/fs.html</code>

這個是IO對應的子產品,推薦使用異步方法,簡單看看:(<code>xxxFileSync</code>是同步方式,不建議使用)

In [1]:

In [2]:

In [3]:

In [4]:

In [5]:

PS:如果檔案不是文本檔案,就不能<code>toString</code>了(<code>data</code>預設是<code>buffer</code>類型)

圖檔照常打開:

一文入門NodeJS ¶

簡單小結一下:

讀取檔案:<code>fs.readFile("xxx", (ex, data) =&gt; { });</code>

建立檔案:<code>fs.writeFile("xxx", data, ex =&gt; {});</code>

追加檔案:<code>fs.appendFile("xxx", data, ex =&gt; {});</code>

<code>data</code>是<code>buffer</code>類型,内置了:

<code>toString()</code>:buffer轉換成字元串

<code>toJSON()</code>:buffer轉化成Json

In [6]:

上面幾個方法(eg:<code>readFile</code>)都是先把資料都緩存到記憶體中,然後才回調,這樣比較浪費記憶體,對于大檔案不友好,so ==&gt; 流走起

用法比較簡單,看個案例:

還有一些類似于監聽的事件:

文檔:<code>http://nodejs.cn/api/url.html</code> or <code>https://nodejs.org/api/url.html</code>

說<code>url</code>子產品之前得先說下<code>querystring</code>子產品

文檔:<code>http://nodejs.cn/api/querystring.html</code> or <code>https://nodejs.org/api/querystring.html</code>

這個是專門針對參數進行解析的,來個案例:

注意:querystring.parse 隻是對?後面(不包括<code>?</code>)的參數進行解析(以<code>=</code>和<code>&amp;</code>分隔)

上面說下<code>querystring</code>隻是一個鋪墊,基本上不太用,<code>url</code>子產品已經包含這個了:

PS:一般都是這麼用的:

結合上面的<code>HTTP子產品</code>,來個簡單的<code>web伺服器</code>:

輸出:(<code>www</code>目錄就兩個檔案,一個<code>test.html</code>,一個<code>test.png</code>)

一文入門NodeJS ¶

推薦寫法:

PS:<code>request</code>和<code>response</code>就是一個典型的讀寫流(<code>ReadStream</code>、<code>WriteStream</code>)

文檔:<code>http://nodejs.cn/api/zlib.html</code> or <code>https://nodejs.org/api/zlib.html</code>

先看個案例:(<code>zlib</code>是讀寫流)

一文入門NodeJS ¶

結合上面再來個加強版:

輸出對比:

一文入門NodeJS ¶

文檔:<code>http://nodejs.cn/api/path.html</code> or <code>https://nodejs.org/api/path.html</code>

這個主要是針對路徑的子產品,看個案例:<code>path.parse()</code>

文檔:<code>http://nodejs.cn/api/crypto.html</code> or <code>https://nodejs.org/api/crypto.html</code>

這塊主要就是用來加密(簽名)的,很簡單:

In [7]:

In [8]:

In [9]:

In [10]:

文檔:<code>http://nodejs.cn/api/os.html</code> or <code>https://nodejs.org/api/os.html</code>

這塊是系統相關的子產品,看個常用的案例:

In [11]:

In [ ]:

可以參考我之前講的Python多程序進行對比學習:https://www.cnblogs.com/dotnetcrazy/p/9363810.html

輸出:

一文入門NodeJS ¶

PS:NodeJS注意下面幾地方:

子程序可以共用一個端口

并發的時候,如果不等到某個核的CPU100%,其他核的CPU就看戲(不工作)

這個是第三方子產品,如果沒安裝:

<code>cnpm init</code>

<code>cnpm i uuid -D</code>(開發環境) or <code>cnpm i uuid -S</code>(生産環境)

一文入門NodeJS ¶
一文入門NodeJS ¶

使用案例:

作者:毒逆天

出處:https://www.cnblogs.com/dotnetcrazy

打賞:<b>18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z</b>

本文版權歸作者和部落格園共有。歡迎轉載,但必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接!

繼續閱讀