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 相关文章推荐
High Performance JavaScript(高性能JavaScript)读书笔记分析
May 05 Javascript
document.documentElement的一些使用技巧
Apr 18 Javascript
JS和JQ的event对象区别分析
Nov 24 Javascript
推荐一款jQuery插件模板
Jan 09 Javascript
Javascript中arguments和arguments.callee的区别浅析
Apr 24 Javascript
jQuery幻灯片特效代码分享--鼠标滑过按钮时切换(2)
Nov 18 Javascript
使用canvas实现仿新浪微博头像截取上传功能
Sep 02 Javascript
详解javascript数组去重问题
Nov 06 Javascript
简单实现js浮动框
Dec 13 Javascript
JS中call和apply函数用法实例分析
Jun 20 Javascript
vue实现组件之间传值功能示例
Jul 13 Javascript
jQuery中$原理实例分析
Aug 13 jQuery
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 foreach 参数强制类型转换的问题
2010/12/10 PHP
php创建多级目录的方法
2015/03/24 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP自定义序列化接口Serializable用法分析
2017/12/29 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
javascript 数组学习资料收集
2010/04/11 Javascript
jQuery)扩展jQuery系列之一 模拟alert,confirm(一)
2010/12/04 Javascript
js不完美解决click和dblclick事件冲突问题
2012/07/16 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
js判断上传文件类型判断FileUpload文件类型代码
2014/05/20 Javascript
JavaScript中this关键词的使用技巧、工作原理以及注意事项
2014/05/20 Javascript
JS模式之单例模式基本用法
2015/06/30 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
jquery的父、子、兄弟节点查找,节点的子节点循环方法
2016/12/07 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
基于Bootstrap table组件实现多层表头的实例代码
2017/09/07 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
Js经典案例的实例代码
2018/05/10 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
JS关闭子窗口并且刷新上一个窗口的实现示例
2020/03/10 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
解决pycharm py文件运行后停止按钮变成了灰色的问题
2018/11/29 Python
Python基于Logistic回归建模计算某银行在降低贷款拖欠率的数据示例
2019/01/23 Python
Python使用Socket实现简单聊天程序
2020/02/28 Python
python 安装移动复制第三方库操作
2020/07/13 Python
python实现数学模型(插值、拟合和微分方程)
2020/11/13 Python
应聘文员自荐信范文
2014/03/11 职场文书
求职意向书
2014/04/01 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
2014年数学教师工作总结
2014/12/03 职场文书
军训个人总结
2015/03/03 职场文书
教师节主题班会教案
2015/08/17 职场文书
golang 语言中错误处理机制
2021/08/30 Golang
【TED出品】天梯非主流开心游1700 划水骑士
2022/03/31 魔兽争霸