Frage

Hat jemand so etwas mit dem vorhandenen für sich eingerichtet? node.js REPL? Ich habe mir keinen schnellen Weg dafür ausgedacht.

So wie ich es heute mache, benutze ich Emacs und das: https://github.com/ivan4th/swank-js

Dieses Modul besteht aus:

  1. Ein SLIME-js-Addon zu Emacs, das in Kombination mit dem js2-Modus ermöglicht Sie geben einfach ein C-M-x irgendwo im Körper einer Funktion def - und aus Aus geht die Zeichenfolge der Funktion an ..

  2. Swank-js-Server (ja, Sie können von Ihrem lokalen Computer aus bewerten direkt zu einem entfernten Prozess) geschrieben in Node.js - Es empfängt die Zeichenfolge der Funktion, die Sie bewertet haben, und bewertet sie tatsächlich

  3. Ein ganzer Teil, mit dem Sie eine Verbindung zu einem anderen Port auf diesem Server herstellen können mit Ihrem BROWSER und können Sie dann das DOM in diesem Browser bearbeiten (was ziemlich erstaunlich, aber nicht relevant ist)

    Meine Lösung verwendet SLIME-js auf der Emacs-Seite UND ich benötige ('swank- js ') in meiner app.js Datei

    Jetzt .. Ich habe mehrere Probleme und Fragen bezüglich meiner Lösung oder andere mögliche:

    Q1: Übertreibt das alles? Hat jemand einen geheimen Weg, um Sachen zu bewerten? von Nano in seinen Live-Prozess?

    F2: Ich musste die Art und Weise ändern, wie swank-js BEWERTET. Es wurden einige verwendet Art von schwarzer Magie wie folgt:

    
    var Script = process.binding('evals').Script;
    var evalcx = Script.runInContext;
    ....
    this.context = Script.createContext();
    for (var i in global) this.context[i] = global[i];
    this.context.module = module;
    this.context.require = require;
    ...
    r = evalcx("CODECODE", this.context, "repl");
    

    die, soweit ich weiß, nur die globalen Variablen in die kopiert Neuer Kontext und nach Auswertung ändert sich die ursprüngliche Funktion nicht Definitionen - SOOO .. Ich benutze nur einfaches "eval" und IT WERKE.

    Haben Sie diesbezüglich Kommentare?

    F3: Um eine Funktion neu bewerten zu können, muss es sich um eine GLOBALE Funktion handeln - Ist es eine schlechte Praxis, alle Funktionsdefinitionen als global (clojure-like) zu haben? Denken Sie, dass es einen anderen Weg gibt, dies zu tun?

War es hilfreich?

Lösung

Tatsächlich wird swank.js viel besser und es ist jetzt viel einfacher, swank js mit Ihrem Projekt mithilfe von NPM einzurichten.Ich bin gerade dabei, die Dokumentation zu schreiben, aber die Funktionalität ist da!

Andere Tipps

Überprüfen Sie dies http://nodejs.org/api/vm.html

var util = require('util'),
vm = require('vm'),
sandbox = {
  animal: 'cat',
  count: 2
};

vm.runInNewContext('count += 1; name = "kitty"', sandbox, 'myfile.vm');
console.log(util.inspect(sandbox));

// { animal: 'cat', count: 3, name: 'kitty' }

Sollte Ihnen sehr helfen, alle Sandbox-Dinge für Node verwenden es :), aber Sie können es direkt verwenden :)

Sie können sich jsapp.us ansehen, in dem JS in einer Sandbox ausgeführt wird, und dies dann der Welt als kleinen Testserver zur Verfügung stellen.Hier ist das jsapp.us github repo .

Besuchen Sie auch # node.js und stellen Sie Fragen für aschnellere Antwort :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top