在前面的所有章節中,我們編寫的JavaScript代碼都是在瀏覽器中運行的,因此,我們可以直接在瀏覽器中敲代碼,然后直接運行。
從本章開始,我們編寫的JavaScript代碼將不能在瀏覽器環境中執行了,而是在Node環境中執行,因此,JavaScript代碼將直接在你的計算機上以命令行的方式運行,所以,我們要先選擇一個文本編輯器來編寫JavaScript代碼,并且把它保存到本地硬盤的某個目錄,才能夠執行。
那么問題來了:文本編輯器到底哪家強?
肯定是
VScode
啊
首先,請注意,絕對不能用Word和寫字板。Word和寫字板保存的不是純文本文件。如果我們要用記事本來編寫JavaScript代碼,要務必注意,記事本以UTF-8格式保存文件時,會自作聰明地在文件開始的地方加上幾個特殊字符(UTF-8 BOM),結果經常會導致程序運行出現莫名其妙的錯誤。
所以,用記事本寫代碼時請注意,保存文件時使用ANSI編碼,并且暫時不要輸入中文。
如果你的電腦上已經安裝了Sublime Text,或者Notepad++,也可以用來編寫JavaScript代碼,注意用UTF-8格式保存。
輸入以下代碼:
'use strict';
console.log('Hello, world.');
第一行總是寫上'use strict';
是因為我們總是以嚴格模式運行JavaScript代碼,避免各種潛在陷阱。
然后,選擇一個目錄,例如C:\Workspace
,把文件保存為hello.js
,就可以打開命令行窗口,把當前目錄切換到hello.js所在目錄,然后輸入以下命令運行這個程序了:
C:\Workspace>node hello.js
Hello, world.
也可以保存為別的名字,比如first.js
,但是必須要以.js
結尾。此外,文件名只能是英文字母、數字和下劃線的組合。
如果當前目錄下沒有hello.js
這個文件,運行node hello.js
就會報錯:
C:\Workspace>node hello.js
module.js:338
throw err;
^
Error: Cannot find module 'C:\Workspace\hello.js'
at Function.Module._resolveFilename
at Function.Module._load
at Function.Module.runMain
at startup
at node.js
報錯的意思就是,沒有找到hello.js這個文件,因為文件不存在。這個時候,就要檢查一下當前目錄下是否有這個文件了。
命令行模式和Node交互模式
請注意區分命令行模式和Node交互模式。
看到類似C:\>
是在Windows提供的命令行模式。
在命令行模式下,可以執行node
進入Node交互式環境,也可以執行node hello.js
運行一個.js文件。
看到>
是在Node交互式環境下:
在Node交互式環境下,我們可以輸入JavaScript代碼并立刻執行。
例如,在Node交互式環境下,輸入:
> 100 + 200 + 300;
600
直接可以看到結果600
。
但是,寫一個calc.js
的文件,內容如下:
100 + 200 + 300;
然后在命令行模式下執行:
C:\Workspace>node calc.js
發現什么輸出都沒有。
這是正常的。想要輸出結果,必須自己用console.log()
打印出來
使用嚴格模式
如果在JavaScript文件開頭寫上'use strict';
,那么Node在執行該JavaScript時將使用嚴格模式。但是,在服務器環境下,如果有很多JavaScript文件,每個文件都寫上'use strict';
很麻煩。我們可以給Nodejs傳遞一個參數,讓Node直接為所有js文件開啟嚴格模式:
node --use_strict calc.js
后續代碼,如無特殊說明,我們都會直接給Node傳遞--use_strict參數來開啟嚴格模式。
小結
用文本編輯器寫JavaScript程序,然后保存為后綴為.js的文件,就可以用
node
直接運行這個程序了。node --use_strict calc.js
讓Node直接為所有js文件開啟嚴格模式。-
Node的交互模式和直接運行
.js
文件有何區別?- 直接運行
.js
文件:相當于啟動了Node解釋器,然后一次性把hello.js
文件的源代碼給執行了 - 在交互模式下:每輸入一行就執行一行。
- 直接運行
在編寫JavaScript代碼的時候,完全可以一邊在文本編輯器里寫代碼,一邊開一個Node交互式命令窗口,在寫代碼的過程中,把部分代碼粘到命令行去驗證,事半功倍!前提是得有個27'的超大顯示器!