天天看點

【筆記】node學習指北

node相關

      • 一、準備工作
      • 二、node
      • 三、伺服器端
      • 四、pm2
      • 五、express
      • 六、Koa
      • 七、MongoDB
      • 八、桌面應用

一、準備工作

  1. npm init //初始化項目
  2. npm i express //模闆架構
  3. npm i mongoose //資料庫管理
  4. nom i nodemon -g //熱更新伺服器

    5.npm i art-template express-art-template //模闆引擎

其他:pm2,管理簡化node操作

性能測試工具:loadruner、jmeter

接口測試工具:postman

抓包工具:fiddle

資料庫管理:Navicat,Xshell,robot3T

項目管理:禅道、QC

二、node

導入:require;導出:module.exports

exports:是module.exports對象的一個位址引用,exprots={},導出一個對象的時候,會改變原先的引用位址,進而exports,和module.exports指向位址改變。

require:也是module.reequire上的一個對象。

  1. 全局對象
  • 路徑
__dirname:用來動态擷取檔案子產品所屬目錄的絕對路徑 (目錄)
__filename:用來動态擷取目前檔案的相對路徑(檔案)
           
  • process

process.argv //傳回數組,第一個元素node,第二個.js檔案名稱,第三個指令行傳入的參數。

process.execPath //開啟目前程序的絕對路徑

process.env //傳回使用者目前環境資訊

process.pid //目前程序Pid;

process.platform //傳回目前作業系統平台。

process.stdin //标準輸入流

process.stdout //标準輸出流

//實作一個console.log
funciton log(msg){
process.stdout.write(msg)
}
           
  • Buffer 類

new Buffer(size) //建立一個buffer對象,并配置設定一個長度,不能更改。執行個體方法,類的靜态方法。

buffer.write(str,num,num,code)//1.要寫入的字元串,2.從buffer第幾位開始寫入,3.寫入長度。4.編碼

buffer.string(code,num.num)//1.變為字元串的編碼,2.開始位,3.結束位

buffer.slice()//剪切,不包含最後一位

  1. 内置子產品
  • http
  1. http.createServer() 建立服務
  2. server.on(‘request’,(req,res)=>{});接收資料請求。響應頭,告訴浏覽器如何解析資料。
  3. res.setHeader(‘Content-Type’,‘text/plain;charset=utf-8’):text普通字元串,html相應。一般隻為字元指定編碼。
  4. request //用戶端對象
  5. response //服務端對象
  • url
  1. url.parse(‘url’,true) 解析請求的路徑資訊,解析為對象。
  2. url.format() 把路徑對象,轉為url字元串
  • fs
  1. fs.readFile() 根據位址輸出檔案内容,同步一直輸出完。1參:讀取路徑。2參:回調函數,error,data
  2. fs.writeFile() 覆寫性建立檔案。1參:寫入路徑。2參:寫入内容。3參:error錯誤回調
  3. fs.appendFile() 寫入檔案,追加檔案内容。
  4. fs.readFile() 讀取檔案資訊。預設得到buffer,二進制資料。msg.toString(‘utf-8’)
  5. fs.unlink() 删除檔案。
  6. fs.readdir() 讀取檔案路徑。
  7. fs.stat() 類裡面的stats.isFile判斷是否是一個檔案
  8. fs.mkdir() //建立檔案夾
  9. fs.readdir() //讀取檔案夾
  • path
  1. path.basename() //擷取一個路徑的檔案名
  2. path.dirname() //擷取路徑中的目錄部分
  3. path.extname() //擷取路徑中的擴充名
  4. path.parse() //把路徑轉為對象
  5. path.join() //路徑拼接
  6. path.isAbsolute() //判斷呢一個路徑是否是絕對路徑
  • qs
  1. qs.parse(string,’&’,’=’) 把字元串變為對象
  2. qs.stringify(obj,’’,’’) 把對象變為字元串
  3. qs.escape() 編碼
  4. qs.unescape 解碼
  • os 系統資訊子產品
  • erro 錯誤資訊子產品
  1. 第三方子產品(插件)
  • npm i nodemailer //發郵件
  • npm i json-server -g //json檔案api化,配合mock.js

    使用連結

  • npm i cheerio //爬蟲

三、伺服器端

Ubuntn 鏡像
  1. 新執行個體更新 apt update
  2. 檢視 apt show nginx
  3. 安裝nginx ,apt install nginx -y
  4. 安裝 mongodb,apt install -y mongodb-server
  5. 安裝給git,apt install -y git
  6. 生成key,ssh-keygen
  7. 檢視key,cat
  8. 安裝node, apt install -y nodejs
  9. 安裝npm, apt install -y npm
  10. 淘寶鏡像,npm config set registry https://registry.npm.taobao.org
  11. 更新node,npm i -g n,然後 n latest
  12. 建立根目錄檔案,mkdir /data ,cd /data
  13. 把git倉庫克隆裡面
  14. 安裝pm2, npm i -g pm2
  15. 配置nginx,vscode安裝remote,連接配接伺服器,進入etc/nginx/
  16. 進入http://nginxconfig.io網站進行配置,複制檔案之後
Nginx
  1. 重新開機
  • service nginx start
  • systemctl start nginx
  1. 不小心删掉etx/nginx檔案的話
    dpkg --force-confmiss -i /var/cache/apt/archives/nginx-common_*.deb

四、pm2

安裝: npm install [email protected] -g
啟動 :pm2 start app.js
停止 :pm2 kill
pm2啟動指令
  1. pm2 start app.js:啟動nodeJs應用,程序的預設名稱為檔案名app
  2. pm2 start app.js --name mynode:啟動node,并指定程序名稱為mynode
  3. pm2 start app.js -i max:根據有效CPU數目啟動最大程序數目
  4. pm2 start app.js -i 3:啟動3個程序
  5. pm2 start app.js --watch:實時監控的方式啟動,app.js檔案有變動時,pm2會自動reload
  6. pm2 start app.js -x:用fork模式啟動 app.js 而不是使用 cluster
  7. pm2 start app.js -x -- -a 23:用fork模式啟動 app.js 并且傳遞參數(-a 23)
  8. pm2 start app.json:啟動程序, 在 app.json裡設定選項
  9. pm2 start app.js -i max -- -a 23:在 -- 之後給 app.js 傳遞參數
  10. pm2 start app.js -i max -e err.log -o out.log:啟動并生成一個配置檔案
pm2檢視與監視程序
  1. pm2 list:顯示所有程序;
  2. pm2 show 0,pm2 info 0:檢視程序id為 0 的詳細資訊;
  3. pm2 monit:進入監視頁面,監視每個node程序的CPU和記憶體的使用情況。
pm2停止、删除程序
  1. pm2 stop/delete 0:停止/删除id為 0 的程序;
  2. pm2 stop/delete all:停止/删除所有程序。
pm2重新開機、重載
  1. pm2 restart 0:重新開機id為 0 的程序;
  2. pm2 restart all:重新開機所有程序;
  3. pm2 reload 0:0秒停機重載id為 0 程序(用于 NETWORKED 程序);
  4. pm2 reload all:重載所有程序。
pm2日志操作
  1. pm2 logs:顯示所有程序的日志;
  2. pm2 logs 0:顯示程序id為 0 的日志;
  3. pm2 flush:清空所有日志檔案;
  4. pm2 reloadLogs:重載所有日志。
pm2 startup:産生 init 腳本,保持程序活着。
           

五、express

  • 建立服務

    let app = express();

  • get
app.get('/', (req, res) => {
    res.end('hello index')
})
req.query:解析get請求。
           
  • Post,參數解析
需要安裝body-parser插件
npm i body-parser
application/x-www-form-urlencoded  表單傳參
application/json      json傳參。
applocation/formData  圖檔用
           
  • 路由
  • token
  • 中間件,攔截器
  • 靜态資源目錄
  • 内置子產品,router

六、Koa

  1. koa-static-cache:靜态檔案代理服務
  2. koa-router:路由
  3. koa-swig:模闆引擎
  4. koa-bodyparser:body解析
  5. koa-multer:formIData解析

七、MongoDB

mongodb下載下傳位址:http://dl.mongodb.org/dl/win32/x86_64

1.安裝
* 安裝的時候,最後一項不要點。(謹記)
* 不是内部變量的話,配置環境變量。
* 在安裝的磁盤目錄下,建立data/db
* 一個指令視窗,mongod:開啟服務資料庫,不要關;一個mongo:連接配接資料庫,可以操作資料庫;
2.指令
* cls     //清屏
* dir   檢視檔案目錄
* mongod 啟動資料庫
* mongo 調起操作資料庫

> mongod --dbpath = 資料存儲目錄路徑 // 修改預設的資料存儲,目錄
> show dbs // 顯示目前資料庫連接配接池中的所有的資料庫
> use test// 有則切換,無則建立并且切換至test資料庫
>.db.dropDatabase();删除資料庫,删除目前所在的資料庫
> db.createCollection('users') // 建立集合----建立表
> db.suers.drop() 删除目前集合表
>db.createCollection('users', {
      capped : true, // 建立固定集合
      autoIndexId : true, // 自動在 _id 字段建立索引
      size : 6142800, // 整個集合空間大小 6142800 KB
      max : 10000 // 文檔最大個數為 10000 個 ,最多存儲10000條資料
    })
> db.getCollectionNames() // 列印出目前資料庫中所有的集合
> db.users.insert({username: '名字', run: 50}) // 插入一條資料
> db.users.find() // 查詢到的三條資料
> db.users.find().toArray() // 查詢資料轉換為數組
> db.users.find({},{_id:0}) // 第一個{}查詢條件,第二個{}表示顯示字段,1為顯示,0不
> db.users.updateOne({run: 0},{$set: {run: 5}}) // 更新單條資料
> db.users.updateMany({run: 10},{$set: {run: 20}}) // 更新多條資料
> db.users.remove({ "username" : "昵稱"}) //删除資料
> db.users.updateMany({}, {$inc: {run: +10}}) // 更新--- 自增
> db.users.find({run: {$gte: 20}},{_id:0}) // 查詢大于等于20的資料
> db.users.find({},{_id:0}).limit(3) // 查詢3條資料
> db.users.find({},{_id:0}).limit(3).skip(1) // 從第2條開始,選擇3條,分頁功能
> db.users.find({run: {$gte: 10, $lte: 30}},{_id:0}) // 價格區間查找
> db.users.find({},{_id:0}).sort({run: 1}) // 以run升序
           

八、桌面應用

  1. electron builder nsis

繼續閱讀