1. 程式人生 > 實用技巧 >JS-YAML -YAML 1.2 JavaScript解析器/編寫器

JS-YAML -YAML 1.2 JavaScript解析器/編寫器

下載 JS-YAML -YAML 1.2 JavaScript解析器/編寫器
JS-YAML -YAML 1.2 JavaScript解析器/編寫器 線上演示 這是YAML的實現,YAML是一種對人友好的資料 序列化的語言。它一開始是作為PyYAML埠的 完全重寫從零開始。現在它非常快,並且支援1.2規範。 安裝 js的YAML模組

npm install js-yaml

CLI可執行 如果你想從CLI檢查你的YAML檔案,全域性安裝js-yaml:

npm install -g js-yaml

使用

usage: js-yaml [-h] [-v] [-c] [-t] file

Positional arguments:
  file           File with YAML document(s)

Optional arguments:
  -h, --help     Show this help message and exit.
  -v, --version  Show program's version number and exit.
  -c, --compact  Display errors in compact mode
  -t, --trace    Show stack trace on error

為瀏覽器繫結的YAML庫 & lt; !——esprima只需要!!js /函式——比; & lt;指令碼src = " esprima.js "祝辭& lt; / script> & lt;指令碼src = " js-yaml.min.js "祝辭& lt; / script> & lt;指令碼type = " text / javascript祝辭 var doc = jsyaml。負載(“問候:你好\ nname:世界”); & lt; / script> 瀏覽器支援主要用於線上演示。如果你發現任何錯誤-感覺 免費傳送拉請求與修復。還要注意的是,IE和其他老瀏覽器 執行需要es5墊片。 注: 我們沒有資源來支援browserified版本。別指望會是這樣 很好的測試。如果出現問題,不要指望快速修復。 ! !預設情況下,js/函式在瀏覽器捆綁包中不起作用。如果你真的需要 首先載入esprima解析器(通過amd或直接)。 ! !bin在瀏覽器中會返回陣列,因為瀏覽器不支援 js緩衝區和增加緩衝區墊片是完全沒用的實踐。 API 這裡我們介紹了最有用的方法。如果你需要高階細節(建立 您自己的標記),請參閱wiki和 更多的例子 資訊。 const yaml = require('js-yaml'); const fs = require('fs'); //獲取文件,或在錯誤時丟擲異常 嘗試{ const doc = yaml.safeLoad(fs.readFileSync('/home/ixti/example)yml, use utf8)); console.log (doc); } catch (e) { console.log (e); } safeLoad (string [, options]) 推薦的載入方式。將字串解析為單個YAML文件。返回一個 普通物件、字串、數字、null或未定義,或在出錯時丟擲YAMLException異常。預設情況下, 不支援regexps、函式和未定義。這種方法對於不可信的資料是安全的。 選項: 檔名(預設:null) -用作檔案路徑的字串 錯誤/警告訊息。 onWarning(預設值:null) -在警告訊息上呼叫的函式。 對於每個警告,載入器將使用一個YAMLException例項來呼叫此函式。 schema (default: DEFAULT_SAFE_SCHEMA)——指定要使用的架構。 FAILSAFE_SCHEMA -僅字串、陣列和純物件: http://www.yaml.org/spec/1.2/spec.html#id2802346 JSON_SCHEMA—所有json支援的型別: http://www.yaml.org/spec/1.2/spec.html#id2803231 CORE_SCHEMA—與JSON_SCHEMA相同: http://www.yaml.org/spec/1.2/spec.html#id2804923 DEFAULT_SAFE_SCHEMA—所有支援的YAML型別,沒有不安全的型別 (! !js /未定義,! !js / regexp和! ! js /函式): http://yaml.org/type/ DEFAULT_FULL_SCHEMA—所有支援的YAML型別。 json(預設:false)—與json的相容性。解析行為。如果為真,則對映中的重複鍵將覆蓋值,而不是丟擲錯誤。 注意:這個函式不理解多文件源,它丟擲 在這些例外。 注意:JS-YAML不支援特定於模式的標記解析限制。 因此,在YAML規範中並沒有嚴格定義JSON模式。 它允許數字在任何符號,使用Null和Null作為Null,等等。 核心模式也沒有這樣的限制。它允許用二進位制表示整數。 載入(字串[,選項]) 小心使用不可信的來源。與safeLoad()相同,但使用 DEFAULT_FULL_SCHEMA預設-新增一些javascript特定型別: ! !js /函式,! !js / regexp和! ! js /未定義。對於不可信的訊息來源,您 必須另外驗證物件結構以避免注入: const untrusted_code = '"toString": !<”功能(){very_evil_thing();}”'; //我只是在轉換字串,有什麼問題嗎? 需要(“js-yaml”).load (untrusted_code) +” safeLoadAll(字串[,迭代器][,選項]) 與safeLoad()相同,但是可以理解多文件源。適用於 如果指定的話,迭代器將返回每個文件,或返回文件陣列。 const yaml = require('js-yaml'); yaml。safeLoadAll(data, function (doc)) { console.log (doc); }); loadAll(字串[,迭代器][,選項]) 與safeLoadAll()相同,但預設使用DEFAULT_FULL_SCHEMA。 safeDump(物件[,選項]) 將物件序列化為YAML文件。使用DEFAULT_SAFE_SCHEMA,所以它會使用 如果試圖轉儲regexp或函式,則丟擲異常。然而,您可以 通過將skipInvalid選項設定為true來禁用異常。 選項: 縮排(預設為2)-縮排使用的寬度(空格)。 noArrayIndent(預設:false) -當為真時,將不會給陣列元素新增縮排級別 skipInvalid(預設:false)——不要丟擲無效型別(如函式) ),並跳過具有此類型別的對和單值。 流級別(預設值:-1)——指定何時進行切換時的巢狀級別 集合的塊到流樣式。-1表示到處都是block style style - "tag" =>“住在豬圈裡勒”地圖。每個標籤可能有自己的一組樣式。 schema (default: DEFAULT_SAFE_SCHEMA)指定要使用的模式。 sortKeys(預設為false)——如果為真,則在轉儲YAML時對鍵進行排序。如果一個 函式,使用函式對鍵進行排序。 線寬(預設值:80)-設定最大線寬。 noRefs(預設為false)——如果為真,不要將重複的物件轉換為引用 noCompatMode(預設:false) -如果為真,不要嘗試與舊版本相容 yaml的版本。目前:不要引用“是”、“否”等,這是YAML 1.1所要求的 如果是真流序列將被壓縮,省略a、b之間的空格。'[a,b]',省略了key: value之間的空格,並引用了key。如。'{"a":b}'在對漂亮的URL查詢params使用yaml時很有用,因為空格是%-編碼的。 下表顯示了可選的樣式。“規範”, “二進位制”…)可用於每個標籤(例如。! !空,! !int……)。Yaml 輸出顯示在右側=>(預設設定)或->

!!null
  "canonical"   -> "~"
  "lowercase"   => "null"
  "uppercase"   -> "NULL"
  "camelcase"   -> "Null"

!!int
  "binary"      -> "0b1", "0b101010", "0b1110001111010"
  "octal"       -> "01", "052", "016172"
  "decimal"     => "1", "42", "7290"
  "hexadecimal" -> "0x1", "0x2A", "0x1C7A"

!!bool
  "lowercase"   => "true", "false"
  "uppercase"   -> "TRUE", "FALSE"
  "camelcase"   -> "True", "False"

!!float
  "lowercase"   => ".nan", '.inf'
  "uppercase"   -> ".NAN", '.INF'
  "camelcase"   -> ".NaN", '.Inf'

例子: safeDump(物件,{ “風格”:{ ”! !null': 'canonical' //轉儲null為~ }, 'sortKeys': true //對物件鍵進行排序 }); 轉儲(物件[,選項]) 與safeDump()相同,但沒有限制(預設使用DEFAULT_FULL_SCHEMA)。 支援YAML型別 標準YAML標記和相應的JavaScipt型別的列表。另請參閱 YAML標記討論和 YAML庫型別。

!!null ''                   # null
!!bool 'yes'                # bool
!!int '3...'                # number
!!float '3.14...'           # number
!!binary '...base64...'     # buffer
!!timestamp 'YYYY-...'      # date
!!omap [ ... ]              # array of key-value pairs
!!pairs [ ... ]             # array or array pairs
!!set { ... }               # array of objects with given keys and null values
!!str '...'                 # string
!!seq [ ... ]               # array
!!map { ... }               # object

JavaScript-specific標籤

!!js/regexp /pattern/gim            # RegExp
!!js/undefined ''                   # Undefined
!!js/function 'function () {...}'   # Function

警告 注意,在JS-YAML中使用陣列或物件作為鍵。JS不允許物件 方法將陣列字串化(通過呼叫toString()方法) 現在開始新增它們。 --- 嗎?[foo, bar] : -巴茲 嗎?{foo: bar} : -巴茲 - - - - - -巴茲 {“foo, bar”:“記者”,“(物件物件)”:[“記者”,“記者”]} 此外,還不支援讀取隱式塊對映鍵上的屬性。 因此,無法載入以下YAML文件。 和錨foo: foo:酒吧 *錨:複製鑰匙 記者:蝙蝠 *錨:複製鑰匙 js-yaml為企業 可用的一部分Tidelift訂閱 js-yaml和數千個其他包的維護者正在與Tidelift合作,為用於構建應用程式的開放原始碼依賴項提供商業支援和維護。節省時間、降低風險並改善程式碼的執行狀況,同時向您所使用的依賴項的維護者支付費用。學習更多的知識。本文轉載於:http://www.diyabc.com/frontweb/news33292.html