Una de las limitaciones de JS que más me molesta es la poca capacidad de aislar la ejecución del código.Aislar la ejecución de JavaScript
Quiero ser capaz de controlar el contexto en el que se ejecuta el código, algo que logran un efecto similar a lo que Script.createContext
& Script.runInContext
en Node.js qué (nodo es el uso de la unión al motor V8, así que puedo' emular su implementación).
Aquí es el alguna razón por la que quiero para aislar la ejecución de código:
- aislar el código del espacio de nombres global (el objeto
window
y también laDOM
), pero sin embargo tienen que ser función de referencia capaces invoca objetos expuestos en el contexto que deben ejecutarse sincrónicamente, lo que hace que sea casi imposible utilizar unWebWorker
para el aislamiento. - Al aislar la ejecución del código, también es posible desasignar sus definiciones cuando ya no sea necesario (gestión de la memoria).
Sé que uno puede lograr la ejecución en parte aisladas por el guión de carga en un iframe
, sin embargo este enfoque es muy pesado y utiliza una memoria mucho para una segunda instancia del DOM que no se necesita para lo que intento que hacer.
Necesito compartir la definición del constructor y también las definiciones del objeto que se comparten entre los contenedores/contextos aislados que ambos deben ejecutarse en el hilo de la interfaz de usuario principal. Principalmente, quiero utilizar estos contenedores aislados para alojar complementos/módulos (miniaplicaciones) que cada uno presenta y actualiza dinámicamente una ventana gráfica llamando comandos de dibujo en su propio objeto Context2D
.
Si estos contenedores no se están ejecutando en el hilo principal interfaz de usuario que Wold ser dolorosamente difícil de proxy llama como ctx.measureText()
ctx.drawImage()
y sería inútil como todos los objetos de imagen no se pueden crear en un Worker
.
¿Alguien sabe de la especificación futura que haría esto posible?
¿Hay alguna API actual (oculta) del lado del navegador que pueda usarse para lograr esto?
¿Sería mejor utilizar una máquina virtual como Goggle's Dart VM y también volver a implementar mi base de código actual? Mi código base actual es ligeramente superior a 20 000 líneas de código.
sería mejor volver a aplicar el marco en *
¿Tiene un problema * * que deba solucionarse así? [IIABDFI] (http://acronyms.thefreedictionary.com/IIABDFI). – Ryan
Estoy de acuerdo con el comentario, pero el voto a favor es un poco innecesario. – Starx
@minitech Realmente tengo un problema con la falta de sandoxes (que es una mejor palabra para describir lo que describí anteriormente) en el tiempo de ejecución del navegador, debido a que estoy tratando de lograr una arquitectura de complemento para mi plataforma del lado del cliente, que está escrito en JavaScript y utiliza el tiempo de ejecución del navegador para tal. La plataforma es genérica y su propósito principal es hospedar el entorno para cargar y controlar dinámicamente los complementos/módulos/mini-aplicaciones que proporcionan a la plataforma características adicionales. – Raweden