Leitfaden Entwicklungshandbuch

Hot-Update des Servermoduls

fibjs http-Server von fibjs ist ein unabhängiges Serverprogramm, das sich im Speicher befindet. fibjs bedeutet, dass das Dienstprogramm häufig neu gestartet werden muss, wenn eine Versionsaktualisierung vorliegt.

Nehmen Sie die folgenden Serviceroutinen an:

  • web.js http handler
  • app.js Anwendungseintrag
1 2 3 4 5 6
// web.js var _ver = new Date(); module.exports = function (r) { r.response.write("Hello, new word @ " + _ver); }
1 2 3 4 5 6 7 8 9
// app.js var http = require("http"); var vm = require("vm"); var coroutine = require("coroutine"); var webServer = require("./web"); var svr = new http.Server(8080, webServer); svr.start();

In app.js direkten Bezug web.js , wenn jede Aktualisierung von Anwendungen, sie müssen beide Neustart app.js , gibt es keine Möglichkeit Sie den Code zur gleichen Zeit aktualisiert werden können, lassen app.js automatisch die neuesten laden web.js es?

Wir können reibungslose Hot-Updates über das native SandBox Modul von fibjs SandBox . app.js Sie einige Änderungen an app.js :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
// app.js var http = require("http"); var vm = require("vm"); var coroutine = require("coroutine"); // var webServer = require("./web"); function new_web() { return new vm.SandBox({ mq: require("mq") }).require("./web.js", __dirname); } // 每 1s 重新载入一遍 ./web.js 文件以更新 srv 的 handler coroutine.start(function() { while (true) { coroutine.sleep(1000); svr.handler = new_web(); } }) var svr = new http.Server(8080, new_web()); svr.start();

app.js Beginn eines Zyklus, alle lS wieder require eine web.js Inhalt erzeugte Sicherheitsmodul für svr remounted handler . Wenn der Inhalt in web.js aktualisiert werden muss, ersetzen Sie einfach die Datei, um eine reibungslose Aktualisierung des Serverprogramms zu erreichen.