2010-12-02 17 views
33

Estoy buscando un analizador JavaScript YAML que convierta el YAML en algo utilizable dentro de una página HTML. He intentado esta versión en Github (https://github.com/visionmedia/js-yaml) pero parece que solo funciona con node.jsJavaScript YAML Parser

¿Qué bibliotecas debo usar y hay algún código de muestra para mostrar el uso del ejemplo?

+3

¿Qué bibliotecas has probado? No nos hagas adivinar. Además, ¿qué problemas tienes con ellos? –

+1

Recientemente he estado buscando una biblioteca de JavaScript YAML, también. Y después de una larga búsqueda, he llegado a la conclusión de que actualmente no hay ninguno. Al menos no hay uno razonable que admita todas las características actuales. js-yaml parece ser el "mejor", pero requiere node.js, que no quería usar en mi caso. Véase también http://stackoverflow.com/questions/428364/pure-javascript-yaml-library-that-supports-both-dump-and-load – RoToRa

+0

Véase también: http://stackoverflow.com/questions/428364/ pure-javascript-yaml-library-that-supports-both-dump-and-load – dreftymac

Respuesta

25

JS-YAML El analizador funciona en el navegador. Aquí está la demo en línea http://nodeca.github.com/js-yaml/. Sin embargo, su objetivo principal es node.js, y la versión del navegador se realizó simplemente por diversión :)

+0

Cuando cargo la versión del navegador en Safari 5.1, obtengo "TypeError: 'undefined' no es un objeto" en el lado derecho, por lo que no es claro qué tan bien funciona –

+2

Aparentemente hay algunos [problemas con Safari y algunas versiones de IE] (https://github.com/nodeca/js-yaml/issues/21) - me funcionó en Firefox reciente. Parece que los problemas son solo el típico Javascript en varios tipos de navegadores más antiguos (por ejemplo, Array.isArray no está implementado en Safari/IE). –

+0

@AlexDupuy sí, su primera plataforma de destino es node.js. Hay algunas cuñas de navegador, pero no todas. – Vitaly

24

disculpa por responder una publicación anterior, pero me encontré con el mismo problema que tú.

Ninguno de los analizadores Javascript YAML disponibles satisfizo mis necesidades por lo que he desarrollado mi propia: Está disponible aquí: http://code.google.com/p/javascript-yaml-parser/

espero que ayude a alguien :)

Cumps, Diogo

+0

+1 Genial. ¡Tendré que probarlo tan pronto como pueda! – RoToRa

+2

+1. ¿Qué características no encontraste en js-yaml? https://github.com/visionmedia/js-yaml (Por cierto, parece que alguien ha bifurcado js-yaml, y ha agregado soporte para literales de cadenas, https://github.com/mcantelon/js-yaml/commit/ a09a560413526c1dfc984b08513b7630a0e72613) – KajMagnus

+1

(O era JS-yaml la dependencia de (??) en Node.js que le impidió a usarlo) – KajMagnus

20

Aquí hay uno que encontré. No estoy seguro de la cantidad de especificaciones que cumple, pero se ajustaba a mis necesidades.

https://github.com/jeremyfa/yaml.js

+1

Esta debería ser la respuesta aceptada, ya que es libre de dependencia, razonablemente pequeña y funciona, al menos en todos mis archivos. –

+1

Actualización: ambos http://nodeca.github.com/js-yaml/ (respuesta aceptada) y https://github.com/jeremyfa/yaml.js (esta respuesta) parecen funcionar y tienen las características @FloLedermann describe (a menos que necesite las comprobaciones de esquema 'js/function'). El primero - la respuesta aceptada - actualmente tiene actividad más reciente y más estrellas. –

+2

JS-YAML parece que los mantenedores no lo intentan para el uso del navegador. Lo leí como "evitar, evitar". Se dicen a sí mismos: no esperen soporte o soluciones. –

3

js-yaml funciona bien en Safari, Chrome y Firefox en OSX. Aquí hay un ejemplo:

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr"> 
<head> 
    <meta http-equiv="content-type" content="text/html; charset=utf-8" /> 
    <title>Test js-yaml</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
    <script src="./js-yaml/dist/js-yaml.min.js"></script> 
    <script type="text/javascript"> 

     // YAML string to Javascript object 
     var obj = jsyaml.load('greeting: hello\nname: world'); 
     console.log(obj); 

     // YAML file to Javascript object 
     $.get('https://raw.githubusercontent.com/nodeca/js-yaml/c50f9936bd1e99d64a54d30400e377f4fda401c5/benchmark/samples/document_application2.yaml', function(data) { 
      var obj = jsyaml.load(data); 
      console.log(obj); 
     }); 

     // Huge YAML file (7.2 MB) to Javascript object 
     $.get('https://raw.githubusercontent.com/nodeca/js-yaml/master/benchmark/samples/document_huge.yaml', function(data) { 
      var obj = jsyaml.load(data); 
      console.log(obj); 
     }); 

    </script> 
</head> 
<body> 
<h1>Test js-yaml</h1> 
<p><a href="https://github.com/nodeca/js-yaml">https://github.com/nodeca/js-yaml</a></p> 
</body> 
</html>