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 相关文章推荐
一个原生的用户等级的进度条
Jul 03 Javascript
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
用JQuery实现表格隔行变色和突出显示当前行的代码
Feb 10 Javascript
JavaScript实现的双向跨域插件分享
Jan 31 Javascript
JavaScript禁止复制与粘贴的实现代码
May 16 Javascript
JavaScript代码实现图片循环滚动效果
Mar 19 Javascript
js实现图片缓慢放大缩小效果
Aug 02 Javascript
JS图片延迟加载插件LazyImgv1.0用法分析【附demo源码下载】
Sep 04 Javascript
node.js遍历目录的方法示例
Aug 01 Javascript
小程序登录态管理的方法示例
Nov 13 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 Javascript
vue实现购物车的监听
Apr 20 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
动态生成gif格式的图像要注意?
2006/10/09 PHP
php无限分类且支持输出树状图的详细介绍
2013/06/19 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
JS Array对象入门分析
2008/10/30 Javascript
JS IE和FF兼容性问题汇总
2009/02/09 Javascript
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
JavaScript读取中文cookie时的乱码问题的解决方法
2009/10/14 Javascript
了解jQuery技巧来提高你的代码
2010/01/08 Javascript
EasySlider 基于jQuery功能强大简单易用的滑动门插件
2010/06/11 Javascript
web性能优化之javascript性能调优
2012/12/28 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
Python深入学习之特殊方法与多范式
2014/08/31 Python
python使用正则表达式替换匹配成功的组并输出替换的次数
2017/11/22 Python
Python实现连接两个无规则列表后删除重复元素并升序排序的方法
2018/02/05 Python
对Django中内置的User模型实例详解
2019/08/16 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
Python获取时间戳代码实例
2019/09/24 Python
pycharm修改file type方式
2019/11/19 Python
使用python从三个角度解决josephus问题的方法
2020/03/27 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
美国在线购买空气净化器、除湿器、加湿器网站:AllergyBuyersClub
2021/03/16 全球购物
公司领导推荐信
2013/11/12 职场文书
开学典礼主持词
2014/03/19 职场文书
健康教育评估方案
2014/05/25 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
mysql事务隔离级别详情
2021/10/24 MySQL