Cargo actual:Index > Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes

Actualizado:03-21Fuente: consolidación de la red
Advertisement

Facebook cuenta con la aplicación nativa más descargado de todos los tiempos. También tiene tal vez el sitio web para móviles más visitado de todos los tiempos, con cerca de 350 millones de usuarios y cada vez mayor de los teléfonos con funciones para los teléfonos inteligentes más inteligentes. Está disponible en todas partes. La compañía comenzó a trabajar en soluciones móviles en 2006 y desde entonces ha crecido con los tiempos, utilizando las herramientas disponibles para ellos sobre la marcha, desde m.sites e interfaces táctiles WebKit a ahora el precipicio de HTML5. Credo de Facebook, o en realidad una manera de hacer que la vida de sus desarrolladores más fácil, es escribir una vez y ejecutar en todas partes. Este ha sido casi imposible.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Facebook móvil se basa en la tecnología de navegador. Como gerente de ingeniería de Facebook, Dave Fetterman dice en la transcripción a continuación, el navegador es lo que Facebook es bueno, cómo llegó hasta el punto de que es de ahora y cómo se va a repetir en el futuro de la telefonía móvil. Vamos a tocar en la mañana por el futuro, pero asegúrese de leer la presentación de Fetterman en la conferencia de desarrolladores f8 de Facebook a continuación, ya que informará lo que vamos a explorar mañana por la mañana. Realmente, ¿cómo diseñar Facebook para todas aquellas plataformas y dispositivos?

Lo que está abajo es una transcripción directa con las fotos de la presentación f8 de Fetterman. Un par de cosas a tener en cuenta:

Facebook móvil tiene su columna vertebral en su sitio web para móviles. Todo lo que se construye en las aplicaciones nativas en realidad proviene de la web móvil. Piense en la forma en PhoneGap envuelve un sitio web basado en navegador y así es como Facebook abordó el problema. Y algo más.

HTML5 es el futuro. La cuarta página se mete en cómo todo esto la historia está llevando Facebook a un precipicio de cambio con HTML5 y el llamado Proyecto Spartan.

También tenga en cuenta que Fetterman habla rápido y ocasionalmente jura. Él es el clásico Facebook ingeniero: tipo de joven, bastante descarado y muy confiado. La transcripción es tan fiel a sus palabras reales como sea posible.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Cambio Normas móvil a través de los últimos cinco años

Tomamos un enfoque basado en HTML extrema a este. Así que vamos a entrar en cómo hacemos esto para que puedas aprender cómo HTML5 es la salida de muchos de estos problemas.

Porque, en realidad no era siempre así para nosotros. Hemos tenido los mismos problemas móviles que ustedes tienen. Estamos siguiendo el mismo ecosistema móvil que ustedes están siguiendo para desarrollar para sus usuarios.

Así, tenemos los mismos problemas de desarrollo multiplataforma que usted tiene y que esperamos que pueda aprender un poco de nosotros. Por lo tanto, hemos estado aprendiendo a lidiar con estos problemas con lo que llamamos "FaceWeb" y el aprendizaje de una nueva oportunidad para salir de este que está emergiendo en estos momentos llamados HTML5.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Así, en 2006, la construcción de una presencia móvil significaba que había una cubierta WAP que se basa en una aplicación HTML con SMS y todo eso. Pero, como todos ustedes saben, móviles cambió radicalmente en 2007. ¿Qué sucedió entonces?

[Multitud] - El iPhone.

¡El iphone! Excelente. ¿Qué más pasó en 2007, tal vez revelando en la habitación que usted está sentado en este momento?

[Multitud] - La Plataforma.

Sí, la API de Facebook Plataforma. Entonces, ¿qué cambió para nosotros es que hemos tenido que desarrollar una segunda experiencia de usuario para el iPhone. Un ordenador en el bolsillo, que ya no era malísimo. Por lo tanto, podría tener Javascript, CSS y un modelo de interacción realmente rico. Además hubo Facebook para BlackBerry, Facebook para el teléfono de Windows, para Nokia, para Samsung, para todo el mundo ya está disponible a través de la API de Facebook.

¿Qué hay de 2008? ¿Cuál fue la gran cosa que sucedió en 2008?

[Multitud] - Ummm ... Android?

Voy a fingir que oí la iPhone App Store. Lo que la mayoría de los desarrolladores no se dan cuenta es que la primera versión del iPhone, que podría construir sitios web, pero la App Store no estaba disponible para más tarde. Así, en 2008, la App Store nos permite construir Facebook para iPhone. El buque insignia, la vanguardia, la mejor justificación de Facebook. Basado de la API, de la misma manera que ustedes están la creación de aplicaciones de la API ahora.

En el año 2009, lo que ha cambiado en el 2009?

[Multitud] Ummm ... Android?

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Android, sí. Voy a fingir que oí Android. Android es el nuevo jugador en 2009 y comenzó realmente despegar. Entonces, de repente, tenemos todos estos usuarios en todos estos dispositivos que utilizan Facebook móvil en el amplio arco iris de encantadoras experiencias diferentes a través de Android, iPhone, Windows, la Web. Eso fue estupendo desde la perspectiva del usuario. ¿Qué es una mierda? El medio ambiente para mis desarrolladores, esencialmente. Usted tiene los viejos tiempos. Tienes cuatro plataformas diferentes de construir algo esencialmente. Usted quiere construir para todos esos grupos? Usted va a tener que construir el lechón cuatro veces. Luego están todas las características - grupos, ofertas, el nuevo perfil. Todas estas cosas y la matriz tiene muy mal. Por lo tanto, tenemos que construir cosas cuatro veces lo que significa que el código se pone lento. El código se hace viejo. Hay diferentes versiones de la paridad y las cosas simplemente no funcionan juntos, que hace que sea muy difícil para una empresa en rápido movimiento como Facebook.

Página siguiente: Fetterman describe cómo Facebook reconcilió M.Sites y Touch

Cómo no escribir la misma funcionalidad Cuatro Tiempos

Así que, ¿cómo podemos resolver este problema? Si tenemos alguna oportunidad en la solución de este problema de la construcción de cuatro veces las cosas ... si usted quiere construir una vez, la Web es probablemente su mejor tiro. Así que, en su día nos dijo que tenemos dos sitios web, ¿no? Tenemos touch.facebook.com y tenemos m.facebook.com. Diferentes raíces completas de expediente y que decidieron lo que iba a ser, a dónde va a ir sobre la base de su teléfono? Bueno, no fue tan complicado. Si usted fuera un teléfono Webkit, básicamente redireccionado hacia tacto, si no, tienes M. Si tuvieras CSS, oye, que podría lanzar que en allí, sin costo alguno, no hay problema. Así, han tenido esta conjetura y tipo de redirección de enfoque para la Web.

Eso realmente no resuelve el problema de que todos tengan la experiencia y optimizado para su teléfono. Incluso cosas como las imágenes en línea dentro de la pantalla, a través de CSS y versiones, que es realmente problemático cuando usted que aquellos a mi derecha son salvos, los que a mi izquierda son condenados. Esa es la forma en que se va a trabajar. Así que, si teníamos alguna posibilidad de unificar estos dos grupos y la construcción de algo una vez para la web móvil, tuvimos que resolver este problema.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Entonces, ¿qué tenemos que hacer? WebKit no era suficiente, tenía que tener un mejor nivel de granularidad. ¿Cuál es la diferencia entre un sitio web móvil habilitado Javascript desde un sitio web para móviles con Javascript activado no? Realmente, Javascript está allí para permitir ciertos tipos de pantalla y cierto tipo de interacción, principalmente AJAX. Pero, cuando se piensa en el controlador --- lo que es Grupos? ¿Cuál es la fuente de noticias? ¿Qué es el mensaje? Esas son la clase de la misma cosa y que en realidad no tiene que ser escrito en dos ocasiones. Así que en su día se tenía que utilizar soluciones ineficientes como Netbiscuits que eran opacas. Usted podría hacer algo de XSL post-procesado pero no se puede procesar posteriormente su camino a la buena Javascript, no funciona. Con Webkit empezaste a obtener poli-rellenos y modernizador y todo esto una gran cosa. Pero, en realidad se necesitaba una manera de escribir el código de una vez.

Mejora progresiva

Aquí es lo que hicimos.

La piedra angular de esta está detectando lo que el teléfono va a ser capaz de hacer. Capacidades, entonces usted puede comenzar la experiencia adecuada. Ustedes oído hablar de WURFL en absoluto? Archivo de recursos universal inalámbrico? Este es uno de los proyectos por ahí que los intentos de asignar un usuario a un conjunto de agente de usuario de las capacidades. Ya sabes, ¿cuál es el tamaño de su pantalla? ¿Cuál es tu JS? ¿Puede hacer galletas? Estos son todos, los problemas desagradables perniciosos que necesitan ser resueltos. Y el uso del agente, como ustedes pueden ver, no hace el trabajo. Por lo tanto, se necesita una base de datos abierta para los fabricantes y los ciudadanos interesados ​​para ser capaz de decirle lo que está arriba. Patrocinamos este proyecto y este proyecto sigue evolucionando como un sitio de datos de código abierto.

Así, una vez que tenga estas capacidades que realmente tiene que averiguar qué hacer con ellos. Un botón en Facebook no es igual que es HTML o este bloque de Javascript o algo así. Lo que usted quiere para la página principal es tener sus compositores hacen un botón que hace algo. Por lo tanto, ustedes dicen lo que realmente queremos es un botón. Ustedes calcular internamente lo que debe ser la representación. Si se trata de un teléfono de gama baja tal vez es sólo hacia arriba formulario de envío. Es si es un teléfono de gama media con CSS, tal vez usted podría capa CSS allí. Pero si es un teléfono de gama alta que realmente quieres una experiencia de estilo AJAX. Por lo tanto, esta técnica fue iniciada por alguien como Yahoo anteproyecto. Así que, en vez de decir en el nivel superior que este va a ser un buen sitio y esto va a ser un sitio de gama baja, cada componente dentro de esa marcado declarativo que hace que la pantalla se decida lo que es capaz de hacer. Y se componen juntos para formar la experiencia ideal para ese teléfono. Esta técnica se llama mejora progresiva.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Así que, en realidad esto nos llevó al punto donde hemos sido capaces de escribir una vez y ejecutar en cualquier lugar a través de la Web. Y, sabes, la Web parece factible. Usted puede hacer eso en sus navegadores de escritorio ya. Mobile está llegando al punto en el que realmente puede hacer esto usando un sistema como este. Pero, ustedes son probablemente aburrido sobre la audición de la Web, a pesar del hecho de que un usuario de iPhone y Android del usuario, quien sea, puede ir utilizar un sitio web para móviles de manera competente porque todos tienen buenos navegadores, todo el mundo quiere una característica iPhone.

Así, hemos sido capaces de eliminar a uno de nuestros cuatro pilas y llegar al punto donde tuvimos tres y eso es genial. Pero, por supuesto, todo el mundo quiere y característica iPhone. Quieren sus cosas para que parezca y el iPhone, para llevar a cabo como un iPhone, a sentir como un iPhone, todo eso. Así, podríamos escribirlo en Objective-C, lo que teníamos que hacer, o podríamos pensar en esto. Bien, entonces, ¿qué pasa con el feed de noticias de Facebook es realmente iPhone-y? Usted tiene la parte superior, tiene la cabecera fija, lo tienes que rinde directamente de caché, todo lo que una gran cosa. Pero en realidad, si nos fijamos en el contenido de la publicación, que se parece mucho al igual que un servicio de noticias m.site. Realmente no hay mucho que es diferente, no hay nada tan especial acerca de cualquier pila particular. Por lo tanto, eso significa que usted tiene que escribir tres veces para hacer exactamente la misma mierda.

Más loco que ustedes pueden imaginar

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Así que, ¿qué pasa si ponemos el navegador real dentro de la aplicación? Esa es la idea loca. La forma en que lo hicimos fue aún más loco que ustedes podrían imaginar. Por lo tanto, hay algunos móviles, el navegador va a ser capaz de trabajar para todos estos teléfonos? Bueno, tres de ellos tienen muy buenas implementaciones WebKit. Así que, pensamos, ¿qué pasa si ponemos un sitio habilitado Webkit dentro de la aplicación y justo hacia arriba hacen que el trabajo cosa? Simplemente, olvídalo, vamos a encontrar la manera de hacer que funcione.

Por lo tanto, esto es realmente una locura. Esto no es sólo la construcción de Javascript que se ejecuta en el cliente y utiliza la parte de atrás como un portal de datos. En realidad, estamos hacia arriba inyectar el sitio dentro de estas aplicaciones. No es tan simple como conseguir una vista de interfaz de usuario web o lo que sea. Tienes que tener un poco de interactividad entre ese punto de vista Web y el contenedor, pero ¿y si pudiéramos usar hacia arriba el sitio? Es casi lo mismo, ¿no? Por lo tanto, esto es lo que hicimos y es una especie de locura.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Por lo tanto, quiero decirte lo que aprendimos de esto. Por supuesto, la unificación de la web en los recipientes de contenido es difícil y es algo que tendríamos que superar pero, apostando por el navegador es sólo un poco de algo que hacemos en Facebook. Es lo que somos buenos y es nuestra última oportunidad para moverse rápido y estamos apostando con fuerza en la web porque es lo que nos trajo hasta aquí (f8) hoy. Así que, básicamente, queremos poner el navegador en el Facebook para iPhone.

Iterar Daily

Entonces, ¿qué cierva esto nos llegar? Esto significa que usted puede enviar a diario. Usted no tiene que esperar a la aprobación tienda de aplicaciones, que apesta, y usted no tiene que esperar a que todos los usuarios para descargar esta versión en el binario que tiene que ser enviado más a su teléfono. Eso es una mierda. Usted puede enviar todos los días. Usted puede romper todos los días, pero se puede enviar todos los días.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Usted puede enviar en un lenguaje fácil también. Su equipo de desarrollo Web, iPhone equipo y su equipo de Android no tienen que estar separados. Todos ellos son la misma gente, todos ellos están resolviendo el mismo problema. Y usted puede enviar una vez en lugar de tener que enviar cuatro veces.

¿Entonces, cómo funciona esto? Proyecto FaceWeb es una extensión de esta idea mejora progresiva. Así, en lugar del teléfono diciendo que estoy de renderizado para un navegador WebKit, enviamos un agente que dice que va a ser la representación de una vista de WebKit WebKit interfaz de usuario dentro de la aplicación para el iPhone. Por lo tanto, lo que tiene que hacer es detectar que, el estilo de un código web para hacer ese trabajo, construir un puente entre las cosas que usted quiere escribir para interactuar de forma nativa con Objective-C, por ejemplo en Javascript, luego construir páginas HTML para Facebok en el iPhone. Así, a construir pegote nativa mucho más pequeño en lugar de tener que construir una y otra vez.

La respuesta: Wrap Facebook Mobile dentro de la aplicación nativa

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Así que, ¿cómo esta técnica funciona? En esencia, el usuario pulsa el icono de noticias en su iPhone. Si esta cosa está habilitado para esta tecnología FaceWeb, no va a asignar a un controlador Web nativa, será lugar mapear hasta cierto punto final en nuestro servidor que literalmente dice sirve m.facebook.com/home.php. No puede simplemente atascar esa cosa ahí. No puede simplemente tener la vista Web. Usted realmente tiene que saber cómo se va a interactuar con el Objective-C. Por lo tanto, usted tiene que devolver un esqueleto JS que especifica la "capa de llamadas de extracción plataforma" requerido para ese marco. Luego de hacer otro viaje y carga el home.php y el Javascript.

Es un poco de trabajo extra y que afecta a algunas cosas. Pero, lo que eso significa es que podemos escribir una página web básica m.facebook.com y utilizar Javascript para hacer que funcione en grandes teléfonos y utilizar esta capa de abstracción de interpretar Javascript en su caso hacer las cosas nativas como por ejemplo abrir la cámara para algo como la aplicación para iPhone.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Entonces, ¿qué tipo de cosas tienen que ir a través de este puente? Cosas obvias como sensores y datos. Si usted desea obtener su GPS, el acelerómetro o la orientación de bloqueo o algunas de estas cosas, algunos están disponibles en HTML5, pero muchos de ellos no lo son. Por lo tanto, usted tiene que ser capaz de hacer algunas de estas preguntas de respuesta de sensores esque. Dependiendo de la pantalla y lo agresivo que quiere ser, tiene que ser capaz de hacer que las cosas se ven como el iPhone. Mira como Android. Y, usted no puede hacer esas cosas con el navegador. Se podría, en teoría, hacer esto con JS sino mirar exactamente el mismo que vas a tener que utilizar una llamada nativa. Y, además, hay elementos a Facebook para iPhone que realmente no queremos pasar a HTML. Por ejemplo, el flujo de la cámara. Usted abre la cámara, se toma una fotografía, lo pones en tu álbum o seleccionar algo de su galería y un subtítulo y subirlo. Eso es mucho que ver en un navegador, pero es fácil de hacer en nativo. Así que, si quieres inmersión profunda en cualquier flujo nativos existentes, es un puente que vamos a tener que cruzar también.

Puntos Adherido: Web vs Diseño y Diseño Nativo.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


PhoneGap ya ha resuelto este primer problema realmente muy bien en todo, incluso más que el iPhone. Los problemas comunes que se ejecutará en si usted hace esto es; uno - la objeción, no se ve natal. En segundo lugar uno es que no se va a sentir nativo y tercero es que no es lo suficientemente rápido. Esto es lo que encontramos en cada una de estas cosas.

El mandato inicial era, bueno, ustedes quiere hacer esto en HTML, bien, yo no quiero ser capaz de decir la diferencia entre Objective-C de noticias prestados y feed de noticias HTML representado. En realidad, esto no terminó siendo un gran problema en términos de efectos visuales. La web y la aplicación realmente funcionan muy bien juntos. Cuando enviamos esto a los usuarios que no había ninguna queja excepto por uno que me pareció bastante gracioso.

Hubo un "app" para iPad Facebook que era amable para Facebook, Es simplemente envolvió la m.site. Algunos usuarios dijeron, bueno, Facebook está copiando la aplicación que envuelve su m.site como parte de su aplicación de Facebook para iPhone. ¿Qué estábamos porque estábamos en realidad sólo utilizamos nuestra m.site y que fue genial. Así, el hecho de que no se ve nativo, que no tienen realmente un gran problema con eso.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Sin embargo, hay algunas cosas que hay que tener en cuenta. Posición fija y desplazamiento desbordamiento eran obviamente un gran problema. Android 2.1 y por debajo, no hay posibilidad. (Android) 2.2, que está empezando a trabajar y iOS 5, gracias a Dios, se ha comprometido a poner en práctica todo esto. Por lo tanto, ustedes están en una mejor posición ahora para comenzar este camino de lo que hubiera sido hace 10 meses. Regradients CSS son un problema, las imágenes son un problema y [hay un par de trampas más].

Web v Feel Nativo:. Desplazamiento

Otro problema es que no se siente nativo y casi siempre este medio de desplazamiento. En realidad, no quiere decir, oye, quiero deslizar eliminar. Eso es como, pfft, a quién le importa? Casi siempre va a haber algo en la interactividad y el desplazamiento. Algo que el código nativo hace muy bien mediante el uso de la GPU y como pipelining toda esa mierda, pero es algo que es realmente difícil de hacer en HTML. Así, cuando la gente dice que no se siente nativo, que van a estar hablando de desplazamiento.

A veces tienes que poner en práctica el desplazamiento. iScroll funciona bastante bien, Hewitts está trabajando en una biblioteca que es bastante bueno. Así, que tipo de tener que aplazar a una buena biblioteca desplazamiento JS. Y, asegúrese de hacer cosas como cambiar el tamaño de tus imágenes, ya que una vez fue la responsabilidad de la GPU es ahora responsabilidad del navegador. Y, hay todas estas pequeñas cosas que simplemente no están documentadas, como el teclado que muestra y no se cierra en Android y iPhone. Hay sólo un montón de pequeñas cosas que se cuecen en el sistema que están siendo fijo.

El tema de la velocidad

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


El final y este es el malo de verdad es que simplemente no es lo suficientemente rápido. Si usted ve una desaceleración en su Facebook para la aplicación iPhone, significa que estamos trabajando a través de lo que hacer un trabajo de aplicación basada en HTML de Facebook para el iPhone y ha sido muy duro.

Así, una táctica obviamente pre-cache a la mierda de esta cosa. Si prestáis un servicio de noticias, iniciar y va a conseguir el contenido de todas esas historias porque cuando el usuario pulsa eso, usted quiere tener el contenido listo para ellos. Cache sus puntos de vista Web. Si eso no funciona, lo mejor que puedes hacer es simplemente engañar a los usuarios. Por lo menos tiene contenido parece estar listo. Rellene el esqueleto prestados y luego poner en ese contenido almacenado en caché y luego abajo, ir a buscar su nuevo contenido. Por lo menos los usuarios sienten que hay algo allí porque eso es por lo general lo que su respuesta inicial es. Una pantalla en blanco no se va a cortar.

Así, trampas en PERF significa que usted va a utilizar una gran cantidad de JS. Usted ya no es sólo carga de datos, que está cargando marcado pre-renderizados, que es mucho más caro. Y cosas como caché HTTP y el caché de la aplicación, que dicen que trabajan dentro de visitas Web UI, pero a menudo no lo hacen. Por lo tanto, usted tiene que tener mucho cuidado con las promesas que se hacen aquí.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Tomando El Enfoque En todas partes

Pero, esto funcionó muy bien que hemos dicho que vamos a poner la aplicación Android en este tren del partido también. Así, hemos sido realmente capaz de escribir algo como la fuente de noticias m.site vez. Cada vez que se cambia una historia de noticias o añade una historia de noticias o añadir comentarios y gusto o lo que sea, que va a aparecer en m.site de gama baja, m.site de gama alta, de Facebook para iPhone y Facebook para Android al día siguiente, o cuando empujamos, que en realidad es bastante impresionante.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


Así, hicimos hacer esto. Ahora tenemos los elementos de la experiencia de Facebook, tu navegador se ejecuta dentro de todo. Especialmente las cosas más volátil, las cosas que se basa menos en un cierto tipo de pantalla, la materia que va a ser evolucionando y cambiando tanto, al igual que el servicio de noticias o su perfil de línea de tiempo, estamos haciendo esta recta en HTML. Ahí es donde el máximo beneficio es.

Siguiente: Cómo HTML5 está liderando Facebook en una nueva dirección

¿Cómo ha evolucionado: Dirección a HTML5

Así que, ¿cuál es la historia de esta? Por lo tanto, para iOS 3.4 y 3.5 que realmente hicimos. Su fuente de noticias y su feed perfil realidad están siendo provienen de la m.site. Por lo tanto, eso significa que si los cambios m.site y añade una característica, ustedes lo entiendo. Si el m.site se rompe, se rompe todo. Hay aspectos positivos y negativos allí. Para ser lanzado en iOS 4.0, solicitudes, notificaciones y de búsqueda, este contenido list-style que no requiere acceso nativo muy específico, que va a estar basada en FaceWeb también. Android 1.6 y 1.7 siguen el mismo palo. La retroalimentación y el diseño han sido bastante grande, pero los errores han sido bastante horrible sin embargo. Porque cuando la versión de su Javascript y las cosas van mal, usted está atando su futuro a la Web real funcionando perfectamente todo el tiempo, que es algo que obviamente movemos rápido en muy a menudo.

Por lo tanto, la misión es operar de una base de código y adaptarse a todos los navegadores en el mundo. Esto suena como algo que Facebook diría, esto es en realidad parte de la bandera de batalla de HTML5.

HTML5 es probablemente la manera que deberíamos haber hecho. Esta es la forma de llegar a hacerlo ahora porque HTML5 ha cambiado tanto bajo nuestros pies. El primer intento de construir una aplicación híbrida, había ciertas cosas en HTML5 que aún no estaban listas y nos dijeron que lo olvide, vamos a seguir adelante. El primer intento de postergar ciertas cosas a la representación nativa y manejo nativo que realmente podría ser mejor manejado por algo así como HTML5 y con la tecnología en el navegador - acceso al dispositivo, buenos marcos nativos y la aplicación y el código de visualización.

¿Qué ha cambiado entre entonces y ahora que podemos aprovechar y que ustedes pueden, que va a estar empezando por este camino híbrido, podríamos ser capaces de aprovechar en el corto plazo?

Acceso al dispositivo

Por lo tanto, el acceso al dispositivo. Cosas tan simples como hacer las cosas que son privilegiados dentro del dispositivo. Geo-localización, conectividad de red, obviamente muy grande para el almacenamiento en caché, cosas como la cámara y sus contactos, lo que ha cambiado? Bueno, geo-localización ha sido realmente muy bueno por un tiempo. Esto sin duda podría ser HTML5 y eso es lo que utilizamos dentro hacia fuera m.facebook.com Lugares base y ofertas cosas. La conectividad de red está emergiendo y que está llegando al punto en el que puede confiar en los nuevos navegadores que hacerlo a través de HTML5. Cámara y contactos, porque son tan salvajemente diferente, todavía se especifican muchas de esas cosas. Pero, si quieres ver una lista general y empezar preguntando al sistema para una respuesta y conseguir una respuesta de vuelta, PhoneGap.com realidad tiene un montón de estas cosas y han sido capaces de este poli-relleno para hacer un montón de este trabajo. Por lo tanto, este es el problema más fácil pero es la más avanzada hacia la obtención de resolver, sobre todo desde que hemos empezado a trabajar en esta aplicación híbrida.

Historia

Hay ciertos marcos de desarrollo que son nativas. Ser capaz de gestionar su historia, que es raro. Debido a que su historia dentro de una pila nativa es muy diferente de un historial del navegador. Los navegadores son muy idiosincrásica sobre cómo manejan la historia y es un modelo muy diferente. Gestión de la Historia, el almacenamiento del lado del cliente es, obviamente, el grande y roscado. Con rosca, si ustedes han desarrollado en iOS, usted sabe que hay ciertas cosas que hay que respetar. Eso es cierto en Javascript también. Por lo tanto, se necesita una buena manera de encontrar la manera de obtener otros hilos que hacer su trabajo y hacerlo de una manera multiplataforma.

Cómo Facebook móvil fue diseñado para escribir una vez, ejecuta en todas partes


HTML5 está surgiendo normas para hacer todo esto desaparece también. Gestión de la historia, hay algunas cosas buenas en HTML5 viene. IndexDB y almacenamiento del lado del cliente es cada vez mucho mejor así. Cosas como WebWorkers, si lo hiciéramos estas cosas de nuevo, que sería capaz de hacerlo en HTML5.

¿Puede una aplicación se construirá Ahora utilizando sólo la tecnología Web?

Por último, creo que lo importante es, ¿podría construir el edificio de aplicación hacia arriba tecnologías de la Web? Las tecnologías Web actuales están utilizando, que está utilizando. Desplazamiento, refrescar, las cosas rápido, estas son cosas que hemos tenido que aplazar a un controlador nativo de una manera torpe. Pero, el desplazamiento, gracias a Apple y iOS 5 para prometiendo que van a realizar el desplazamiento, desplazamiento posición de desbordamiento fijo, este podría ser el problema del pasado. Cabeceras posición fija y buen desplazamiento es un sello distintivo de lo que la gente ha llegado a considerar como una aplicación nativa, pero es un problema que puede ser resuelto por las buenas JS ahora gracias a estos nuevos marcos.

Creo que la comida para llevar más importante es que los motores de renderizado JS solo han conseguido mucho mejor en el último año y medio. V8 y Nitro han demostrado que se puede construir aplicaciones de JS, del lado del cliente en toda regla en lugar de utilizar Objective-C o Android Java y que se ejecutará y los usuarios les va a encantar. Cosas como Netflix han hecho muy productiva ya.

Por lo tanto, la aparición y la inversión de los fabricantes de grandes navegadores que están haciendo muy, muy buenas cosas JS, que es finalmente dando sus frutos. Y si ustedes están empezando en este camino, usted se sorprenderá de lo mucho éxito creo que realmente podría tener.

Mueva las cosas, romper cosas, arreglar las cosas rápidas

Por lo tanto, hemos estado siguiendo lo que estaba disponible para nosotros a lo largo de la carretera para nosotros desde el año 2006 en Facebook móvil. Si lo mejor que podemos hacer es XHTML, bien. Si tenemos un muy buen navegador que utiliza JS y CSS bien. Si somos capaces de construir y aplicación para el iPhone y una aplicación para Android, que es grande. Pero, lo que está cambiando debajo de nosotros ahora es en realidad la aparición de esta estándares HTML5 y los navegadores que implementan estas normas. Especialmente en torno al acceso del dispositivo y la capacidad de escribir aplicaciones enteramente en Javascript. Hemos visto un montón de beneficios para escribir algo en HTML. Todos nuestros desarrolladores son buenos en HTML. Sólo unos pocos de ellos son realmente buenos en Objective-C y Android. Somos capaces de hacer que nuestros desarrolladores web lo mismo que nuestros desarrolladores del lado del cliente en algunos aspectos.

Ser capaz de escribir una vez hoy y enviarlo mañana? Eso es algo que Facebook es realmente bueno y que nos gusta hacer y que está en el centro de poder actuar con rapidez. Muévete rápido tiene una tercera cláusula implícita - moverse rápido, romper cosas, y arreglar las cosas rápidas. Eso es muy difícil de hacer si ya ha enviado su binario a Apple o Android y tienen que descargar otra versión de la misma.