開發背景:
專案開發過程中遇到展示json的場景,且json檔案體積過大,小則幾百kb,也嘗試了已經開源的部分元件,但由於節點過多,渲染速度過慢,無法使用,已有專案技術選型為vue,無法再使用react相關技術,所以考慮自己開發一款。
開發過程中參考了react-json-view部分api,元件實現的功能比較基礎,但滿足基本業務場景,也提供了一些可選配置。
即使載入1M左右的json文時,結合deep深度限制,也能實現秒開的速度
元件壓所過後體積只有15.7kb,開啟gzip壓縮後只有4.74kb,
1.檢視示例
git clone https://github.com/zhaoxuhui1122/vue-json-view.git
npm i
npm run dev
或 直接雙擊index.html
複製程式碼
2.在專案中使用
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>
複製程式碼
3.可選配置說明
屬性 | 說明 | 型別 | 預設值 |
---|---|---|---|
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等引數並不會隨之發生改變
4.關於二次開發
可根據自己專案的實際情況進行如下開發
- 主題定製:根據需求定製主題,不同的主題名稱會給元件定義對應的class名稱,根據class重新定義樣式即可,可參見專案內的主題配置
- 修改icon樣式:專案內icon使用的svg,支援三種樣式,可自定義更換或者刪除不需要的svg檔案,以降低打包體積
- ...