日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
整理幾個超實用的前端提效shell命令

curl

目前創(chuàng)新互聯(lián)已為超過千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、石景山網(wǎng)站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

curl 是常用的命令行工具,用來請求 Web 服務器。它的名字就是客戶端(client)的 URL 工具的意思。curl 功能非常強大,它的命令可以直接放到 postman 使用,postman 也是支持 curl 的請求方式。

常用的結(jié)果參數(shù)

curl 的參數(shù)包括很多,這里只說幾個常用的,如果遇到復雜情況可以參考文檔。

不知道是不是還有的小伙伴不知道 postman 直接支持 curl 命令,在 postman 中點擊 code 就會出現(xiàn)對應請求的curl命令

  •  -X 參數(shù)指定 HTTP 請求的方法。
  •  -H 參數(shù)添加 HTTP 請求的標頭。
  •  -d 參數(shù)用于發(fā)送 POST 請求的數(shù)據(jù)體。使用 -d 參數(shù)以后,HTTP 請求會自動加上標頭Content-Type : application/x-www-form-urlencoded。并且會自動將請求轉(zhuǎn)為 POST 方法,因此可以省略-X POST
  •  -b 參數(shù)用來向服務器發(fā)送 Cookie。
  •  想了解更多參數(shù)可以去看下阮一峰老師文檔 https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

curl 項目中應用

如果對 curl 熟悉的小伙伴完全可以替代 postman 等工具,小伙伴可以直接模擬請求。(我認為curl能看到懂常用命令就夠了)

因為在 BFF 項目中,好多時候前端也參與開發(fā),我們也會直接調(diào)用后端的接口,有時候報錯不知道是不是自己參數(shù)寫錯了,或者 cookie 有問題,找問題調(diào)試不方便,在 local 環(huán)境下,我們會直接打印出完整的 curl 請求,這時候可以直接看出錯誤,開發(fā)者只需要知道 curl 的一些參數(shù)就可以,還可以直接把 curl 命令復制到 postman 進行調(diào)試。看一下具體實現(xiàn)部分代碼

 
 
 
 
  1.  //只在本地環(huán)境輸出 
  2.     if (ctx.app.config.env === 'local') { 
  3.       const str = 
  4.         curlString(url, { 
  5.           method, 
  6.           headers, 
  7.           body, 
  8.         }) + '\n'; 
  9.       console.log('\x1b[32m%s\x1b[0m', str); 
  10.     }    
  11. /** 
  12.  * Builds a curl command and returns the string. 
  13.  * @param  {String} url               Endpoint 
  14.  * @param  {Object} options           Object with headers, etc. (fetch format) 
  15.  * @return {String}                   cURL command 
  16.  */ 
  17. function curlString(url, options) { 
  18.   const method = options && options.method && typeof options.method === 'string' ? options.method.toUpperCase() : 'GET'; 
  19.   const hasHeaders = options && options.headers && typeof options.headers === 'object'; 
  20.   const hasBody = options && options.body; 
  21.   let curl = `\ncurl --request ${method} \\\n--url '${url}'`; 
  22.   if (hasHeaders) { 
  23.     curl += 
  24.       ' \\\n' + 
  25.       Object.entries(options.headers) 
  26.         .filter(([key, value]) => value !== undefined) 
  27.         .map(([key, value]) => `--header '${key}: ${value}'`) 
  28.         .join(' \\\n'); 
  29.   } 
  30.   if (hasBody) { 
  31.     curl += ` \\\n--data '${bodyToDataString(options)}'`; 
  32.   } 
  33.   return curl; 
  34. /** 
  35.  * Constructs a body string for use inside --data 
  36.  * @param  {Object} options           Object with headers, etc. (fetch format) 
  37.  * @return {String}                   cURL command data string 
  38.  */ 
  39. function bodyToDataString(options) { 
  40.   let parsedData; 
  41.   try { 
  42.     parsedData = JSON.parse(options.body); 
  43.   } catch (e) { 
  44.     // fall back to original body if it could not be parsed as JSON 
  45.     parsedData = options.body; 
  46.   } 
  47.   // return an ampersand delimited string 
  48.   const headers = _.get(options, 'headers'); 
  49.   const contentType = _.toLower(_.get(headers, 'content-type') || _.get(headers, 'Content-Type')); 
  50.   if (contentType === 'application/x-www-form-urlencoded') { 
  51.     if (typeof parsedData === 'string') { 
  52.       return parsedData; 
  53.     } else { 
  54.       return Object.entries(parsedData) 
  55.         .map(([key, val]) => `${key}=${val}`) 
  56.         .join('&'); 
  57.     } 
  58.   } else { 
  59.     return JSON.stringify(parsedData); 
  60.   } 
  61. }

vim 中的基本操作和配置

非 insert 模式

在 vim 打開文件后,還沒有使用插入編輯,可以做哪些基本操作

  1.  G 快速移動到文件底部(常用于查看日志)
  2.  gg 快速移動到文件頂部
  3.  0 快速移動到行首
  4.  $ 快速移動到行尾
  5.  :13 快速移動到特定行
  6.  ZZ 光標移動到本屏中間
  7.  dd 剪切本行
  8.  yy 復制本行
  9.  u 撤銷(undo縮寫,撤銷)
  10.  p 粘貼 (p指paste,粘貼)
  11.  在 mac 系統(tǒng)下可以 option+點擊 快速移動到想要的位置(也就是光標)

insert 模式

前面說了多種移動方式,接下來結(jié)束幾個常用的 insert 命令,我這里就結(jié)束一些常用簡單的

  1.  i 在當前光標的前面進行編輯
  2.  o 快速進入 insert 模式,并定位到下一行編輯
  3.  esc 退出 insert 模式,與

ping

在網(wǎng)絡(luò)中 ping 是一個十分強大的 TCP/IP 工具。

  1.  用來檢測網(wǎng)絡(luò)的連通情況和分析網(wǎng)絡(luò)速度
  2.  根據(jù)域名得到服務器IP
  3.  根據(jù)ping返回的TTL值來判斷對方所使用的操作系統(tǒng)及數(shù)據(jù)包經(jīng)過路由器數(shù)量。

bytes值:數(shù)據(jù)包大小,也就是字節(jié)。

time值:響應時間,這個時間越小,說明你連接這個地址速度越快。

TTL值:Time To Live,表示DNS記錄在DNS服務器上存在的時間,它是 IP 協(xié)議包的一個值,告訴路由器該數(shù)據(jù)包何時需要被丟棄。可以通過 Ping 返回的 TTL 值大小,粗略地判斷目標系統(tǒng)類型是 Windows 系列還是 UNIX/Linux 系列。

默認情況下,Linux 系統(tǒng)的TTL值為64或255,WindowsNT/2000/XP 系統(tǒng)的 TTL 值為 128,Windows98 系統(tǒng)的 TTL 值為32,UNIX 主機的 TTL 值為 255。

除了直接 ping ip ,還可以 ping 域名,會自動把域名解析為 ip。

應用

最常用的方式是直接ping ip地址,測試網(wǎng)絡(luò)連通性

學會看懂出錯提示信息

(1)NoAnswer:這種故障表明本機有一條通向中心主機的路由,但沒有收到發(fā)給該中心主機的任何信息。原因可能是:中心主機沒有工作、本機或中心主機網(wǎng)絡(luò)配置不正確、本地或中心的路由器沒有工作、通信線路有故障、中心主機存在路由選擇問題,等等。

(2)Request Timed Out:超時錯誤,被測試的機器不能正常連接,原因可能是該主機此時未連接(如已關(guān)機)、或到路由器的連接有問題、或路由器不能通過,或?qū)Ψ街鳈C使用了防火墻軟件禁止進行 Ping 測試等等。

(3)Unknown Host Name:無法解析主機名字,可能是DNS設(shè)置不對,或者對方主機不存在

telnet

telnet 經(jīng)常可以確定遠程服務的狀態(tài),比如確定遠程服務器的某個端口是否能訪問(端口連通性)。

telenet是windows標準服務,可以直接用;如果是linux或者mac,需要自己安裝telnet

使用 telnet ip port

1)先用telnet連接不存在的端口

 
 
 
 
  1. [root@localhost ~]# telnet 10.0.250.3 80 
  2. Trying 10.0.250.3... 

telnet: connect to address 10.0.250.3: Connection refused #直接提示連接被拒絕

2)再連接存在的端口

 
 
 
 
  1. [root@localhost ~]# telnet localhost 22 
  2. Trying ::1... 
  3. Connected to localhost. #看到Connected就連接成功了 
  4. Escape character is '^]'. 
  5. SSH-2.0-OpenSSH_5.3 
  6. Protocol mismatch. 
  7. Connection closed by foreign host.

總結(jié)

優(yōu)秀和常用的 shell 命令有好多,我這里只寫了幾個非常常用,并且前端開發(fā)者也會經(jīng)常用到的命令,希望對小伙伴們有一丟丟幫助。


文章題目:整理幾個超實用的前端提效shell命令
當前路徑:http://www.5511xx.com/article/djepejh.html