node學習筆記(三十八)

2020-09-24 加百利真胖

一、什麼是NodeJS?

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接口,後者被稱為存儲器接口


二、什麼是V8引擎?

每一個瀏覽器都有一個內核,內核中有引擎。引擎分為:渲染引擎(渲染DOM) 和 腳本引擎(運行腳本語言)
腳本引擎中最流行的就是chrome中的V8引擎


三、Node可以做什麼?

1、node可以解析js代碼(因為沒有瀏覽器安全級別的限制)因此提供了許多系統級別的API
2、node可以編寫獨立的服務端應用,無需藉助任何web伺服器,可以連接文件系統,以及操作資料庫
3、node一般在實際應用中用來做中間層伺服器使用


注意:

在node中無法使用window對象下面的一些方法,因為node中沒有DOM 和 BOM的概念,同時node中也有一些屬性瀏覽器無法使用 例如:process global等對象

四、node的優點和適用的項目?

優點:
高性能、速度快、效率高 適合做高並發的項目(I/O密集型的應用)
缺點:
不適合做大量的運算應用(CPU密集的應用)

五、擴展版本號

6.11.4
第一個是大版本號
第二個是小版本號
第三個是補丁版本號
版本問題:LTS長期穩定版本 Current最新版本 偶數為穩定版本 基礎為非穩定版本


六、node交互模式

以前我們運行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


八、request&&response常用的屬性

req:包含請求的信息,例如請求頭等
req.url:請求的地址
req.method:請求的方式
req.header:請求頭
res:伺服器的響應
res.statusCode:設置狀態碼
res.setHeader():設置響應頭,其他Content-type:是設置瀏覽器相應數據的類型
res.writeHead();statusCode與setHeader的綜合寫法
res.write():寫入響應數據,只能寫入字符串
res.end():結束響應,並返回數據

九、node中模塊的分類

1、node核心模塊,require可以直接引入
2、自定義模塊:需要自己寫的模塊 用module.exports導出 require引入
3、第三方模塊:通過npm install 來安裝 然後在require引入


十、什麼是模塊化?

模塊化是將一個功能拆分成若干個小功能的方法
優點:
代碼復用、便於維護
模塊化劃分的原則:
1、功能復用次數較多
2、功能邏輯較為獨立
擴展:
什麼是高內聚、低耦合?
高內聚:代表模塊的獨立性、獨立性越強、內聚度越高
耦合度:模塊之間的關係,關係越緊密、耦合度越高

現有的模塊化規範:

AMD CMD COMMON ES6module

前端 前端 後端 前後端

require sea.js Node js引擎

異步 異步 同步 同步

十一、npm

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

十二、如何自己寫的包上傳到npm

1、註冊一個npm帳號 進行帳號郵箱驗證
2、npm init name值一定要是全網唯一的
3、當輸入npm init時 會幫你在文件夾下建立一個package.json文件 當有這個文件的時候就代表你的目錄已經是一個包了
4、註冊npm adduser 注意密碼是不可見的
5、登錄 npm login
6、npm publish 上傳文件
7、下載文件 npm install 文件名

十三、yarn簡介

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

相關焦點

  • JavaScript學習筆記(三十四)——Node
    什麼是 nodeNode.js® is a javascript runtime built on Chrome&39;hello node& 表示在當前目錄下創建一個叫做 test 的文件夾$ md test移除文件夾
  • node學習筆記(四十二)
    瀏覽器為了能夠使得js內部宏任務與DOM任務有序的執行,會在一個宏任務執行結束後,在下一個宏執行開始前,對頁面進行重新渲染 (task->渲染->task->…)滑鼠點擊會觸發一個事件回調,需要執行一個宏任務,然後解析HTML微任務: 微任務是一次性執行完的。
  • node學習筆記(四十一)
    3、ejs的基本使用用<% … %> 開始符和結束符之間寫js代碼用<%= … %>輸出變量數據 變量若包含 '<' '>' '&'等字符 會被轉義用<%- … %>輸出變量(html
  • 系統性學習 Node.js(2)——手寫 require
    之前也或多或少的接觸過,但是沒有一個系統的學習過程,所以筆者接下來打算系統的去學習 Node.js,同時建立一個從零到一學習 Node 的一個博客。希望我的學習經驗可以幫助到大家,往期連結CommonjsNode 裡面一個文件就是一個模塊,每個文件都有獨立的作用域,模塊的規範遵循 Commonjs 規範。
  • JavaScript學習筆記(十四)——DOM(下)
    DOM(下)DOM 就是我們 html 結構中一個一個的節點構成的不光我們的標籤是一個節點,我們寫的文本內容也是一個節點,注釋,包括空格都是節點DOM節點>DOM 的節點我們一般分為常用的三大類 元素節點 / 文本節點 / 屬性節點什麼是分類,比如我們在獲取元素的時候,通過各種方法獲取到的我們叫做元素節點(標籤節點)比如我們標籤裡面寫的文字,那麼就是文本節點寫在每一個標籤上的屬性
  • node學習筆記(三十九)
    \data\db 開啟資料庫伺服器 (開啟)終端末尾顯示27017代表成功2、關係型資料庫與非關係資料庫區別優點:1)成本2)查詢速度:nosql資料庫將數據存儲於緩存之中,關係型資料庫將數據存儲在硬碟中,自然查詢速度遠不及nosql資料庫。3)存儲數據的格式:nosql的存儲格式是key,value形式、文檔形式、圖片形式等等,所以可以存儲基礎類型以及對象或者是集合等各種格式,而資料庫則只支持基礎類型。4)擴展性:關係型資料庫有類似join這樣的多表查詢機制的限制導致擴展很艱難。
  • 系統性學習 Node.js(1)- Node.js 基礎概念
    之前也或多或少的接觸過,但是沒有一個系統的學習過程,所以筆者接下來打算系統的去學習 Node.js,同時希望記錄一下自己從零到一的學習過程。希望我的學習經驗可以幫助到大家。為什麼使用要學習 Node.js(1)首先 Node 在處理高並發,IO密集場景有明顯優勢。高並發是指同一時間並發訪問伺服器IO即輸入輸出,是指文件讀寫,網絡操作,資料庫操作等。
  • node學習筆記(四十)
  • 史上最全 Appium 自動化測試從基礎到框架實戰精華學習筆記(一)
    本文為霍格沃茲測試學院學員學習筆記,進階學習文末加群。對測試人來說,Appium 是非常重要的一個開源跨平臺自動化測試工具,它允許測試人員在不同的平臺(iOS、android 等)使用同一套 API 來寫自動化測試腳本,這樣可大幅提升代碼復用率和工作效率。
  • 【黨章學習】黨章學習手冊 三十八| 申請入黨的基本條件
    【黨章學習】黨章學習手冊 三十八| 申請入黨的基本條件 2020-11-20 21:11 來源:澎湃新聞·澎湃號·政務
  • Node.js學習筆記:基本使用
    owlman4、保存文件後,在code/01_sayHello目錄下執行node 01-sayHello.js命令,就可以看到輸出結果:3、在code/01_sayHello/data目錄下執行touch text-data.txt命令,並在其中輸入以下內容:Hello,owlman,歡迎學習 Nodejs。
  • 搭建node服務(三):使用TypeScript
    )?匹配一個任意字符(不包括目錄分隔符)**/ 遞歸匹配任意子目錄2./root/src/node_modules/moduleB/index.d.ts/root/node_modules/moduleB.ts/root/node_modules/moduleB.tsx/root/node_modules/moduleB.d.ts/root/node_modules/moduleB/package.json (如果指定了&34;屬性)/root/node_modules
  • SQL學習筆記3:count(*)函數
    1.count(*)函數用法COUNT(*) 函數返回表中的記錄數,具體來說,返回值是一個數字。圖醜~1)需要得到公司所有員工數兒2)返回大於40歲的人的數量:語句:SELECT COUNT(*) FROM Persons WHERE Age>40結果:3.
  • tensorflow2.0學習筆記(一)
    tensorflow2.0學習筆記(一)>這是本人自學tensorflow的筆記,用於記錄。
  • 從0開始學習spark的學習筆記(1)
    distributed dataset)4.5 job4.6 SparkContext4.7 Driver5. saprk名詞解釋:6.4.4 RDD:彈性式分布式數據集(resilient distributed dataset)
  • Java初學,學習筆記(一)
    4.流程控制 第四章流程控制,介紹java語言中流程控制分成三類:順序結構,選擇(分支)結構,循環結構。包括一些關鍵字的使用,本章會進行講解。循環結構對於很多初學者是比較難的一個技能點,也是Java的入門技能點,經常有人說學會了循環你才是跨進了Java學習的門檻。
  • Vue學習筆記(四)
    pages/--| film/-----| nowplaying.vue-----| comingsoon.vue--| film.vue(4)重定向a.$router.push("/detail"); (6) 獲取動態路由參數​ asyncData({params}){ console.log(params.id); }
  • Node.js 學習筆記:學習規劃 & 認知 Node.js
    如果一切順利,我們在 Windows 中打開cmd終端,在其中輸入node -v命令並回車之後,應該就會看到相關的版本信息使用包管理器在 Ubuntu 這種類 Linux/Unix 作業系統中,我們安裝軟體往往都會選擇使用 apt 這一類的包管理器,簡單而方便,依次執行以下命令即可: sudo apt update sudo apt install nodejs 長期支持
  • Vue學習筆記(三)
    (3(1)git pull, (拉取伺服器的代碼, 會造成自動合併失敗,需要手動合併)(2) 手動合併代碼(小烏龜等可視化git工具 進行代碼對比)(1)正向代理正向代理最大的特點是客戶端非常明確要訪問的伺服器地址;伺服器只清楚請求來自哪個代理伺服器,而不清楚來自哪個具體的客戶端;正向代理模式屏蔽或者隱藏了真實客戶端信息。
  • JavaScript學習筆記(三十五)——SASS
    依舊是要轉換成 css 在瀏覽器中運行這個時候就需要一個工具來幫我們做安裝 sass 環境以前的 sass 需要依賴一個 ruby 的環境現在的 sass 需要依賴一個 python 的環境但是我們的 node