2008-08-18 17 views
19

Con la potencia aumentada de frameworks JavaScript como YUI, JQuery y Prototype, y herramientas de depuración como Firebug, hacer una aplicación completamente en JavaScript del lado del navegador parece una excelente manera de hacer aplicaciones simples como juegos de rompecabezas y calculadoras especializadas.Creación de aplicaciones independientes en JavaScript

¿Hay algún inconveniente en esto aparte de exponer su código fuente? ¿Cómo debe manejar el almacenamiento de datos para este tipo de programa?

Editar: Sí, los engranajes y las cookies se pueden utilizar para el almacenamiento local, pero no se puede acceder fácilmente a los archivos y otros objetos que el usuario ya tenga. Tampoco puede guardar datos en un archivo para un usuario sin tener que invocar alguna característica del navegador, como imprimir en PDF o guardar la página como un archivo.

+1

Estaba trabajando en Palm cuando pregunté esto, y ¿qué presentó Palm a principios de 2009? webOS, un sistema donde todas las aplicaciones fueron escritas en JavaScript. :) –

Respuesta

14

que he escrito varias aplicaciones en JS que incluye una hoja de cálculo.

Al revés:

  • gran lenguaje
  • ciclo de revisión de gestión de código corto
  • manipulación
  • DOM es grande para el diseño de interfaz de usuario
  • clientes en todo el equipo (y el teléfono)

Desventaja:

  • diferencias entre navegadores (especialmente IE) escalabilidad de base
  • código (sin apoyo intrínseco a los espacios de nombres y clases)
  • no hay buenos depuradores (en especial, de nuevo, para IE)
  • rendimiento (a pesar de que un gran progreso tiene hecho con FireFox y Safari)
  • También necesita escribir algún código de servidor.

Conclusión: Adelante. Yo si.

+5

IE8 Developer Tools tiene un buen depurador de JavaScript.Sé IE = PureEvil, pero pensé que lo señalaría. El infierno que ha sido IE está mejorando. – jaywon

1

Gears puede proporcionar el almacenamiento persistente de datos del lado del cliente que necesita. Sin embargo, no hay una manera terriblemente buena de no exponer tu código fuente. Puedes ofuscarlo, pero eso solo ayuda un poco.

He hecho aplicaciones simples como esta para cosas como Sudoku solver.

2

La desventaja de esto sería que estás a merced de que tengan habilitado js. No estoy seguro de que esto sea un gran problema ahora. Prácticamente todos los navegadores son compatibles con js y lo tienen habilitado de forma predeterminada.

Por supuesto, la otra desventaja sería el rendimiento. Usted está otra vez a merced del cliente que maneja todo el trabajo intensivo. Esto también puede no ser tan importante, y dependerá del tipo de aplicación que esté creando.

Nunca he usado Gears, pero parece que vale la pena intentarlo. El plan de copia de seguridad sería ejecutar algún script del lado del servidor a través de ajax que vuelque sus datos en algún lugar.

No completamente del lado del cliente, pero bueno.

5

SproutCore es un framework de aplicaciones totalmente alojado en JavaScript, tomando prestados conceptos particularmente de Cocoa (como KVO) y Ruby on Rails (como el uso de un generador CLI para sus modelos, vistas y controladores). Incluye Prototype, pero crea muchas cosas como controles sofisticados además de eso. Su demostración Photos es posiblemente impresionante (especialmente en Safari 3.1).

Greg ya lo señaló a Gears; Además, HTML 5 vendrá con un medio estandarizado de almacenamiento local. Safari 3.1 incluye una implementación en la que tiene una base de datos SQLite por sitio con máximos de tamaño configurables por el usuario, así como un built-in database browser with SQL querying. Desafortunadamente, pasará mucho tiempo hasta que podamos esperar un amplio soporte de navegador. Hasta entonces, Gears es una alternativa (pero no para Safari ... yet!). Para un almacenamiento más simple, por supuesto siempre hay cookies.

2

Nihilogic (no es mi sitio) hace muchas cosas con Javascript. Incluso tienen varios games que han hecho en Javascript.

También he visto un bonito juego roguelike hecho en Javascript. Lamentablemente, no puedo recordar cómo se llamaba ...

1

Es posible que tenga problemas de rendimiento dado que está completamente a merced del intérprete de JavaScript del cliente. Gears sería una buena forma de almacenamiento de datos, pero no creo que haya penetrado tanto en el mercado. Podrías usar cookies si no eres exigente con ese tipo de cosas.

7

Otra opción para desarrollar juegos o aplicaciones de escritorio simples en JavaScript es Adobe AIR. Puedes construir tu código de aplicación en HTML + JavaScript o usando Flash/Flex o una combinación de ambos. Tiene la ventaja de ser multiplataforma (en realidad, multiplataforma, Linux, OS X y Windows. No solo Windows y OS X).

Diablos, puede ser la única vez en su carrera como desarrollador que puede escribir una página web y SÓLO apuntar a UN navegador.

+1

Desde junio de 2011 Adobe AIR ya no es compatible con Linux. http://blogs.adobe.com/open/2011/06/focusing-on-the-next-linux-client.html – AlexStack

1

Estoy aquí con ScottKoon, Adobe AIR es genial. Hasta ahora, solo he hecho un widget realmente bueno (imho), pero lo hice usando jQuery y Prototype.js, que me impresionaron de manera maravillosa porque no tuve que aprender un modelo de evento completamente nuevo. Adobe AIR es realmente agradable, la huella de memoria no es tan mala, la actualización a una nueva versión está integrada en AIR por lo que es casi automática, y lo mejor de todo es multiplataforma ... incluso tienen una versión alfa para Linux , pero ya funciona bastante bien en mi Eee.

+0

Desde junio de 2011 Adobe AIR ya no es compatible con Linux. http://blogs.adobe.com/open/2011/06/focusing-on-the-next-linux-client.html – AlexStack

0

Dado que de todos modos va a escribir algún código de servidor, tiene sentido mantener el almacenamiento en el servidor para una gran cantidad de dominios (libretas de direcciones, puntuaciones de póker, configuración de interfaz gráfica de usuario, etc.). Para cualquier cosa, el tamaño de lo que obtendrá en Webkit o Gears, probablemente también pueda mantenerlo en su servidor.

La ventaja de mantener en su servidor es doble:

  1. se puede integrar de manera bastante simple como una capa Modelo en un marco típico MVC, y,
  2. Los usuarios obtienen una visión consistente y sin estar atados a su navegador/PC, o en un ambiente menos que ideal (Internet Cafés).

El código de servidor para manejar esto también puede ser bastante trivial, especialmente si está escrito con esta tarea en mente, por lo que no es una gran carga cognitiva.

2

Si desea escribir una aplicación de JavaScript independiente, consulte XULrunner. Es sobre lo que está basado Firefox, pero también está construido para que puedas distribuirlo como un tiempo de ejecución de la aplicación. Escribirás parte de la interfaz en JavaScript y usarás JavaScript para tu código.

1

En lo que respecta a guardar archivos desde una aplicación javascript:

Estoy muy entusiasmado con las posibilidades de las aplicaciones del lado del cliente. Flash 10 introdujo la capacidad de crear archivos para guardar directamente en el navegador. Pensé que era genial, así que construí un componente javascript + flash para ajustar la función de guardado. En este momento sólo funciona para la creación de archivos de texto (vCard, iCal, XML, HTML, CSS, etc.)

  1. Downloadify Home Page
  2. Source Code & Documentation on Github
  3. See It In Use at Starter for jQuery

Busco añadir soporte para archivos que no sean de texto pronto, pero esto es un comienzo.

0

Ir con qooxdoo. Recientemente obtuvieron 1.0, aunque la mayoría de los usuarios dicen que estaba listo para 1.0 al menos dos versiones atrás.

Comparé qooxdoo con YUI y ext, y creo qooxdoo es el camino a seguir para los programadores - YUI no es tan pulido como qooxdoo, desde el punto de vista de un programador y ext tiene un modelo de licencia no tan amigable.

Algunos de los puntos fuertes (para mí) de qooxdoo son:

  • código extremadamente limpio
  • el modelo de programación orientado a objetos mejores que he visto entre los marcos Javascript
  • un widget de la interfaz de usuario muy rica biblioteca

También cuenta con un corrector de prueba para pruebas unitarias, un generador y lector de docs API, un recurso de registro y varias funciones útiles para la depuración, agrupadas bajo algo cal Inspector conducido.

El único inconveniente es que no hay temas listos (algo así como máscaras) para qooxdoo. Pero crear tu propio tema es bastante fácil.

Cuestiones relacionadas