您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:Flask-Vue前后端分离的全过程讲解

51自学网 2022-07-22 18:47:18
  python
这篇教程Flask-Vue前后端分离的全过程讲解写得很实用,希望能帮到您。

最近学习了一下前后端分离技术,前端用的是Vue,后段用的是Flask。

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.md		index.html		package.jsonbuild			node_modules		srcconfig			package-lock.json	static(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’是为了让 URL 变成http://localhost:8080/ping的形式。如果,不加该设置,默认的 URL 为http://localhost:8080/#/ping的形式。

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

6、连接前后段

通过axios发送AJAX请求,安装axios:

51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1