-
Recent Posts
Recent Comments
Categories
Links
Daily Archives: August 28, 2019
javascript code hot swapping
最近看到erlang的動態更新patch https://stackoverflow.com/questions/1840717/achieving-code-swapping-in-erlangs-gen-server 事實上在nodejs也可以做到類似的作法 基本的思路是透過eval動態將輸入的程式碼字串置換 注意在eval裡面要返回expression value,在裡面的程式碼加上'()’ 上面的作法只是一個簡單的範例, 完整的設計可以考慮針對執行介面設計一個code置換處理的handler, 包含如何定位到要改動的變數(狀態)或是函式,透過外部統一的訊息介面將要更新的程式碼送到對應的handler來處理。 這邊主要說明的是當function被置換時,並不會影響到原來正在執行的function, 在javascript裡,function是first-class citizenship,而其生命週期就如同物件的生命週期,但有可能因為javascript engine的optimization而延長。
Posted in nodejs
Leave a comment