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 清空File控件的路径值
Jul 08 Javascript
Javascript+CSS实现影像卷帘效果思路及代码
Oct 20 Javascript
javascript制作坦克大战全纪录(1)
Nov 27 Javascript
JS组件Bootstrap Table使用方法详解
Feb 02 Javascript
JS判断字符串字节数并截取长度的方法
Mar 05 Javascript
jquery对象访问是什么及使用方法介绍
May 03 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
Jun 07 Javascript
vue2.0构建单页应用最佳实战
Apr 01 Javascript
Vue.js实现的计算器功能完整示例
Jul 11 Javascript
JS随机密码生成算法
Sep 23 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
Aug 04 Javascript
WebPack工具运行原理及入门教程
Dec 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使用header()输出图片缓存实例
2014/12/09 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
如何在Laravel之外使用illuminate组件详解
2020/09/20 PHP
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
浅谈javascript中的作用域
2012/04/07 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
jquery 选择器引擎sizzle浅析
2013/02/06 Javascript
jquery的相对父元素和相对文档定位示例代码
2013/08/02 Javascript
JAVASCRIPT函数作用域和提前声明 分享
2013/08/22 Javascript
js事件绑定快捷键以ctrl+k为例
2014/09/30 Javascript
AngularJS 避繁就简的路由
2016/07/01 Javascript
AngularJS利用Controller完成URL跳转
2016/08/09 Javascript
详解ECMAScript6入门--Class对象
2017/04/27 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
vue-scroller记录滚动位置的示例代码
2018/01/17 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
详解从Vue-router到html5的pushState
2018/07/21 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
简单的通用表达式求10乘阶示例
2014/03/03 Python
在Windows服务器下用Apache和mod_wsgi配置Python应用的教程
2015/05/06 Python
Python实现队列的方法
2015/05/26 Python
Python中表示字符串的三种方法
2017/09/06 Python
TensorFlow实现卷积神经网络CNN
2018/03/09 Python
Python django框架输入汉字,数字,字符生成二维码实现详解
2019/09/24 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
2020/03/24 Python
用 Python 制作地球仪的方法
2020/04/24 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
建筑毕业生自我鉴定
2013/10/18 职场文书
承办会议欢迎词
2014/01/17 职场文书
喝酒驾驶检讨书
2014/10/01 职场文书
汽车4S店销售经理岗位职责
2015/04/02 职场文书
电力工程合作意向书
2015/05/11 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
2019企业文化管理制度范本!
2019/08/06 职场文书