nvm 的全稱是 Node Version Manager,之所以需要這個工具,是因為 Node.js 的各種特性都沒有穩(wěn)定下來,所以我們經(jīng)常由于老項目或嘗新的原因,需要切換各種版本。
nvm install version // 安裝node
nvm ls // 查看當(dāng)前按照的所有node版本
nvm use version // 切換要使用的node版本
開啟新shell窗口找不到node命令時,可能的原因是:
- shell不知道nvm的存在
- nvm存在,但是沒有default的node.js版本可用
解決方法:
- 檢查 ~/.profile 或者 ~/.bash_profile 中有沒有這樣兩句,這兩句會在 bash 啟動的時候被調(diào)用,然后注冊 nvm 命令。
export NVM_DIR="/Users/YOURUSERNAME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
- 調(diào)用nvm ls,查看是否有default的node.js版本,沒有則執(zhí)行nvm alias default version。
> npm install express --registry=https://registry.npm.taobao.org
> touch app.js
// 引入 `express` 模塊,并將它賦予 `express` 這個變量等待使用。
var express = require('express');
// 調(diào)用 express 實例,它是一個函數(shù),不帶參數(shù)調(diào)用時,會返回一個 express 實例,將這個變量賦予 app 變量。
var app = express();
// app 本身有很多方法,其中包括最常用的 get、post、put/patch、delete,在這里我們調(diào)用其中的 get 方法,為我們的 `/` 路徑指定一個 handler 函數(shù)。
// 這個 handler 函數(shù)會接收 req 和 res 兩個對象,他們分別是請求的 request 和 response。
// request 中包含了瀏覽器傳來的各種信息,比如 query 啊,body 啊,headers 啊之類的,都可以通過 req 對象訪問到。
// res 對象,我們一般不從里面取信息,而是通過它來定制我們向瀏覽器輸出的信息,比如 header 信息,比如想要向瀏覽器輸出的內(nèi)容。這里我們調(diào)用了它的 #send 方法,向瀏覽器輸出一個字符串。
app.get('/', function (req, res) {
res.send('Hello World');
});
// 定義好我們 app 的行為之后,讓它監(jiān)聽本地的 3000 端口。這里的第二個函數(shù)是個回調(diào)函數(shù),會在 listen 動作成功后執(zhí)行,我們這里執(zhí)行了一個命令行輸出操作,告訴我們監(jiān)聽動作已完成。
app.listen(3000, function () {
console.log('app is listening at port 3000');
});
> node app.js
端口號是一個 16位的 uint, 所以其范圍為 1 to 65535 (對TCP來說, port 0 被保留,不能被使用. 對于UDP來說, source端的端口號是可選的, 為0時表示無端口).