[Node.js] 進階 (20%完成)
Node.js 靠 process.binding('xx') 使用 C++ 函數
Node.js 內包含 .cc (C++ code)
像這次範例是 PBKDF2 (用來做crypto相關的)
在C++ function 內要給 process.binding()用的話就要透過
env->SetMethod(target, "PBKDF2", PBKDF2)
V8引擎則是把javascript裡的一些東西轉成C++看得懂的東西
ex: V8:Array => 把js中的array轉成C++可以用的code
用來處理非同步的事件
Node.js執行之後就直接進event loop
整個event loop從頭跑到尾是一次是一個tick
shouldContinue 是 event loop 判斷是不是還有事件可以繼續跑
pendingOSTasks => networking related
pendingOperations => file system related
如果要讓node.js的middleware在執行完原本的handler function後才執行
可以用這個方式
此處的用法是, 在新增完部落格的文章之後, 才清除文章快取
# CI/CD
Travis
.travis.yml
Node.js 內包含 .cc (C++ code)
像這次範例是 PBKDF2 (用來做crypto相關的)
在C++ function 內要給 process.binding()用的話就要透過
env->SetMethod(target, "PBKDF2", PBKDF2)
V8引擎則是把javascript裡的一些東西轉成C++看得懂的東西
ex: V8:Array => 把js中的array轉成C++可以用的code
Thread
當我們在電腦中執行程式的時候, 電腦會起一個 process
一個process是程式本身的實例
一個process內可以有多個threads
一個thread可以看成一個to-do list 要被CPU執行的指令集
os scheduler來排定哪個thread要優先執行
一個核心一次可以處理超過一個thread (multi-thread)
Recap:
Thread是指令集的單位, 等著被CPU執行
Event Loop
詳細版: http://www.eebreakdown.com/2016/09/nodejs-eventemitter.html用來處理非同步的事件
Node.js執行之後就直接進event loop
整個event loop從頭跑到尾是一次是一個tick
shouldContinue 是 event loop 判斷是不是還有事件可以繼續跑
pendingOSTasks => networking related
pendingOperations => file system related
如果要讓node.js的middleware在執行完原本的handler function後才執行
可以用這個方式
此處的用法是, 在新增完部落格的文章之後, 才清除文章快取
# CI/CD
Travis
.travis.yml
- language
- 使用的城市語言
- node_js - 8 => 使用v8.x
- dist: trusty
- 使用ubuntu trusty (14.04)
- services
- 需要使用到哪些服務
- env
- Node.js 的環境變數
- cache
- 可以把安裝的dependencies 快取起來, 加速流程
- ex: node_modules
- install
- 需要安裝套件的指令
- ex: npm install, npm build
- script
- 跟 install類似, 就是在命令列中執行你想要的指令
- 真正將server side的code跑起來, 並且執行測試
- ex: nohup npm run start &
- nohup: 假如shell關閉, 這個terminal執行的process不會被kill掉
- & : 真正讓程式在背景中執行的符號
- sleep 3
- 暫停3秒
留言
張貼留言