首页 > 其他分享 >使用Flask和Vue.js构建现代Web应用

使用Flask和Vue.js构建现代Web应用

时间:2023-09-04 15:33:21浏览次数:42  
标签:Web Vue Flask 应用程序 js books

博客主题:使用Flask和Vue.js构建现代Web应用

概述

在本篇博客中,我们将介绍如何使用Flask和Vue.js这两个流行的框架来构建一个现代化的Web应用。Flask是一个轻量级的Python Web框架,而Vue.js是一个灵活且易于使用的JavaScript框架,用于构建交互式的用户界面。

我们将通过一个简单的示例来演示如何结合使用Flask和Vue.js来创建一个完整的Web应用。我们将使用Flask来提供后端API,并使用Vue.js来构建前端页面。

环境准备

在开始之前,请确保您已经安装了以下软件:

  • Python(建议使用Python 3.x版本)
  • Node.js和npm(用于安装和管理前端依赖)

创建Flask应用程序

首先,我们需要创建一个Flask应用程序来提供后端API。打开您最喜欢的代码编辑器并创建一个名为app.py的文件。

在文件中输入以下内容:

from flask import Flask, jsonify, request

app = Flask(__name__)

@app.route('/api/books', methods=['GET'])
def get_books():
    books = [
        {'id': 1, 'title': 'Book 1', 'author': 'Author 1'},
        {'id': 2, 'title': 'Book 2', 'author': 'Author 2'},
        {'id': 3, 'title': 'Book 3', 'author': 'Author 3'}
    ]
    return jsonify(books)

if __name__ == '__main__':
    app.run()

 

在这个例子中,我们创建了一个路由(/api/books)来获取书籍列表。在实际应用中,您可以连接数据库或其他数据源来检索真实的数据。

创建Vue.js应用程序

接下来,我们将使用Vue.js来创建前端页面。打开终端并进入您想要存储前端代码的目录中,然后执行以下命令:

vue create frontend

 

在创建过程中,您可以按照提示进行选择配置选项。选择默认选项即可创建一个最简单的Vue.js应用程序。

创建完成后,进入frontend目录并编辑src/App.vue文件。

将文件中的内容替换为以下代码:

<template>
  <div>
    <h1>Books</h1>
    <ul>
      <li v-for="book in books" :key="book.id">
        {{ book.title }} - {{ book.author }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      books: []
    }
  },
  mounted() {
    fetch('/api/books')
      .then(response => response.json())
      .then(data => {
        this.books = data;
      });
  }
}
</script>

 

在这个示例中,我们定义了一个简单的Vue组件来显示书籍列表。组件的HTML部分使用v-for指令来循环遍历书籍列表,并显示每本书的标题和作者。在mounted生命周期钩子中,我们使用fetch函数发送GET请求到Flask后端API,并将返回的数据赋值给books数组。

构建和启动应用程序

现在,我们已经创建了Flask和Vue.js应用程序的基本结构,接下来我们需要构建和启动这两个应用程序。

首先,确保您已经进入frontend目录,然后执行以下命令:

npm run build

 

该命令将会构建前端应用程序并将生成的静态文件保存在dist目录中。

然后,返回上一级目录(frontend所在的目录)并运行以下命令启动Flask应用程序:

python app.py

 

Flask应用程序将会在http://localhost:5000上运行。

现在,打开浏览器并访问http://localhost:5000,您将看到一个显示书籍列表的页面。

总结

在本篇博客中,我们学习了如何使用Flask和Vue.js来构建一个现代化的Web应用。我们使用Flask提供后端API,并使用Vue.js构建了一个简单的前端页面。通过结合使用这两个框架,我们可以实现前后端分离、提高开发效率和用户体验。

当然,这只是一个很简单的示例,您可以根据自己的需求进一步扩展和优化应用程序。希望本文对您了解如何使用Flask和Vue.js构建现代Web应用有所帮助!

 

欢迎转载,但请写明出处,谢谢!

标签:Web,Vue,Flask,应用程序,js,books
From: https://www.cnblogs.com/langzhong/p/17677185.html

相关文章

  • 致远OA webmail.do 任意文件下载 CNVD-2020-62422
    漏洞描述致远OA存在任意文件下载漏洞,攻击者可利用该漏洞下载任意文件,获取敏感信息影响版本致远OAA6-V5致远OAA8-V5致远OAG6漏洞复现fofa语法:app="致远互联-OA"登录页面如下:致远OAwebmail.do文件读取漏洞,由于/seeyon/webmail.do页面filePath参数过滤不严,导致可以......
  • BUUCTF [SWPU2019]Web1
    进入网站,注册登录,进到申请发布广告,应该就是在这里实现注入。首先尝试:1'or1=1#标题含有敏感词汇应该是哪里被过滤了。经过尝试后是or被过滤了,--+,#等其他的注释符也被过滤了。经过测试后,结尾可以用单引号闭合。再次尝试:1'showdatabases()'1'showdatabases()'空格被......
  • vue3+ts Axios封装—重复请求拦截
    创建好vue3项目1.安装Axios与ElementPlusAxios安装npminstallaxiosElementPlus安装官网入口:https://element-plus.gitee.io/zh-CN/npminstallelement-plus--saveElement主要用到信息提示与全屏加载动画2.在src目录下创建api文件夹和utils文件夹api......
  • vue中引入图片等静态资源的几种方式
    在vue中引入图片等静态资源,由于部署的时候需要打包,打包后文件名字路径不一致,导致显示不了。以下为解决的几种方式:1.样式直接引入:<divclass="imgItem"><divclass="imgLogo"></div></div>.imgLogo{width:100px;height:100px;background:url('/@......
  • KVM管理工具Webvirtmgr 问题记录
    1.如果遇到虚拟机启动时报错:qemu-kvm:FailedtostartVNCserveron`172.17.42.1:0':Failedtobindsocket:Cannotassignrequestedaddres请将对应虚拟机XML配置中VNC部分改为:<graphicstype='vnc'port='-1'autoport='yes'listen='0.0.0.......
  • vue3+vite使用require引用图片失效问题
    首先,这个问题的原因跟vue无关,是vite引用只支持import,require是隔壁webpack的引用方式,vite用自身的url可以用import.meta.url来拼装项目路径,如下:这个原理只不过是在发布的地址上去找对应图片,而且只会找项目中public文件夹下的图片资源,assets文件夹下的图片资源找不到(原因是publ......
  • vue学习
    ......
  • vue3 使用vue-router 进行网页跳转以及获取问号后面的参数
    关键代码:constrouter=useRouter()constauthor='myname'router.push({name:'Edit',query:{author}})constroute=useRoute()constvalue=route.query.key详细步骤:0.Initialgitclonehttps://github.com/element-plus/element-plus-v......
  • Vue.js 组件的2种创建使用方法
    创建组件的两种方式1.全部注册组件Vue.commpent('自定义标签名',{ //组件有自己的一个data函数,也只能是函数 组件不可有根节点el属性 data:function(){ return{ //返回data中的数据 } //模板 template:` `, methods:{ //组件的方法 }, computed:{ //计算属性 }, watch:{ //......
  • BUUCTF [CISCN2019 华东南赛区]Web11
    切入点如图:测试模板注入最后或者payload:X-Forwarded-For:{ifreadfile('/flag')}{/if}原理是Smarty已经废弃{php}标签。在Smarty3.1,{php}仅在SmartyBC中可用。Smarty的{if}条件判断和PHP的if非常相似,只是增加了一些特性。每个{if}必须有一个配对的{/if}。全部的PHP条件表......