Vue3+ElementPlus+Axios 实现从后端请求数据并渲染

项目创建
我们启动vue ui
并创建自定义项目。
点击创建项目,输入项目名称,选择包管理器为npm
,点击下一步

勾选这几个我们需要的插件,点击下一步

我们去掉了
EsLint
插件的选项,避免一些额外的错误提示。
选择vue
版本为3.x
,点击创建项目

项目创建完成后自动进入我们创建的demodemo
项目中,我们点击依赖,点击右上角安装依赖,分别搜索axios
、element-plus
并安装。安装后让如图所示

然后我们点击任务,启动serve

然后我们访问:localhost:8080
就可以看到 router 模式的首页

后端接口准备
我们使用 FastApi 开发了一个后端接口:localhost:2345/test/info

前端代码开发
main.js 配置
最基础的,最重要的配置,在这里我们创建vue
实例,同时对全局进行配置。
我们这个项目需要在main.js
中导入我们需要的axios
,element-plus
模块,以供在视图(组件)中使用,同时配置axios
和启用它。
App.vue 添加新的 router-link

这样一来首页就多了一个链接,供我们跳转。
准备视图(组件)
当点击首页的Demo
链接,通过路由就会将我们写好的视图页面加载到首页router-view
中。
这个页面主要是加载了
element-plus
的基础按钮组件,以确认element-plus
加载成功,最主要的showinfo
方法,它是通过axios
对后端进行请求,将获取到数据更新到infos
这个响应式变量中,实现对页面的动态渲染。
router/index.js 中添加路由
在router/index.js
中,我们要到导入上面我们定义好的视图,同时定义一个路由/demo
,当我们请求这个路由/demo
的时候,视图将会被加载到router-view
中。

路由分析
当我们点击首页的Demo
连接,会跳转到我们在router-link
中定义的to="/demo"
这个URI
上,这时候,通过我们定义的路由就能发现这个路由是指向名为Demo
的视图,然后将名为Demo
的视图渲染到router-view
中。
项目测试
访问/demo
点击主页的Demo
链接,不出意外我们能够看到的页面中的router-view
部分被Demo
视图渲染

我们看到,页面已经成功加载,并且表格已经被默认的数据所渲染。
测试 Demo 的 Script 功能
Demo
视图的Script
中的逻辑为,当点击更新infos
按钮时,出发showinfo
方法的执行,对infos
的数据进行更新,同时页面的el-table
也会进行响应式的更新

到此,我们的前后端分离
Demo
演示结束。
版权声明: 本文为 InfoQ 作者【Python研究所】的原创文章。
原文链接:【http://xie.infoq.cn/article/79e5571e41e83d9da552aab28】。文章转载请联系作者。
评论