Una delle limitazioni di JS che mi infastidisce di più è la scarsa capacità di isolare l'esecuzione del codice.Isola l'esecuzione di JavaScript
Voglio essere in grado di controllare il contesto in cui viene eseguito il codice, qualcosa che ottenere un effetto simile a quello che Script.createContext
& Script.runInContext
a node.js fa (nodo sta usando il legame con il motore V8, così posso' t emulare la loro implementazione).
Ecco l'qualche ragione per cui voglio isolare l'esecuzione di codice:
- isolare il codice dal namespace globale (l'oggetto
window
e anche laDOM
), ma ho comunque bisogno di essere funzione di riferimento in grado chiamare gli oggetti esposti nel contesto che devono essere eseguiti in sincrono, il che rende quasi impossibile l'uso di unWebWorker
per l'isolamento. - Isolando l'esecuzione del codice, sarebbe anche possibile rilasciare le sue definizioni quando non più necessarie (gestione della memoria).
So che si può ottenere l'esecuzione in parte isolato da uno script di caricamento in un iframe
, questo approccio è però molto pesante e utilizza una memoria molto per una seconda istanza del DOM che non è necessario per quello che sto cercando fare.
Ho bisogno di condividere la definizione del costruttore e anche le definizioni di oggetto che sono condivise tra i contenitori/contesti isolati che entrambi devono essere eseguiti sul thread principale dell'interfaccia utente. Principalmente voglio utilizzare questi contenitori isolati per ospitare plug-in/moduli (mini-applicazioni) che presentano e aggiornano dinamicamente un viewport chiamando i comandi di disegno sul proprio oggetto Context2D
.
Se questi contenitori non sono in esecuzione sul thread principale dell'interfaccia utente che wold essere dolorosamente difficile delega chiamate come ctx.measureText()
e ctx.drawImage()
sarebbe tutto inutile come oggetti immagine non possono essere creati in un Worker
.
Qualcuno sa delle specifiche future che renderebbero questo possibile?
Esistono API (nascoste) sul lato del browser che potrebbero essere utilizzate per raggiungere questo obiettivo?
Sarebbe meglio utilizzare una macchina virtuale come Gart Dart VM di Goggle e anche implementare la mia base di codice corrente? Il mio codice attuale è leggermente superiore a 20 000 righe di codice.
sarebbe meglio re-implementare il quadro in *
Avete un * problema * esistente che deve essere risolto in questo modo? [IIABDFI] (http://acronyms.thefreedictionary.com/IIABDFI). – Ryan
D'accordo con il commento, ma downvote è un po 'inutile. – Starx
@minitech In realtà ho un problema con la mancanza di sandox (che è una parola migliore per ciò che ho descritto sopra) nel runtime del browser, perché sto cercando di ottenere un'architettura di plugin per la mia piattaforma lato client, che è scritto in JavaScript e utilizza il runtime del browser per tale. La piattaforma è generica e il suo scopo principale è ospitare l'ambiente per caricare e controllare in modo dinamico plug-in/moduli/mini-applicazioni che fornisce alla piattaforma funzionalità aggiuntive. – Raweden