最近剛開始學node.js,所以想把初步學到的心得做個整理
<<JavaScript和Node.js的關係是?>>
JavaScript是程式語言,可以跑在瀏覽器或Node.js上,
不同的執行環境提供的也不盡相同,
所以Node.js是指JavaScript的執行環境唷!
<<阻塞和同步>>
假設我點了餐之後只能站在老闆旁邊等待,
此時的我就像被擋住了不能去做其他事情(blocking)。
但如果我有個點餐app可以隨時知道出餐的狀況,
那在點了餐之後還可以到處晃一下,
等到app通知我了再去領餐(nonblocking)。
在JavaScript的部分幾乎可以說是阻塞=同步(synchronous),非阻塞=非同步(asynchronous)。
<<Callback Function>>
在非同步的執行下就會用到callback function,
意思就是「做完了某件事之後,請做這個(callback function)來通知我」,
例如:
setTimeout(function(){
console.log("Hi");
}, 3000);
就是指請過了3000毫秒,印出Hi。
關於event loop及上述的解釋,
可以參考What the heck is the event loop anyway? | Philip Roberts | JSConf EU
有很詳細的解釋。
<<CRUL指令>>
Curl是可以透過HTTP Protocol下載和上傳檔案的指令,另外也支援不同HTTP 請求。
`curl ` +
`-X GET ${url} ` + //可以換不同的HTTP請求GET/POST/PUT/DELETE/PATCH
`-L ` + //隨著網址 301/302 redirect
`-H "User-Agent: ${headers['User-Agent']}" ` + //-H設定帶入的header
`-H "Accept-Language:${headers['Accept-Language']}" ` +
`-H "Accept: ${headers['Accept']}" ` +
`-H "Cookie: ${headers['Cookie']}" `);
參考Linux Curl Command 指令與基本操作入門教學
<<Regex執行>>
假設從上面的curl指令取到了某個網址的html,想要從裡面找特定的圖片
let html = stdout;
let regex = /https?:\/\/.....(省略)/[0-9]+\/android\/sticker\.png/g;
這時就會使用到JavaScript的exec(),用法是regex.exec(html);
<<Promise物件>>
另一種來處理非同步的方式,promise(承諾)會去做某件事,代表還未發生待將來可能會執行某個動作。
所以promise可能會經過三種階段:pending (執行中), resolved (執行成功), rejected (執行失敗)
留言列表