node相關
-
-
- 一、準備工作
- 二、node
- 三、伺服器端
- 四、pm2
- 五、express
- 六、Koa
- 七、MongoDB
- 八、桌面應用
-
一、準備工作
- npm init //初始化項目
- npm i express //模闆架構
- npm i mongoose //資料庫管理
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上的一個對象。
- 全局對象
- 路徑
__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()//剪切,不包含最後一位
- 内置子產品
- http
- http.createServer() 建立服務
- server.on(‘request’,(req,res)=>{});接收資料請求。響應頭,告訴浏覽器如何解析資料。
- res.setHeader(‘Content-Type’,‘text/plain;charset=utf-8’):text普通字元串,html相應。一般隻為字元指定編碼。
- request //用戶端對象
- response //服務端對象
- url
- url.parse(‘url’,true) 解析請求的路徑資訊,解析為對象。
- url.format() 把路徑對象,轉為url字元串
- fs
- fs.readFile() 根據位址輸出檔案内容,同步一直輸出完。1參:讀取路徑。2參:回調函數,error,data
- fs.writeFile() 覆寫性建立檔案。1參:寫入路徑。2參:寫入内容。3參:error錯誤回調
- fs.appendFile() 寫入檔案,追加檔案内容。
- fs.readFile() 讀取檔案資訊。預設得到buffer,二進制資料。msg.toString(‘utf-8’)
- fs.unlink() 删除檔案。
- fs.readdir() 讀取檔案路徑。
- fs.stat() 類裡面的stats.isFile判斷是否是一個檔案
- fs.mkdir() //建立檔案夾
- fs.readdir() //讀取檔案夾
- path
- path.basename() //擷取一個路徑的檔案名
- path.dirname() //擷取路徑中的目錄部分
- path.extname() //擷取路徑中的擴充名
- path.parse() //把路徑轉為對象
- path.join() //路徑拼接
- path.isAbsolute() //判斷呢一個路徑是否是絕對路徑
- qs
- qs.parse(string,’&’,’=’) 把字元串變為對象
- qs.stringify(obj,’’,’’) 把對象變為字元串
- qs.escape() 編碼
- qs.unescape 解碼
- os 系統資訊子產品
- erro 錯誤資訊子產品
- 第三方子產品(插件)
- npm i nodemailer //發郵件
-
npm i json-server -g //json檔案api化,配合mock.js
使用連結
- npm i cheerio //爬蟲
三、伺服器端
Ubuntn 鏡像
- 新執行個體更新 apt update
- 檢視 apt show nginx
- 安裝nginx ,apt install nginx -y
- 安裝 mongodb,apt install -y mongodb-server
- 安裝給git,apt install -y git
- 生成key,ssh-keygen
- 檢視key,cat
- 安裝node, apt install -y nodejs
- 安裝npm, apt install -y npm
- 淘寶鏡像,npm config set registry https://registry.npm.taobao.org
- 更新node,npm i -g n,然後 n latest
- 建立根目錄檔案,mkdir /data ,cd /data
- 把git倉庫克隆裡面
- 安裝pm2, npm i -g pm2
- 配置nginx,vscode安裝remote,連接配接伺服器,進入etc/nginx/
- 進入http://nginxconfig.io網站進行配置,複制檔案之後
Nginx
- 重新開機
- service nginx start
- systemctl start nginx
- 不小心删掉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
- koa-static-cache:靜态檔案代理服務
- koa-router:路由
- koa-swig:模闆引擎
- koa-bodyparser:body解析
- 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升序
八、桌面應用
- electron builder nsis