在線示例html
開發背景:vue
項目開發過程當中遇到展現json的場景,且json文件體積過大,小則幾百kb,也嘗試了已經開源的部分組件,但因爲節點過多,渲染速度過慢,沒法使用,已有項目技術選型爲vue,沒法再使用react相關技術,因此考慮本身開發一款。react
開發過程當中參考了react-json-view部分api,組件實現的功能比較基礎,但知足基本業務場景,也提供了一些可選配置。git
即便加載1M左右的json文時,結合deep深度限制,也能實現秒開的速度github
組件壓所事後體積只有15.7kb,開啓gzip壓縮後只有4.74kb,npm
在線示例json
git clone https://github.com/zhaoxuhui1122/vue-json-view.git
npm i
npm run dev
或 直接雙擊index.html
複製代碼
npm i -S vue-json-views // 注意是 views
import jsonView from 'vue-json-views'
或
直接將未編譯的組件複製到項目內(推薦該方式,便於自定義修改)
複製代碼
<template>
<json-view :data="json"/>
</template>
<script>
import jsonView from '@/components/json-view';
export default {
components: {
jsonView
},
data() {
return {
json: { /* json data*/ }
}
}
}
</script>
複製代碼
屬性 | 說明 | 類型 | 默認值 |
---|---|---|---|
json | 傳入的json數據(必填) | Object | - |
closed | 是否摺疊所有 | Boolean | false |
deep | 展開深度,越大渲染速度越慢,建議不超過5 | Number | 3 |
icon-style | 摺疊按鈕樣式,可選值爲square、circle、triangle | String | square |
icon-color | 兩個摺疊按鈕的顏色 | Array | theme=vs-code時,['#c6c6c6', '#c6c6c6'],其餘狀況爲['#747983', '#747983'] |
theme | 可選主題樣式,可選值爲one-dark、vs-code,不選時爲默認的白色主題 | String | - |
font-size | 字體大小,單位px | Number | 14 |
line-height | 行高,單位px | Number | 24 |
注:行高和字體大小不建議選用過大值,由於icon大小、每行的padding-left等參數並不會隨之發生改變api
可根據本身項目的實際狀況進行以下開發bash