JavaScript YAML 解析器

IT技术 javascript html parsing yaml
2021-02-07 11:11:35

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

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

4个回答

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

显然,Safari 和某些版本的 IE存在一些问题——它在最近的 Firefox 中确实对我有用。似乎问题只是跨多个旧浏览器类型的典型 Javascript(例如 Array.isArray 未在 Safari/IE 中实现)。
2021-03-17 11:11:35
当我在 Safari 5.1 中加载浏览器版本时,我只在右侧看到“TypeError: 'undefined' is not an object”——所以不清楚它的工作情况。
2021-03-21 11:11:35
@Vitaly 这仍然是最好的选择吗?你见过在浏览器中进行原生 YAML 解析吗?
2021-03-29 11:11:35
@AlexDupuy 是的,它的第一个目标平台是 node.js。有一些浏览器垫片,但不是全部。
2021-04-02 11:11:35
@Nikos,至少它在演示中有效。但我不知道现实生活中的情况,当你真的需要将 yaml 加载到浏览器时。如果您从服务器接收数据 - 您可以将它们转换为 json/json5/...,这将更加轻松。
2021-04-11 11:11:35

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

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

更新:nodeca.github.com/js-yaml(接受的答案)和github.com/jeremyfa/yaml.js(这个答案)似乎都可以工作并且具有@FloLedermann 描述的功能(除非您需要js/function模式检查)。前者——公认的答案——目前有更多最近的活动和更多的明星。
2021-03-15 11:11:35
JS-YAML 听起来好像维护者不打算将它用于浏览器。我将其读作“避免,避免”。他们自己说 - 不要指望支持或修复。
2021-03-15 11:11:35
这应该是公认的答案,因为它是无依赖性的,相当小并且有效 - 至少在我的所有文件上都是如此。
2021-03-30 11:11:35

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

没有可用的 javascript YAML 解析器满足我的需求,所以我开发了自己的:它可以在这里找到:http : //code.google.com/p/javascript-yaml-parser/

希望它可以帮助某人:)

坎普斯,迪奥戈

+1 很棒。我得尽快试试看!
2021-03-21 11:11:35
这个库不能使用嵌套列表处理我的测试文件,github.com/jeremyfa/yaml.js 上的那个可以正常工作,而且是无依赖的
2021-03-23 11:11:35
+1。你在 js-yaml 中没有发现哪些特性?github.com/visionmedia/js-yaml (顺便说一句,似乎有人已经分叉了 js-yaml,并添加了对字符串文字的支持,github.com/mcantelon/ js-yaml/ commit/...
2021-03-24 11:11:35
@FloLedermann 你能在你的测试文件中添加链接吗?
2021-03-27 11:11:35
(或者是 js-yaml 对 Node.js 的依赖(??)阻止了你使用它?)
2021-04-07 11:11:35

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>