close

最近剛開始學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 (執行失敗)

 

arrow
arrow
    全站熱搜

    噗噗法 發表在 痞客邦 留言(0) 人氣()