vue3.0 加載json的方法(非ajax)
問題
加載json一定要用ajax的方式嗎?
最近學習vue3.0,在實現(xiàn)一個功能的時候發(fā)現(xiàn)一個問題——寫代碼的時候,需要的json太長、太多,和代碼放在一起太混亂。看代碼總有翻來翻去,又沒有“折疊”功能。那么能不能把json放在一個單獨的文件里面保存,然后在加載進來呢?
查了半天的資料,發(fā)現(xiàn)那叫一個折騰呀,各種各樣的配置不說,最后還需要用ajax的方式來加載。這個,這么簡單的事情為啥要這么折騰?
你看引用組件是不是很方便?一行代碼就搞定了。就像下面這樣:
import nfInput from ’@/components/nf-form-item.vue’
等等,組件??
思路
上面提到了組件,那么能不能把json放在組件里面保存,然后“頁面”里加載組件獲取組件里面的json呢?各種嘗試之后發(fā)現(xiàn)是可以的,涉及幾個關(guān)鍵字:
組件、屬性、data、生命周期、$emit、watch
先定義一個組件,設(shè)置一個屬性,這個屬性不是接收數(shù)據(jù)的,而是返回json的一個橋梁。 然后在組件的data里面定義需要的json。 在組件的 created 事件里面通過 $emit 向父級提交data(json)數(shù)據(jù) 由于是setup先執(zhí)行,組件的created后執(zhí)行,所以需要在setup里面設(shè)置watch監(jiān)聽屬性的變化,得到需要的json后賦值給需要的對象。當然,json可以直接寫在created里面,不過還是感覺放在data里面更適合一些。
解決
定義組件
<template> <span :value='modelValue'></span> <!--使用span--></template><script>export default { name: ’nf-getjson’, props: { modelValue: Object // 屬性名稱需要寫modelValue 方便一些 }, data: function () { return { //需要的json json: { controlId: 101, controlType: 100, colName: ’abc’, isClear: true, disabled: false, required: true, class: ’1’, title: ’1’, rows: 5, cols: 50, placeholder: ’請輸入’, readonly: false } } }, created: function () { this.$emit(’update:modelValue’, this.json) // 返回給調(diào)用者,vue3.0的改變的地方 }}</script>
.vue文件
<template> <nfJosn v-model='title' /> <!--就是那個傳說中的組件,使用v-model 傳遞數(shù)據(jù)--></template><script>import { ref, watch } from ’vue’ // 需要watch進行監(jiān)聽import nfJosn from ’@/components/nf-getjson.vue’ // 加載組件export default { name: ’FormHelp’, components: { nfHelp }, setup () { const value = ref(’’) // 定義一個屬性 const json = ref({}) // 接收返回的json // 監(jiān)聽屬性變化 watch(() => value.value, json => { json.value = json }) return { value, json } }}</script>
基本就是這樣,不需要加事件。
小結(jié)
以上代碼在vue3.0 beta版里測試通過。也不知道有沒有人用過這種方式,也不知道這種方式是否符合vue的規(guī)范,總之先這么用著,不行再改。
以上就是vue3.0 加載json的方法(非ajax)的詳細內(nèi)容,更多關(guān)于vue3.0 加載json的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. PHP正則表達式函數(shù)preg_replace用法實例分析2. 一個 2 年 Android 開發(fā)者的 18 條忠告3. vue使用moment如何將時間戳轉(zhuǎn)為標準日期時間格式4. js select支持手動輸入功能實現(xiàn)代碼5. Android 實現(xiàn)徹底退出自己APP 并殺掉所有相關(guān)的進程6. Android studio 解決logcat無過濾工具欄的操作7. 什么是Python變量作用域8. vue-drag-chart 拖動/縮放圖表組件的實例代碼9. Spring的異常重試框架Spring Retry簡單配置操作10. Vue實現(xiàn)仿iPhone懸浮球的示例代碼
