返回顶部
首页 > 资讯 > 精选 >Flask Vue前后端分离实例分析
  • 797
分享到

Flask Vue前后端分离实例分析

2023-07-02 17:07:57 797人浏览 八月长安
摘要

这篇文章主要讲解了“flask Vue前后端分离实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flask Vue前后端分离实例分析”吧!vue官网:开源的 Javascript 框架

这篇文章主要讲解了“flask Vue后端分离实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flask Vue前后端分离实例分析”吧!

vue官网开源Javascript 框架,vue是一套构建用户界面的渐进式框架,Vue采用自底向上的增量开发设计。vue是轻量级的,有很多独立的功能和库。

vue.js满足当前WEBapp项目的开发需求,MVVM框架诞生,而Vue.js便是这样一种js框架两大核心:数据驱动和组件化。

Flask:用Python实现,是一个web框架,属于微框架

1、主要依赖版本

  • python : V3.6.4

  • Vue: V2.9.6

  • Vue-CLI: V2.9.6

  • node: v10.6.0

  • npm: V6.1.0

  • Flask: V1.0.2

  • Flask-Cors: V3.0.6

  • bootstrap: V4.0.0(最新版4.1.2不兼容)

以下项目的创建都是在Python虚拟环境和npm局部安装的,只有Vue-CLI是全局安装的。

npm ls -g --depth 0     查找npm全局安装的包

2、构建Python虚拟环境

防止依赖的混乱,首先创建虚拟环境。

Mac:code hubo$ mkdir flask-vue-crudMac:code hubo$ cd flask-vue-crud/Mac:flask-vue-crud$ python -m venv venvMac:flask-vue-crud$ source venv/bin/activate(venv) Mac:flask-vue-crud hubo$ lsvenv

第一行创建flask-vue-crud文件夹,第三行创建python虚拟环境python3.3版本可以通过venv模块,python2版本可以使用virtualenv模块。

第四行激活虚拟环境。

  • windows:source venv/Scripts/activate.bat

  • linux:source venv/bin/activate

3、创建Flask项目

首先安装Flask和Flask-CORS扩展。

Flask—CORS:

如果使用不同的协议,或者请求来自于其他的 IP 地址或域名或端口,就需要用到 Cross Origin Resource Sharing (CORS),这正是 Flask-CORS 扩展帮我们做到的。实际环境中只配置来自前端应用所在的域的请求。

(venv) Mac:flask-vue-crud hubo$ pip install Flask Flask-Cors

然后在根目录下创建app.py文件:

from flask import Flask, JSONifyfrom flask_cors import CORSapp = Flask(__name__)CORS(app)@app.route('/', methods=['GET'])def ping_pong():    return jsonify('Hello World!')     #(jsonify返回一个json格式的数据)if __name__ == '__main__':    app.run()

然后执行:

(venv) Mac:flask-vue-crud hubo$ python app.py

打开浏览器,输入Http://localhost:5000/ping,会看到输出

Hello World!

目前Flask环境已经配置好,并且已经创建了一个Flask小Demo。

4、Vue Setup

Vue CLI:官方发布 vue.js 项目脚手架,使用 vue-cli 可以快速创建 vue 项目。

首先全局安装vue Cli:npm install -g(全局安装),npm下载的国外的依赖,可以使用淘宝的cnpm。

下载淘宝的cnpm

npm install -g cnpm --reGIStry=https://registry.npm.taobao.org

使用npm或cnom下载vue cli

(venv) Mac:flask-vue-crud hubo$ npm insatll -g vue-cli

查看安装成功

Mac:~ hubo$ vue -V2.9.6

接下来通过webpack初始化一个新的Vue项目client:

Mac:flask-vue-crud hubo$ vue init webpack client? Project name client? Project description A Vue.js project? Author hubo <1290259791@qq.com>? Vue build standalone? Install vue-router? Yes? Use ESLint to lint your code? Yes? Pick an ESLint preset Airbnb? Set up unit tests No? Setup e2e tests with Nightwatch? No? Should we run `npm install` for you after the project has been created? (recommended) npm

主要写代码的位置:/flask-vue-crud/client/src/,目录结构如下所示:

.├── App.vue├── assets│   └── loGo.png├── components│   ├── HelloWorld.vue│   └── Ping.vue├── main.js└── router    └── index.js

各个目录的意思:

名字作用
main.jsapp 的入口,它会加载和初始化 Vue 和根组件
App.vue根组件 - 其他组件的入口
assets静态文件如图片和字体等都放在这里
componentsUI 组件放在这里
routerURL 同组件的映射关系在这里定义

client/src/components/HelloWord.vue是自动生成的单文件组件,有三部分组成:

  • template: 组件的 html 内容

  • script: 组件的逻辑代码(javascript

  • style: 组件的样式(CSS

运行该程序:

(venv) Mac:flask-vue-crud hubo$ cd client/(venv) Mac:client hubo$ lsREADME.mdindex.htmlpackage.jsonbuildnode_modulessrcconfigpackage-lock.jsonstatic(venv) Mac:client hubo$ npm run dev     启动dev

访问http://localhost:8080 能看到前端页面

5、添加一个新组件

创建client/src/components/Ping.vue:

<template>  <div>    <p>{{ msg }}</p>  </div></template><script>export default {  name: 'Ping',  data() {    return {      msg: 'Hello!',    };  },};</script>

更新client/src/router/index.js,映射/ping到Ping组件:

import Vue from 'vue';import Router from 'vue-router';import HelloWorld from '@/components/HelloWorld';import Ping from '@/components/Ping';Vue.use(Router);export default new Router({  routes: [    {      path: '/',      name: 'HelloWorld',      component: HelloWorld,    },    {      path: '/ping',      name: 'Ping',      component: Ping,    },  ],  mode: 'history',});

上面的mode: 'history&rsquo;是为了让 URL 变成http://localhost:8080/ping的形式。如果,不加该设置,默认的 URL 为http://localhost:8080/#/ping的形式。

访问http://localhost:8080/ping 能看到Hello!

6、连接前后段

通过axiOS发送ajax请求,安装axios:

(venv) Mac:client hubo$ cnpm install axios --save✔ Installed 1 packages✔ Linked 4 latest versions✔ Run 0 scripts✔ All packages installed (5 packages installed from npm registry, used 1s, speed 12.01kB/s, json 5(12.96kB), tarball 0B)

更新Ping.vue组件,代码如下。

<template>  <div class="container">    <button type="button" class="btn btn-primary">{{ msg }}</button>  </div></template><script>import axios from 'axios';export default {  name: 'Ping',  data() {    return {      msg: 'Hello World!',    };  },  methods: {    getMessage() {      const path = 'http://localhost:5000/ping';      axios.get(path)        .then((res) => {          this.msg = res.data;        })        .catch((error) => {          // eslint-disable-next-line          console.error(error);        });    },  },  created() {    this.getMessage();  },};</script>

启动后端 Flask 应用,访问http://localhost:8080/ping,会看到页面会呈现后端返回的数据。

将后段的数据改为:{1:&lsquo;a&rsquo;,2:&lsquo;b&rsquo;,3:&lsquo;c&rsquo;}

启动Flask:

(venv) Mac:flask-vue-crud hubo$ python app.py  * Serving Flask app "app" (lazy loading) * Environment: production   WARNING: Do not use the development server in a production environment.   Use a production WSGI server instead. * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 239-628-485

启动dec:

(venv) Mac:client hubo$ npm run dev

7、引入CSS框架bootstrap

引入 CSS 框架 bootstrap,通过如下命令安装bootstrap:使用的是cnpm

下面的cnpm都是局部安装。

(venv) Mac:client hubo$ cnpm install bootstrap@4.0.0 --save✔ Installed 1 packages✔ Linked 0 latest versions✔ Run 0 scriptspeerDependencies WARNING bootstrap@4.0.0 requires a peer of Jquery@1.9.1 - 3 but none was installedpeerDependencies WARNING bootstrap@4.0.0 requires a peer of popper.js@^1.12.9 but none was installed✔ All packages installed (1 packages installed from npm registry, used 770ms, speed 6.85kB/s, json 1(5.27kB), tarball 0B)

我这里缺少两个依赖,继续下载依赖

(venv) Mac:client hubo$ cnpm install jquery@1.9.1 --save✔ Installed 1 packages✔ Linked 0 latest versions✔ Run 0 scripts✔ All packages installed (1 packages installed from npm registry, used 1s, speed 335.44kB/s, json 1(5.19kB), tarball 482.88kB)(venv) Mac:client hubo$ cnpm install popper.js --save✔ Installed 1 packages✔ Linked 0 latest versions✔ Run 0 scripts✔ All packages installed (1 packages installed from npm registry, used 543ms, speed 16.56kB/s, json 1(8.99kB), tarball 0B)

再次下载bootstrap:

(venv) Mac:client hubo$ cnpm install bootstrap@4.0.0 --save✔ Installed 1 packages✔ Linked 0 latest versions✔ Run 0 scripts✔ All packages installed (used 647ms, speed 41.65kB/s, json 1(26.95kB), tarball 0B)

在 app 的入口文件client/src/main.js中导入 bootstrap:

import 'bootstrap/dist/css/bootstrap.css';import Vue from 'vue';import App from './App';import router from './router';Vue.config.productionTip = false;new Vue({  el: '#app',  router,  components: { App },  template: '<App/>',});

去掉根组件client/src/App.vue中多余的样式:

<style>#app {  margin-top: 60px;}</style>

在Ping.vue组件中增加样式:

<template>  <div class="container">    <button type="button" class="btn btn-primary">{{ msg }}</button>  </div></template>

再次访问http://localhost:8080/ping查看效果。

8、遇到的问题

Newline required at end of file but not found

这种错误处理方法:

我的错误是在33行后面添加一个空白行就可以了。

bootstrap最新版的好像和vue不兼容,使用的是4.0.0版本。

有遇到其他的问题,可以留言板讨论,目前除了bootstrap是4.0版本其他的应该都是最新的版本。

感谢各位的阅读,以上就是“Flask Vue前后端分离实例分析”的内容了,经过本文的学习后,相信大家对Flask Vue前后端分离实例分析这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Flask Vue前后端分离实例分析

本文链接: https://lsjlt.com/news/343564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Flask Vue前后端分离实例分析
    这篇文章主要讲解了“Flask Vue前后端分离实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Flask Vue前后端分离实例分析”吧!vue官网:开源的 Javascript 框架...
    99+
    2023-07-02
  • vue-admin和后端flask分离结合的示例分析
    这篇文章主要介绍vue-admin和后端flask分离结合的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体如下感觉 vue-admin 界面很不错,写了一个小 Demo看...
    99+
    2024-04-02
  • 前后端分离之VueJS前端的示例分析
    这篇文章给大家分享的是有关前后端分离之VueJS前端的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言前端用什么框架都可以,这里选择小巧的vuejs。要实现的功能很简单...
    99+
    2024-04-02
  • Flask-Vue前后端分离的全过程讲解
    目录1、主要依赖版本2、构建Python虚拟环境3、创建Flask项目4、Vue Setup5、添加一个新组件6、连接前后段7、引入CSS框架bootstrap8、遇到的问题最近学习...
    99+
    2024-04-02
  • web前端与后端分离的架构实例分析
    本篇内容主要讲解“web前端与后端分离的架构实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“web前端与后端分离的架构实例分析”吧!一、关于前端的 dat...
    99+
    2024-04-02
  • flask和vue前后端分离项目部署的示例代码
    前段时间开发了一个项目, 我后端用的是flask框架写接口,前端用的是vue框架,项目前后端完全分离,部署的时候遇到一点问题,记录一下. 部署环境:centos6.5、Python...
    99+
    2024-04-02
  • Vue微信授权登录前后端分离的示例分析
    小编给大家分享一下Vue微信授权登录前后端分离的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!微信授权登录是一个非常常见...
    99+
    2024-04-02
  • node vue项目开发之前后端分离的示例分析
    这篇文章主要介绍node vue项目开发之前后端分离的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!node vue项目开发最近看了近一周的vue开发,有诸多感触,我之前接触...
    99+
    2024-04-02
  • 基于Vue+Nginx前后端不分离部署的示例分析
    这篇文章主要介绍基于Vue+Nginx前后端不分离部署的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、在这里我前端vue项目使用vue cli脚手架进行搭建的,后台使用N...
    99+
    2024-04-02
  • Java前后端分离以及Vue.js的示例分析
    这篇文章主要介绍Java前后端分离以及Vue.js的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!前后端不分后端模板:Jsp、FreeMarker、Velocity前端模板:...
    99+
    2024-04-02
  • SpringBoot+mybatis+Vue实现前后端分离项目的示例
    目录一、SpringBoot环境搭建1、项目的数据库2、项目所需依赖3、application.yml文件4、入口类二、vue实现前后端分离1、前端页面2、springBoot控制层...
    99+
    2024-04-02
  • FastApi+Vue+LayUI实现前后端分离的示例代码
    目录前言项目设计后端前端运行项目Q&A前言 在前面的Api开发中,我们使用FastApi已经可以很好的实现。但是实际使用中,我们通常建议前后端项目分离。今天我们就使用Fas...
    99+
    2024-04-02
  • FastApi+Vue+LayUI如何实现前后端分离
    小编给大家分享一下FastApi+Vue+LayUI如何实现前后端分离,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!前言在前面的Api开发中,我们使用FastAp...
    99+
    2023-06-25
  • Python+Vue实现简单的前后端分离
    准备工作 安装Node环境安装Python环境 注意:项目整个过程需要从后往前,即先数据库->后端->前端;启动流程也是先启动后端项目,再启动前端项目 完整项目地址:地址 前端 开发工具:Vis...
    99+
    2023-08-31
    python vue mysql 前后端分离
  • thinkPHP5前后端分离
    thinkPHP5前后端分离 环境配置并运行起thinkphp安装小皮面板安装phpstorm配置thinkPHP5将文件放入适当位置修改Nginx配置修改配置和伪静态 跨域前端 ...
    99+
    2023-10-11
    php 前端 nginx 1024程序员节
  • 前后端分离djangorestframe
    关于验证码部分,在我这篇文章里说的挺详细的了:Python高级应用(3)—— 为你的项目添加验证码   这里还是再给一个前后端分离的实例,因为极验官网给的是用session作为验证的,而我们做前后端分离的用的是token,而不是sessi...
    99+
    2023-01-30
    后端 djangorestframe
  • Java前后端分离之权限管理示例分析
    目录1.前端界面1.1 按钮1.2 对话框+树形控件2.后端操作2.1 controller层2.2 serviceImpl层2.3 结果展示2.4 查对应的权限菜单(使用中间表)2...
    99+
    2024-04-02
  • Vue之前端体系与前后端分离详解
    目录概述前端知识体系前端三要素表现层(CSS)行为层(JavaScript)JavaScript 框架 UI框架JavaScript 构建工具三端统一混合开发(Hybrid...
    99+
    2024-04-02
  • 解析Thinkphp5如何实现前后端分离
    这篇文章主要介绍解析Thinkphp5如何实现前后端分离,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!用Thinkphp5实现纯API开发实现前后端分离大致步骤如下解决跨域请求问题2.改变输出数据格式为API常用返回...
    99+
    2023-06-15
  • nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
    准备工作: 1.安装nodejs ---还用我教了? 2.安装依赖包express4.x 点这里》》》nodeJS搭建本地服务器 3.安装vue-cli脚手架 点这里》》》vue-cli构建vue项目...
    99+
    2022-06-04
    实例 后端 nodeJS
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作