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 相关文章推荐
把html页面的部分内容保存成新的html文件的jquery代码
Nov 12 Javascript
jquery自动完成插件(autocomplete)应用之PHP版
Dec 15 Javascript
js null,undefined,字符串小结
Aug 21 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
JavaScript中的small()方法使用详解
Jun 08 Javascript
javascript中setTimeout使用指南
Jul 26 Javascript
快速学习jQuery插件 Form表单插件使用方法
Dec 01 Javascript
js实现可控制左右方向的无缝滚动效果
May 29 Javascript
详解vue-cil和webpack中本地静态图片的路径问题解决方案
Sep 27 Javascript
javascript 开发之网页兼容各种浏览器
Sep 28 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
Apr 24 Javascript
vue通过video.js解决m3u8视频播放格式的方法
Jul 30 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连接mysql是否成功的代码分享
2014/01/24 PHP
Yii调试SQL的常用方法
2014/07/09 PHP
Php连接及读取和写入mysql数据库的常用代码
2014/08/11 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP实现的服务器一致性hash分布算法示例
2018/08/09 PHP
PHP常量DIRECTORY_SEPARATOR原理及用法解析
2020/11/10 PHP
jquery 插件实现图片延迟加载效果代码
2010/02/06 Javascript
JQuery Ajax通过Handler访问外部XML数据的代码
2010/06/01 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
2012/08/24 Javascript
js操作iframe兼容各种主流浏览器示例代码
2013/07/22 Javascript
基于JavaScript怎么实现让歌词滚动播放
2015/11/03 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
vue脚手架及vue-router基本使用
2018/04/09 Javascript
Node.js使用Angular简单示例
2018/05/11 Javascript
使用wxapp-img-loader自定义组件实现微信小程序图片预加载功能
2018/10/18 Javascript
JS module的导出和导入的实现代码
2019/02/25 Javascript
搭建vscode+vue环境的详细教程
2020/08/31 Javascript
详解Python中的变量及其命名和打印
2016/03/11 Python
Python random模块用法解析及简单示例
2017/12/18 Python
使用Python进行体育竞技分析(预测球队成绩)
2019/05/16 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
2020/05/03 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
2020/11/13 Python
python subprocess pipe 实时输出日志的操作
2020/12/05 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
CSS3制作hover下划线动画
2017/03/27 HTML / CSS
英国在线定做百叶窗网站:Make My Blinds
2020/08/17 全球购物
教师实习自我鉴定
2013/12/18 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
王老吉广告词
2014/03/20 职场文书
毕业生就业意向书
2014/04/01 职场文书
银行青年文明号事迹材料
2014/05/31 职场文书
个人整改措施书面材料
2014/10/24 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python