NodeJSコード熱更新

3121 ワード

最近ゲームプロジェクトを開発しました.ゲームサーバはnodejsで作成して実現しました.そのため、インターネットで調べた結果、実験を通して、効果的な熱更新方法が確認されました.nodejsの熱い更新の原理はネット上ですでに説明があって、主にmodule cacheを一掃してと再びモジュールをロードするのです.まずテストプログラムを作成します.HotPatch Test.jsと名づけて、コードは簡単です.つまり、一行のコマンドを印刷します.
console.log("This is a hotpatch test!");
そして、本格的な熱更新プログラムを作成し、HotPatch.jsと名づけました.コードは以下の通りです.
var fs = require("fs");      //      

function cleanCache(modulePath) {
    var module = require.cache[modulePath];
    if (!module) {
        return;
    }

    if (module.parent) {
        module.parent.children.splice(module.parent.children.indexOf(module), 1);
    }
    require.cache[modulePath] = null;
}

var watchFile = function (filepath) {
    var fullpath = require.resolve(filepath);
    fs.watch(fullpath,function(event,filename){
        if (event === "change") {
            cleanCache(fullpath);
            try {
                var routes = require(filepath);
                console.log("reload module",filename);
            } catch (ex) {
                console.error('module update failed');
            }
        }
    });
};

var g_WatchFiles = ["./HotPatchTest"];
for (var i=0;ifunction() {
    var hotPatchTest = require("./HotPatchTest");
}, 1000);
  ,        ,            require,                      。