vue3.0 加载json的方法(非ajax)


Posted in Javascript onOctober 26, 2020

问题

加载json一定要用ajax的方式吗?

最近学习vue3.0,在实现一个功能的时候发现一个问题——
写代码的时候,需要的json太长、太多,和代码放在一起太混乱。看代码总有翻来翻去,又没有“折叠”功能。
那么能不能把json放在一个单独的文件里面保存,然后在加载进来呢?

查了半天的资料,发现那叫一个折腾呀,各种各样的配置不说,最后还需要用ajax的方式来加载。这个,这么简单的事情为啥要这么折腾?

你看引用组件是不是很方便?一行代码就搞定了。就像下面这样:

import nfInput from '@/components/nf-form-item.vue'

等等,组件??

思路

上面提到了组件,那么能不能把json放在组件里面保存,然后“页面”里加载组件获取组件里面的json呢?各种尝试之后发现是可以的,涉及几个关键字:

组件、属性、data、生命周期、$emit、watch

  1. 先定义一个组件,设置一个属性,这个属性不是接收数据的,而是返回json的一个桥梁。
  2. 然后在组件的data里面定义需要的json。
  3. 在组件的 created 事件里面通过 $emit 向父级提交data(json)数据
  4. 由于是setup先执行,组件的created后执行,所以需要在setup里面设置watch监听属性的变化,得到需要的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) // 返回给调用者,vue3.0的改变的地方
 }
}
</script>

.vue文件

<template>
 <nfJosn v-model="title" /> <!--就是那个传说中的组件,使用v-model 传递数据-->
</template>

<script>
import { ref, watch } from 'vue' // 需要watch进行监听
import nfJosn from '@/components/nf-getjson.vue' // 加载组件

export default {
 name: 'FormHelp',
 components: {
  nfHelp
 },
 setup () {
  const value = ref('') // 定义一个属性
  const json = ref({}) // 接收返回的json
  // 监听属性变化
  watch(() => value.value, json => {
   json.value = json
  })

  return {
   value,
   json
  }
 }
}
</script>

基本就是这样,不需要加事件。

小结

以上代码在vue3.0 beta版里测试通过。
也不知道有没有人用过这种方式,也不知道这种方式是否符合vue的规范,总之先这么用着,不行再改。

以上就是vue3.0 加载json的方法(非ajax)的详细内容,更多关于vue3.0 加载json的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
一个加密JavaScript的开源工具PACKER2.0.2
Nov 04 Javascript
XHTML下,JS浮动代码失效的问题
Nov 12 Javascript
javascript跨域的4种方法和原理详解
Apr 08 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
Nov 19 Javascript
jquery通过扩展select控件实现支持enter或focus选择的方法
Nov 19 Javascript
分享javascript实现的冒泡排序代码并优化
Jun 05 Javascript
详解Javascript百度地图接口开发文档中的类和方法
Feb 07 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
Feb 22 Javascript
微信小程序实现评论功能
Nov 28 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
Vue实现开心消消乐游戏算法
Oct 22 Javascript
如何通过JS实现转码与解码
Feb 21 Javascript
Vue+Element自定义纵向表格表头教程
Oct 26 #Javascript
vue3.0 的 Composition API 的使用示例
Oct 26 #Javascript
Vue中用JSON实现刷新界面不影响倒计时
Oct 26 #Javascript
jQuery实现简单评论区功能
Oct 26 #jQuery
vue.js封装switch开关组件的操作
Oct 26 #Javascript
Node.js利用Express实现用户注册登陆功能(推荐)
Oct 26 #Javascript
vue render函数动态加载img的src路径操作
Oct 26 #Javascript
You might like
基于mysql的论坛(2)
2006/10/09 PHP
利用PHP制作简单的内容采集器的代码
2007/11/28 PHP
setcookie中Cannot modify header information-headers already sent by错误的解决方法详解
2013/05/08 PHP
详解WordPress开发中过滤属性以及Sql语句的函数使用
2015/12/25 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
用ADODB.Stream转换
2007/01/22 Javascript
图片自动缩小的js代码,用以防止图片撑破页面
2007/03/12 Javascript
比较全面的event对像在IE与FF中的区别 推荐
2009/09/21 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
iframe如何动态创建及释放其所占内存
2014/09/03 Javascript
javascript关于open.window子页面执行完成后刷新父页面的问题分析
2015/04/27 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
JS实现点击表头表格自动排序(含数字、字符串、日期)
2017/01/22 Javascript
js实现打地鼠小游戏
2017/02/13 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
BootStrap表单宽度设置方法
2017/03/10 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
JavaScript之iterable_动力节点Java学院整理
2017/06/29 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
JavaScript实现快速排序的方法分析
2018/01/10 Javascript
vue-cli 引入、配置axios的方法
2018/05/08 Javascript
vue表单自定义校验规则介绍
2018/08/28 Javascript
[50:28]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 Newbee vs KG
2018/04/01 DOTA
Python+tkinter模拟“记住我”自动登录实例代码
2018/01/16 Python
修改python plot折线图的坐标轴刻度方法
2018/12/13 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
static关键字的用法
2013/10/07 面试题
《姥姥的剪纸》教学反思
2014/02/25 职场文书
酒店辞职书怎么写
2015/02/26 职场文书
公司更名通知函
2015/04/24 职场文书
肖申克救赎观后感
2015/06/02 职场文书
加强党性修养心得体会
2016/01/21 职场文书
教师理论学习心得体会
2016/01/21 职场文书
六年级作文之自救
2019/12/19 职场文书
Windows 11要来了?微软文档揭示Win11太阳谷 / Win10有两个不同版本
2021/11/21 数码科技
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL