1、Node.js 是一個基於 Chrome V8 引擎的 JavaScript 運行環境。
2、Node.js 使用了一個事件驅動、非阻塞式 I/O 的模型,使其輕量又高效。
3、Node.js 的包管理器 npm,成為世界上最大的開放原始碼的生態系統。
簡單的說 Node.js 就是運行在服務端的 JavaScript。
擴展;
I : input即輸入埠
o : output即輸出埠
CPU與外部設備、存儲器的連接和數據交換都需要通過接口設備來實現,前者稱為I/O接口,後者被稱為存儲器接口
每一個瀏覽器都有一個內核,內核中有引擎。引擎分為:渲染引擎(渲染DOM) 和 腳本引擎(運行腳本語言)
腳本引擎中最流行的就是chrome中的V8引擎
1、node可以解析js代碼(因為沒有瀏覽器安全級別的限制)因此提供了許多系統級別的API
2、node可以編寫獨立的服務端應用,無需藉助任何web伺服器,可以連接文件系統,以及操作資料庫
3、node一般在實際應用中用來做中間層伺服器使用
注意:
在node中無法使用window對象下面的一些方法,因為node中沒有DOM 和 BOM的概念,同時node中也有一些屬性瀏覽器無法使用 例如:process global等對象
優點:
高性能、速度快、效率高 適合做高並發的項目(I/O密集型的應用)
缺點:
不適合做大量的運算應用(CPU密集的應用)
6.11.4
第一個是大版本號
第二個是小版本號
第三個是補丁版本號
版本問題:LTS長期穩定版本 Current最新版本 偶數為穩定版本 基礎為非穩定版本
以前我們運行js必須基於瀏覽器這個環境,那麼現在我們還可以在終端運行node的文件
1、建立一個hellow.js文件
2、運行js文件
node 文件名稱
3、進入交互模式
node
4、退出交互模式
ctrl+d
注意:
node的環境下 沒有dom 和bom的概念
node裡面的方法有的在瀏覽器中也不能運行 例如 process進程
process
process.env是一個對象,我們可以通過其屬性名來獲取具體的環境變量值
設定一個環境變量,以達到簡單區分不同機器,從而針對生產/開發環境運行不同的效果
每個系統的環境變量幾乎都不一樣,我們可以利用環境變量中具體某個特定的值來區分不同的機器
set:set命令作用主要是顯示系統中已經存在的shell變量,以及設置shell變量的新變量值
process.argv:獲取命令行參數
返回值是一個數組
參數1:node的絕對路徑
參數2:文件的絕對路徑
參數3:...arg
__filename:獲取當前運行文件的目錄,絕對路徑
__dirname:當前運行文件的絕對路徑
1、require:引入相應模塊
2、createServer():創建伺服器
3、listen:綁定埠號 參數2個 第一個參數埠號 第二個參數地址
4、request,response:接受和響應數據
//1、引入http模塊 var http = require(&34;);//2、創建伺服器 http.createServer(function(request,response){ //發送HTTP頭部 //狀態值為200 //內容類型:text/plain response.writeHead(200,{&34;:text/plain}); //發送相應數據 response.end(&34;) }).listen(8888); //終端列印信息 console.log(&34;);
content-type:類型
1、text/plain:文本類型
2、text/html:html文檔
3、image/* :圖片類型
4、 application/x-javascript :javascript類型
5、text/css : css類型
6、application/json; charset=utf-8
req:包含請求的信息,例如請求頭等
req.url:請求的地址
req.method:請求的方式
req.header:請求頭
res:伺服器的響應
res.statusCode:設置狀態碼
res.setHeader():設置響應頭,其他Content-type:是設置瀏覽器相應數據的類型
res.writeHead();statusCode與setHeader的綜合寫法
res.write():寫入響應數據,只能寫入字符串
res.end():結束響應,並返回數據
1、node核心模塊,require可以直接引入
2、自定義模塊:需要自己寫的模塊 用module.exports導出 require引入
3、第三方模塊:通過npm install 來安裝 然後在require引入
模塊化是將一個功能拆分成若干個小功能的方法
優點:
代碼復用、便於維護
模塊化劃分的原則:
1、功能復用次數較多
2、功能邏輯較為獨立
擴展:
什麼是高內聚、低耦合?
高內聚:代表模塊的獨立性、獨立性越強、內聚度越高
耦合度:模塊之間的關係,關係越緊密、耦合度越高
現有的模塊化規範:
AMD CMD COMMON ES6module
前端 前端 後端 前後端
require sea.js Node js引擎
異步 異步 同步 同步
1、什麼是npm?
npm是node的包管理倉庫
npm是一個網站
npm是一個命令
2、npm 常用命令
查看版本 npm -v
安裝模塊 npm install <module name>
全局安裝 npm install <module name> -g
卸載模塊 npm uninstall <module name>
更新模塊 npm update <module name>
搜索模塊 npm search <module name>
清除緩存 npm cache clear
查看包信息 npm info <包名>
查看包文檔 npm docs <包名>
查看包版本信息 npm info <包名> versions
安裝指定版本 npm install <包名>@版本號 -S
查看全局安裝目錄 npm root -g
修改存儲目錄 npm config set prefix &34;
3、擴展nrm:
1、安裝nrm: npm install nrm -g
2、查看可用的源:nrm ls
3、切換源:nrm use 源的名字
4、添加公司私有源 nrm add <源名稱> http://xxxxx
1、註冊一個npm帳號 進行帳號郵箱驗證
2、npm init name值一定要是全網唯一的
3、當輸入npm init時 會幫你在文件夾下建立一個package.json文件 當有這個文件的時候就代表你的目錄已經是一個包了
4、註冊npm adduser 注意密碼是不可見的
5、登錄 npm login
6、npm publish 上傳文件
7、下載文件 npm install 文件名
1、npm的缺點:
1、包是同步下載的 速度非常慢
2、在一個項目中下載完成後在另一個項目中還要繼續下載
2、yarn的優點:
1、包下載是異步的比npm快
2、yarn有效的保證版本號不容易出錯
3、yarn本地包會有緩存,安裝本地包會非常快
3、yarn的常用命令:
npm install yarn -g 安裝yarn
npm install nrm -g 安裝nrm
nrm ls 查看可用源
nrm use 源名 切換源
yarn init == npm init
yarn global add <name> == npm install -g <name>
yarn global bin == npm -g bin
yarn add 包名 == npm install 包名 --save
yarn add 包名 -dev == npm install 包名 --dev-save
yarn update 包名 == npm undate 包名 更新包
yarn remove 包名 == npm uninstall 包名 刪除包
yarn bin 全局安裝目錄
yarn cache ls 查看緩存
yarn clear 清除緩存
yarn install 安裝所有包
十四、開發環境、測試環境、生產環境的
1、開發環境:項目尚且在編碼階段,我們的代碼一般在開發環境中 不會在生產環境中,生產
環境組成:作業系統 ,web伺服器 ,語言環境。 php 。 資料庫 。 等等
2、測試環境:項目完成測試,修改bug階段
3、生產環境:項目數據前端後臺已經跑通,部署在阿里雲上之後,有客戶使用,訪問,就是
網站正式運行了。
三個環境也可以說是系統開發的三個階段:開發->測試->上線
save && --save-dev的區別
可分別將依賴(插件)記錄到package.json中的dependencies和devDependencies下面。
dependencies下記錄的是項目在運行時必須依賴的插件,常見的例如react jquery等,
即使項目打包好了、上線了,這些也是需要用的,否則程序無法正常執行
devDependencies下記錄的是項目在開發過程中使用的插件,一旦項目打包發布、上線了
之後,devDependencies中安裝的東西就都沒有用了
如果模塊是在開發環境中使用,那麼我們安裝依賴的時候需要--dev