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字符串的各种格式的转换 ToString,Format
Aug 08 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
Jun 11 Javascript
jQuery $命名冲突解决方案汇总
Nov 13 Javascript
wangEditor编辑器失去焦点后仍然可以在原位置插入图片分析
May 06 Javascript
用JavaScript实现页面重定向功能的教程
Jun 04 Javascript
javascript 闭包详解
Jul 02 Javascript
BootStrap初学者对弹出框和进度条的使用感觉
Jun 27 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
JavaScript实现电灯开关小案例
Mar 30 Javascript
JavaScript中layim之整合右键菜单的示例代码
Feb 06 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 access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
基于jsTree的无限级树JSON数据的转换代码
2010/07/27 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
js history对象简单实现返回和前进
2013/10/30 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
详解angular2实现ng2-router 路由和嵌套路由
2017/03/24 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
nodejs 图片预览和上传的示例代码
2017/09/30 NodeJs
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
2020/04/14 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
[03:52]DOTA2英雄基础教程 酒仙
2013/12/23 DOTA
[05:17]DOTA2誓师:今天我们在这里 明天TI4等我!
2014/03/26 DOTA
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
[01:10:16]DOTA2上海特级锦标赛B组资格赛#2 Fnatic VS Spirit第一局
2016/02/27 DOTA
深入浅析python定时杀进程
2016/06/06 Python
ubuntu环境下python虚拟环境的安装过程
2018/01/07 Python
python中正则表达式的使用方法
2018/02/25 Python
通过Py2exe将自己的python程序打包成.exe/.app的方法
2018/05/26 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
python 的 scapy库,实现网卡收发包的例子
2019/07/23 Python
python 一维二维插值实例
2020/04/22 Python
基于CSS3实现的漂亮Menu菜单效果代码
2015/09/10 HTML / CSS
售后求职信范文
2014/03/15 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
幼儿园大班毕业评语
2014/12/31 职场文书
不同意离婚答辩状
2015/05/22 职场文书
负责培养人意见
2015/06/05 职场文书
个人工作总结怎么写?
2019/04/09 职场文书
发言稿之优秀教师篇
2019/09/26 职场文书