【问题标题】:JavaScript YAML Parser [closed]JavaScript YAML 解析器 [关闭]
【发布时间】:2011-05-19 03:50:08
【问题描述】:

我正在寻找一个 JavaScript YAML 解析器,它将 YAML 转换为 HTML 页面中可用的东西。我在 Github (https://github.com/visionmedia/js-yaml) 上试过这个版本,但它看起来只适用于 node.js

我应该使用哪些库,是否有任何示例代码来显示示例用法?

【问题讨论】:

  • 你尝试过哪些库?不要让我们猜测。另外,您遇到过什么问题?
  • 我最近也在寻找一个 JavaScript YAML 库。经过长时间的搜索,我得出结论,目前没有。至少没有一个合理的支持所有当前功能。 js-yaml 似乎是“最好的”,但它需要 node.js,我不想在我的情况下使用它。另见stackoverflow.com/questions/428364/…

标签: javascript html parsing yaml


【解决方案1】:

JS-YAML 解析器在浏览器中工作。这是一个在线演示:https://nodeca.github.io/js-yaml。不过,它的主要目标是 node.js,而浏览器版本只是为了好玩:)

【讨论】:

  • 当我在 Safari 5.1 中加载浏览器版本时,我只是在右侧看到“TypeError: 'undefined' is not an object” - 所以不清楚它的效果如何。
  • 显然有一些issues with Safari and some versions of IE - 它在最近的 Firefox 中对我有用。似乎问题只是跨多种旧浏览器类型的典型 Javascript(例如 Array.isArray 未在 Safari/IE 中实现)。
  • @AlexDupuy 是的,它的第一个目标平台是 node.js。有一些浏览器垫片,但不是全部。
  • @Vitaly 这仍然是最佳选择吗?你见过在浏览器中进行原生 YAML 解析吗?
  • @Nikos,至少它在演示中有效。但我不知道现实生活中的案例,当你真的需要将 yamls 加载到浏览器时。如果您从服务器接收数据 - 您可以将它们转换为 json/json5/...,这将更加轻松。
【解决方案2】:

这是我找到的一个。不确定这符合多少规范,但它适合我的需求。

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

【讨论】:

  • 这应该是公认的答案,因为它没有依赖关系,相当小并且可以工作 - 至少在我的所有文件上都是这样。
  • 更新:nodeca.github.com/js-yaml(接受的答案)和github.com/jeremyfa/yaml.js(这个答案)似乎都可以工作并且具有@FloLedermann 描述的功能(除非您需要js/function 模式检查)。前者 - 已被接受的答案 - 目前有更多近期活动和更多明星。
  • JS-YAML 听起来维护者不打算将它用于浏览器。我把它读作“避免,避免”。他们自己说 - 不要指望支持或修复。
【解决方案3】:

很抱歉回答了一个旧帖子,但我遇到了和你一样的问题。

没有可用的 javascript YAML 解析器满足我的需求,所以我开发了自己的: 可在此处获得:http://code.google.com/p/javascript-yaml-parser/

希望它可以帮助某人:)

肿块, 迪奥戈

【讨论】:

  • +1 太好了。我必须尽快尝试!
  • +1。您在 js-yaml 中没有找到哪些功能? github.com/visionmedia/js-yaml(顺便说一句,似乎有人分叉了 js-yaml,并增加了对字符串文字的支持,github.com/mcantelon/js-yaml/commit/…
  • (或者是 js-yaml 对 Node.js 的依赖(??)阻止了你使用它?)
  • 这个库不能使用嵌套列表处理我的测试文件,github.com/jeremyfa/yaml.js 的那个可以正常工作,并且也没有依赖关系
  • @FloLedermann 你能把链接添加到你的测试文件吗?
【解决方案4】:

js-yaml 在 OSX 上的 Safari、Chrome 和 Firefox 中运行良好。这是一个示例:

<!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>

【讨论】:

    猜你喜欢
    • 2010-09-22
    • 2023-03-17
    • 2013-01-25
    • 2010-11-10
    • 2013-06-10
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 2023-03-26
    相关资源
    最近更新 更多