2010-12-02 30 views
33

Bir HTML sayfası içinde kullanılabilir bir hale YAML dönüştüren bir JavaScript YAML ayrıştırıcı arıyorum. Bu sürümü Github'da (https://github.com/visionmedia/js-yaml) denedim ancak yalnızca node.js ile çalıştığı anlaşılıyorJavaScript YAML Ayrıştırıcı

Hangi kütüphaneleri kullanmalıyım ve örnek kullanımını göstermek için örnek kod var mı?

+3

? Bizi tahmin etme. Ayrıca, onlarla ne gibi sorunlarınız oldu? –

+1

Yakın zamanda bir JavaScript YAML libary'i arıyorum. Ve uzun bir aradan sonra, şu anda bir tane olmadığına karar verdim. En azından mevcut tüm özellikleri destekleyen makul bir tane. js-yaml "en iyi" gibi görünüyor, ama benim durumumda kullanmak istemediğim node.js'yi gerektirir. Ayrıca bakınız http://stackoverflow.com/questions/428364/pure-javascript-yaml-library-that-supports-both-dump-and-load – RoToRa

+0

Ayrıca bakınız: http://stackoverflow.com/questions/428364/ pure-javascript-yaml-library-that-destekler-her ikisi de döküm ve yük – dreftymac

cevap

25

JS-YAML ayrıştırıcı tarayıcıda çalışır. İşte çevrimiçi demo http://nodeca.github.com/js-yaml/. Olsa da, birincil hedef node.js olduğunu, ve tarayıcı sürümü sadece eğlence :) İşte

+0

Safari 5.1'de tarayıcı sürümünü yüklediğimde, sadece "TypeError: 'undefined' bir nesne değil, sağ tarafa geçiyorum - bu yüzden değil Bunun ne kadar iyi çalıştığını açıklayın. –

+2

Görünüşe göre, bazı [Safari ve bazı IE sürümleri] sorunları var (https://github.com/nodeca/js-yaml/issues/21) - son Firefox'ta benim için işe yaradı. Sorunlar, birçok eski tarayıcı türünden (tipik olarak Safari/IE'de uygulanmayan Array.isArray) tipik Javascript gibi görünüyor. –

+0

@AlexDupuy evet, ilk hedef platform node.js. Bazı tarayıcı şimleri var, ama hepsi değil. – Vitaly

24
Eski bir yayını yanıtlayan için üzgün

ama sizinle aynı sorunu çarptı. JavaScript YAML ayrıştırıcıları mevcut ait

Yok böylece kendi geliştirdiği ihtiyaçlarını tatmin: Burada mevcuttur: http://code.google.com/p/javascript-yaml-parser/

Umarım yardımcı olur birileri :)

Cumps, Diogo

+0

+1 Harika. Elimden geldiğince bunu denemeliyim! – RoToRa

+2

+1. Js-yaml'de hangi özellikleri bulamadınız? https://github.com/visionmedia/js-yaml (Bu arada, birisi js-yaml'i çağırabildi ve dize hazırlıkları için destek ekledi, https://github.com/mcantelon/js-yaml/commit/ a09a560413526c1dfc984b08513b7630a0e72613) – KajMagnus

+1

(Veya bunu kullanmasını engelleyen js-yaml'ın bağımlılığı (??) Node.js'de miydi?) – KajMagnus

20

için yapıldığını buldum biridir. Bu özelliklerin ne kadarının karşılandığından emin değilim, ancak ihtiyaçlarımı karşıladı.

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

+1

Bu, kabul edilebilir bir yanıttır, çünkü bağımlılık içermez, makul derecede küçüktür ve çalışır - en azından tüm dosyalarımda. –

+1

Güncelleme: hem http://nodeca.github.com/js-yaml/ (kabul edilen cevap) ve https://github.com/jeremyfa/yaml.js (bu yanıt) çalışmakta ve @FloLedermann'ın özelliklerini açıklamaktadır. (js/function' şema kontrollerine ihtiyacınız olmadıkça). Eski - kabul edilen cevap - şu anda daha yeni etkinliklere ve daha fazla yıldıza sahip. –

+2

JS-YAML, denetçilerin tarayıcı kullanımı için tasarlamadıklarına benzer. Bunu "kaçın, kaçın" olarak okudum. Kendileri söylüyorlar - destek veya onarım beklemeyin. –

3

js-yaml OSX'te Safari, Chrome ve Firefox'ta çalışıyor. İşte bir exemple geçerli:

<!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> 
kitaplıklar denedi