一、node是什么
node也指Node.js,是一個基于Chrome V8引擎的JavaScript運行環(huán)境。Node.js使用了一個事件驅(qū)動的、非阻塞式I/O的模型,輕量又高效,它的底層是用C/C++編寫的。Node.js 最初的定位是提升 Ryan 自己的日常工作效率,也就是用來寫服務器代碼的。
先說幾句 Node.js 在服務器端的發(fā)展。Node.js 的誕生帶給人們的是個大大的驚喜,傳統(tǒng)上 Web 開發(fā)者,前端用 JS 寫,但是寫服務器端代碼的時候還必須用另外一種語言,類似 Ruby/Java/PHP 等。但是 Node.js 出現(xiàn)之后,JS 前后通吃了。如果去網(wǎng)上搜 Node.js 的資料,很多都是用 Node.js 去寫服務器代碼的。
但是,Node.js 今天也成為了 Web 前端開發(fā)必不可少的基礎設施。注意,Web 前端的 JS 代碼最終還是運行在瀏覽器中的,所以運行的時候,或者說在產(chǎn)品環(huán)境下,不依賴于 Node.js 。但是,Node.js 誕生以后,前端大爆發(fā),類似 React/Vuejs 這樣的前端框架的開發(fā)環(huán)境變得非常強大和負責,Node.js 是這些開發(fā)環(huán)境運行的基礎。
接下來,演示一下 Nodejs 中如何運行 JS 代碼。
以前 JS 只能運行在瀏覽器中,Node.js 出現(xiàn)之后,不管是服務器上,還是我們自己的的筆記本上,只要安裝了 Node.js 就可以運行 JS 代碼了。假設,咱們已經(jīng)安裝好了 Node.js ,那么進入命令行,
node
執(zhí)行 node 命令,就可以進入 Node.js 的交互環(huán)境。
1 + 1
執(zhí)行加法操作,回車,就可以看到代碼正確執(zhí)行了。Ctrl-D 可以退出這個交互環(huán)境。
但是更為常見的一種執(zhí)行方式,是把把代碼寫入到一個文件中。
app.js
console.log(“hello”);
然后這樣來在命令行中執(zhí)行
node app.js
就可以看到 hello 被打印出來了,而這樣過程跟瀏覽器沒有一毛錢關系。
另外有一點是要特別注意的。Node.js 和瀏覽器是不同的環(huán)境,是有著很多細小的差異的。首先,二者各自包含的全局變量不同。document 對象是用來操作頁面的,所以只有瀏覽器環(huán)境下才可以直接使用。但是如果是要放到 Node.js 環(huán)境下運行代碼,就不要使用 document 。同樣的道理,Node.js 中可以直接拿來使用的 http 對象,在瀏覽器環(huán)境下就沒有。其次,Node.js 和瀏覽器對 ES6 新特性的支持程度也是不同的,這一點也要注意。
延伸閱讀:
二、npm是什么
Node.js 引發(fā)了前后端開發(fā)的爆發(fā),尤其是前端。 JS 開發(fā)者眾多,所以貢獻開源代碼的人就非常多,所有這些凝結(jié)成了npm 這個世界上最大的軟件包倉庫。
npm 是 Node Package Manager 的縮寫,意思是 Node 的包管理系統(tǒng)。Nodejs 現(xiàn)在如日中天,其中 npm這個功不可沒。在這里,我們要實現(xiàn)各種功能幾乎都能找到現(xiàn)成的別人寫好的包,直接拿了用就好了。
很多 npm 包都對應一個 Github 項目,但是如果只有代碼,那么使用起來還不是特別方便。而當系統(tǒng)上安裝好了Node.js之后,就會配套安裝一個命令,叫做 npm 。
npm install moment
執(zhí)行npm install moment就可以把moment這個包從npm的軟件包倉庫中下載這個包,然后安裝到本地了。而 npm 的軟件包倉庫中,有數(shù)以萬計的 moment 這樣的包。