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 相关文章推荐
js 赋值包含单引号双引号问题的解决方法
Feb 26 Javascript
Jquery方式获取iframe页面中的 Dom元素
May 07 Javascript
js控制页面的全屏展示和退出全屏显示的方法
Mar 10 Javascript
jquery ui resize 中border-box的bug修正
Apr 26 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
JS中的phototype详解
Feb 04 Javascript
理解javascript async的用法
Aug 22 Javascript
详解使用React进行组件库开发
Feb 06 Javascript
JS验证输入的是否是数字及保留几位小数问题
May 09 Javascript
vue引入微信sdk 实现分享朋友圈获取地理位置功能
Jul 04 Javascript
vue element自定义表单验证请求后端接口验证
Dec 11 Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 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
php下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php 读取文件乱码问题
2010/02/20 PHP
PHP 伪静态技术原理以及突破原理实现介绍
2013/07/12 PHP
利用浏览器的Javascript控制台调试PHP程序
2014/01/08 PHP
php单例模式的简单实现方法
2016/06/10 PHP
PHP code 验证码生成类定义和简单使用示例
2020/05/27 PHP
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
jQuery插件jRumble实现网页元素抖动
2015/06/05 Javascript
jquery实现先淡出再折叠收起的动画效果
2015/08/07 Javascript
smartcrop.js智能图片裁剪库
2015/10/14 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
浅谈js里面的InttoStr和StrtoInt
2016/06/14 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
Js利用console计算代码运行时间的方法示例
2017/09/24 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
Node.js npm命令运行node.js脚本的方法
2018/10/10 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
vue结合el-upload实现腾讯云视频上传功能
2020/07/01 Javascript
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
通过css3动画和opacity透明度实现呼吸灯效果
2019/08/09 HTML / CSS
Manuka Doctor美国官网:麦卢卡蜂蜜和蜂毒护肤
2016/12/25 全球购物
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
Notino意大利:购买香水和化妆品
2018/11/14 全球购物
函授本科自我鉴定
2013/11/03 职场文书
餐饮业的创业计划书范文
2013/12/26 职场文书
教师个人自我评价范文
2014/04/13 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
交通事故协议书范本
2014/11/18 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
2015年汽车销售员工作总结
2015/07/24 职场文书
《我在为谁工作》:工作的质量往往决定生活的质量
2019/12/27 职场文书
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers
nginx 配置缓存
2022/05/11 Servers