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 相关文章推荐
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
javascript 在网页中的运用(asp.net)
Nov 23 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
Dec 02 Javascript
js设置document.domain实现跨域的注意点分析
May 21 Javascript
JavaScript中this详解
Sep 01 Javascript
JavaScript实现页面跳转的几种常用方式
Nov 28 Javascript
简单解析JavaScript中的__proto__属性
May 10 Javascript
JS小数运算出现多为小数问题的解决方法
Jun 02 Javascript
js轮播图无缝滚动效果
Jun 17 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
微信小程序实现语音识别转文字功能及遇到的坑
Aug 02 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 Array交叉表实现代码
2010/08/05 PHP
PHP输出时间差函数代码
2013/01/28 PHP
ThinkPHP跳转页success及error模板实例教程
2014/07/17 PHP
从零开始学YII2框架(四)扩展插件yii2-kartikgii
2014/08/20 PHP
php生成网页桌面快捷方式
2017/05/05 PHP
Thinkphp5 如何隐藏入口文件index.php(URL重写)
2019/10/16 PHP
悄悄用脚本检查你访问过哪些网站的代码
2010/12/04 Javascript
浅析js中取绝对值的2种方法
2013/07/09 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
jquery ui bootstrap 实现自定义风格
2014/11/14 Javascript
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
2014/12/17 Javascript
原生JS实现拖拽图片效果
2020/08/27 Javascript
JavaScript的String字符串对象常用操作总结
2016/05/26 Javascript
有关jQuery中parent()和siblings()的小问题
2016/06/01 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JavaScript使用键盘输入控制实现数字验证功能
2016/08/19 Javascript
Vue js with语句原理及用法解析
2020/09/03 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
Python实现遍历windows所有窗口并输出窗口标题的方法
2015/03/13 Python
python获取当前日期和时间的方法
2015/04/30 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
关于Django外键赋值问题详解
2017/08/13 Python
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
jenkins配置python脚本定时任务过程图解
2019/10/29 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python实现变声器功能(萝莉音御姐音)
2019/12/05 Python
python 类之间的参数传递方式
2019/12/20 Python
python程序如何进行保存
2020/07/03 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
幼儿园中秋节活动方案2013
2014/01/29 职场文书
地球一小时宣传标语
2014/06/24 职场文书
机械机修工岗位职责
2014/08/03 职场文书
六一儿童节标语
2014/10/08 职场文书
2015年人事工作总结范文
2015/04/09 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP