(1)npm介紹
在正式介紹Node.js學習之前,我們先認識一下npm。
npm是什么東西?npm其實是Node.js的包管理工具(package manager)。
為啥需要一個包管理工具呢?因為我們在Node.js上開發時,會用到很多別人寫的JavaScript代碼。如果我們要使用別人寫的某個包,每次都根據名稱搜索一下官方網站,下載代碼,解壓,再使用,非常繁瑣。於是一個集中管理的工具應運而生:大家都把自己開發的模塊打包后放到npm官網上,如果要使用,直接通過npm安裝就可以直接用,不用管代碼存在哪,應該從哪下載。舉個例子:如果我們要使用模塊A,而模塊A又依賴於模塊B,模塊B又依賴於模塊X和模塊Y,npm可以根據依賴關系,把所有依賴的包都下載下來並管理起來。否則,靠我們自己手動管理,肯定既麻煩又容易出錯。
比如之前的swiper開發,需要引入jquery類型文件,因為swiper是基於jquery語法開發。普通方案需要挨個引入,有了npm即nodejs的包管理工具后,它會自己根據文件依賴安裝相應文件。
場景:
當一個網站依賴的js代碼越來越多,程序員發現這是一件很麻煩的事情:
去 jQuery 官網下載 jQuery
去 BootStrap 官網下載 BootStrap
去 Underscore 官網下載 Underscore
……
有些程序員就受不了了,於是npm就出來了,全稱是 Node Package Manager 包管理工具。這一點和maven、gradle十分相似,只不過maven、gradle是用來管理java jar包的,而npm是用來管理js的。
NPM 的實現思路和maven、gradle是一樣的:
1、有一個遠程代碼倉庫(registry),在里面存放所有需要被共享的js代碼,每個js文件都有自己唯一標識。
2、用戶想使用某個js的時候,只需引用對應的標識,js文件會自動下載下來。
(2)nodejs
在Windows上安裝時務必選擇全部組件,包括勾選Add to Path
。
安裝完成后,在Windows環境下,請打開命令提示符,然后輸入node -v
,如果安裝正常,你應該看到版本輸出。
Node.js平台是在后端運行JavaScript代碼,可以把它理解成PHP和java同等的后台開發語言。
Node.js是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網絡應用。Node.js 使用事件驅動, 非阻塞I/O模型而得以輕量和高效,
非常適合在分布式設備上運行數據密集型的實時應用。
以上摘自百度百科,簡單來說,Node.js很適合搭建輕量的服務器(應用),所以它又被人稱為服務器語言,前端中的后端語言。node翻譯過來是節點的意思,而node.js后面特地帶了.js,就表示它與JavaScript有莫大的關系。 node.js是javascript的一種運行環境,是服務器端的javascript的解釋器。
(3)npm與node關系
npm則是包含在node.js里面的一個包管理工具,就如同linux中的yum倉庫,rpm包管理;如同python中的pip包管理工具一樣。而這些包管理工具都是予以使用的人們方便,同時解決各種包依賴之間的關系的。 等下面演示后,就會知道有npm去解決項目及包之間的依賴關系是多么的便利,省去了人手上的多少心力。讓開發人員專注於代碼上。
既然npm是包管理工具,那么它自己也和node.js分開自成一個網站,在npm的網站上面,就如同github,其倉庫中保管了N多的開源項目,有世界上眾多開發者提供的項目。我們只需要在npm的網站上搜索相關的就可以找到,然后在線上下載也行,直接在自己的項目中使用命令行安裝也行。
npm 由三個獨立的部分組成:
- npm官方網站(倉庫源)
- 注冊表(registry)(package.json)
- 命令行工具 (CLI)
網站 是開發者查找包(package)、設置參數以及管理 npm 使用體驗的主要途徑。
注冊表 是一個巨大的數據庫,保存了每個包(package)的信息。
CLI 通過命令行或終端運行。開發者通過 CLI 與 npm 打交道。
(4)Node.js是什么
Node.js是一個Javascript運行環境(runtime environment),不是一個js文件,實質是對Chrome V8引擎進行了封裝。Node.js 是一個讓 JavaScript 運行在服務端的開發平台,它讓 JavaScript 成為與PHP、Python 等服務端語言平起平坐的腳本語言。
[1]Node.js提供替代的API,使得V8在非瀏覽器環境下運行得更好。V8引擎執行Javascript的速度非常快,性能非常好。
[2]Node.js是一個基於Chrome JavaScript運行時建立的平台, 用於方便地搭建響應速度快、易於擴展的網絡應用。
chrome瀏覽器和Node.js在解析javascript都使用了v8引擎:
(5)npm與nodejs發展
npm作者已經將npm開發完成,於是發郵件通知 jQuery、Bootstrap、Underscore 作者,希望他們把 jquery、bootstrap 、 underscore 放到npm遠程倉庫,但是沒有收到回應,於是npm的發展遇到了瓶頸。
Node.js作者也將Node.js開發完成,但是 Node.js 缺少一個包管理器,於是他和 npm 的作者一拍即合、抱團取暖,最終 Node.js 內置了 npm。
后來的事情大家都知道,Node.js 火了。隨着 Node.js 的火爆,大家開始用 npm 來共享 JS 代碼了,於是 jQuery 作者也將 jQuery 發布到 npm 了。所以現在,你可以使用 npm install jquery 來下載 jQuery 代碼。現在用 npm 來分享代碼已經成了前端的標配。
(6)node.js和npm的安裝
npm由於內置在node.js中,所以就一並安裝了。有時候我們只想單獨安裝npm,不想安裝node.js,這種目前不支持。
.