python sanic orm_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践
SanicCRUD-vue
Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践
背景
本项目将使用Sanic + Vue2 + Webpack2 配合最简单CRUD的逻辑来展示一个基于Python的全新一代高性能全栈开发实践的Demo
为什么是Sanic
对于为何不是Flask、Django等著名框架,或许可能很多人会产生疑惑,Sanic本身和Flask非常的相似,而它的出现,不仅是大大改进过去WSGI时代性能低下通病,外加配合uvloop作为核心引擎,使Sanic在很多情况下单机并发甚至不亚于Golang,而且它更意味着Python在Web领域走进了全新的未来。
那么uvloop又是什么?简单的说,Python3.4之后作为最高效简单的协程并发库莫过于asyncio,而asyncio的出现仅仅只是为了提供更方便的异步编程及互操作的接口,其底层用的还是比较传统的event loop,而uvloop是在重新定制asyncio基础上引入了libuv,
其性能不仅超过了以往如gevent、tornado等Python异步框架,也同样以超过2倍多的性能领先于node.js。
是不是和Flask非常相似?
为什么是MVVM
那么在我继续之前,我也想和大家回顾一下Web开发的发展简史:
第一阶段: 网页三剑客,生猛的通过原生javascript直接操作Dom树;
第二阶段: JQuery诞生,配合前端MVC为代表的Backbone.js, 让我们可以优雅而简单的操作Dom树;
第三阶段: 后端架构升级为MVC,前后端分工更清晰,前端工程化、ECMAScript规范开始崭露头角;
第四阶段: 后端架构进入了微服务时代,前端架构不仅升级为MVVM,ES6更是成为目前事实上的标准;
在这里,我不想过于神化MVVM有多么的先进,JQuery为代表的MVC有多么的落后,但确实MVVM有着很多先进的特性:
低开销
易维护
可重用
为什么选择Vue.js
Vue.js是MVVM设计模式中目前最火热的一个前端框架之一,除了性能表现优异之外,与类似React相比,更轻量级、更容易上手。
通过Vue中的“单文件组件”特性,更灵活的定义组件,不仅使代码结构更清晰,而且能与任何其他组件进行随意组合,更具复用性。
Webpack是什么
Webpack提供了一整套前端工程自动化的解决方案
peewee是什么
有了高性能的Sanic作为基石,或许还不够,最能成为后端性能瓶颈的更多的是在于数据库,因此挑选一个合适的ORM变的极为重要,目前python比较主流的ORM是Django-ORM、SQLAlchemy等,但为了配合Sanic这种性能卓越的框架,我更倾向于peewee,更轻量级、方便二次封装,更友好的支持异步。
Demo
一个简单的“上海人员信息查询系统”作为例子
项目结构
|
|—— tests // 单元测试
|
|—— sanic_crudvue // 主项目
| |
| |—— config // 后端基本配置
| |
| |—— crud // 后端APP
| |
| |—— frontend
| | |__ build // webpack配置文件
| | |__ dist // 编译后的目标目录
| | |__ src // 前端源代码
| | | |
| | | |__ components // 本项目各种各样的核心组件
| | | |
| | | |__ App.vue // 主页
| | | |
| | | |__ eventBus.js // 中央消息处理器,用于‘非父子组件’通信,下一个版本将会使用vuex
| | | |
| | | |__ main.js // webpack入口
具备的功能(v0.1)
Sanic (后端)
如何开启一个基于Sanic的工程项目,并通过蓝本来组织基本的MVC模式
通过在Sanic中建立基于RestFul-API并实现一个基本的CRUD逻辑
处理CORS(跨域资源共享)以及解决在Sanic中“pre-flight”请求问题
简单的在peewee上进行二次封装ORM
演示在Sanic中进行单元测试
增加api接口文档
通过peewee和Sanic来实现RestFul-API的分页
VueJS & webpack (前端)
遵循ECMAScript 6 规范
如何在vue中使用‘单文件组件’进行开发编码
演示‘非父子组件’如何进行简单的通信以及‘父子组件’之间如何传递数据
如何和后端进行数据交互
如何在vue中优雅的引入第三方JS库
格式化时间
分页实现
可复用组件
DbHeader.vue
DbFooter.vue (sticky footer)
DbFilterinput.vue
DbModal.vue
DbSidebar.vue
DbTable.vue
得益于类似vue、react等MVVM模式,本项目的任何组件,只要您觉得合适,都可以复用在您的任何项目中,避免重复造轮子。
如何通过webpack2配置来自动化构建前端环境(包括如何配置vue2、处理静态文件,构建不同环境等等)
本项目主要技术栈
python 3
sqlite (not recommend, only convenience example)
vueJS 2.x
webpack 2.x
element ui
axios
准备工作
请必须安装 Python 3.5, 3.6 或以后更高的版本
安装 nodejs / npm
安装
构建后端环境
cd SanicCRUD-vue
make install
构建前端环境
cd sanic_crudvue/frontend
npm install
使用说明
运行后端服务
make dev
运行前端服务
cd sanic_crudvue/frontend
npm run dev
运行单元测试
cd SanicCRUD-vue
make test
你也可以在生产环境中运行cd sanic_crudvue/frontend;npm run build进行编译并配合Nginx
未来计划
本项目可以作为工作参考、学习或者教学演示,之后将陆续以版本的形式,即每个版本都会新增不同的功能演示项,不定期进行发布更新,有以下功能已经在计划之中:
用户认证
引入更高级的vuex组件通信机制
演示vue-route的使用
加入docker部署环境
新增针对yarn的支持
... ...
My Final Thoughts
▄▄▄▄▄
▀▀▀██████▄▄▄ _______________
▄▄▄▄▄ █████████▄ / \
▀▀▀▀█████▌ ▀▐▄ ▀▐█ | Gotta go fast! |
▀▀█████▄▄ ▀██████▄██ | _________________/
▀▄▄▄▄▄ ▀▀█▄▀█════█▀ |/
▀▀▀▄ ▀▀███ ▀ ▄▄
▄███▀▀██▄████████▄ ▄▀▀▀▀▀▀█▌ ______________________________
██▀▄▄▄██▀▄███▀ ▀▀████ ▄██ █ \\
▄▀▀▀▄██▄▀▀▌████▒▒▒▒▒▒███ ▌▄▄▀▀▀▀█_____________________________ //
▌ ▐▀████▐███▒▒▒▒▒▐██▌
▀▄▄▄▄▀ ▀▀████▒▒▒▒▄██▀
▀▀█████████▀
▄▄██▀██████▀█
▄██▀ ▀▀▀ █
▄█ ▐▌
▄▄▄▄█▌ ▀█▄▄▄▄▀▀▄
▌ ▐ ▀▀▄▄▄▀
▀▀▄▄▀ ██
\ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀
\- ▌ SanicCRUD-vue ▀ ▀
- ▌ (o) ▀
/- ▌ Go Go Go ! ▀ ▀
/ ▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀ ▀
██
python sanic orm_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践相关推荐
- python sanic_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践
SanicCRUD-vue Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践 背景 本项目将使用Sanic + Vue2 + Webpack2 配合最简单CRUD的逻辑来展示一个 ...
- python全栈开发实践入门_Python全栈开发实践入门
Python全栈开发实践入门 编辑 锁定 讨论 上传视频 <Python全栈开发实践入门>是2017年10月电子工业出版社出版的图书,作者是谢瑛俊. 书 名 Python全栈开发实践入门 ...
- python全栈开发实践入门_讲书3分钟丨《Python全栈开发实践入门》 -讲书人 谢瑛俊...
只需3分钟就能快速了解一本书! 由作(译)者发声讲书,直指新书的特点与主旨. 只需利用碎片化时间,省时省力选到适合自己的好书 音频链接 音频内容 大家好,我是<Python全栈开发实践入门> ...
- flask python web优品课堂_Python Flask Web网站编程全栈开发系列高清视频教程-价值2499...
0 s: n8 F- K0 _5 i( I Python Flask Web网站编程全栈开发系列高清视频教程& ?- Y2 }3 U1 k9 t/ k! i 这是2016年11月第二期,跟第三 ...
- python物联网全栈开发实践
物联网发展的趋势 碎片化 标准化 拟人化 (人工智能) 集成电路,微机电:是物联网终端设备的基础,如同"蛋白质" 创建电源设计为设备长期运行奠定了能源基础,如同"碳水化合 ...
- 石家庄python开发_石家庄PythonWeb全栈开发工程师修炼
[课程介绍] 课程以python语言为主导,进行web服务相关的全栈开发,包含后端服务器开发,部署,监控:web前端开发,前后端不分离模板模式开发,前后端分离,单独前端部署方案.课程涉及到的知识点有: ...
- 未来物联网全栈开发 --JavaScript or Python?
版权声明:本文为博主杜锦阳原创文章,未经博主允许不得转载,如有侵权将依法追究其法律责任. 目录(?)[+] 先来说说 Javascript 再来说说 Python 未来谁是王者 未来物联网全栈开发 - ...
- 学python有前途吗-Python全栈开发有前景吗,是否值得学习?
谢邀 一.什么是Python web全栈工程师? 全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人.也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer. ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
最新文章
- 【08】Effective Java - 异常
- android重写方法,android中native js中重写方法问题
- 中国连续十年成马来西亚最大贸易伙伴
- 散点画三维曲面图_UG 复杂曲面合金零件的数控加工
- 让计算机开口说话教学反思,小班语言教案及教学反思《我会说普通话》
- oracle未获得监听器,无监听文件listener.ora的动态监听小例试验
- java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
- 百度开源呼叫中心系统
- linux 修改图片像素,如何修改照片分辨率
- 学习的爬虫一点小感悟附上爬取淘宝信息的教程
- java8 匿名内部类的前生今世
- Spring Websocket 使用笔记
- Python实现网络聊天
- 射频信号源进阶使用技巧【转载自微信公众号微波射频网】
- hadoop SWAP交换空间
- Android版本新特性(6-12)(13预览)
- Smarty入门教程一----Smarty的安装
- LibGDX_2.1: LibGDX 应用框架(6 大系统交互接口)
- “+智能”时代 华为如何引领中国制造走向“智”变?
- python修炼之pip基本命令
热门文章
- windows安装RabbitMQ注意事项
- 浅谈ASP.NET Forms验证
- Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)
- Python MySQLdb 循环插入execute与批量插入executemany性能分析(list批量写法亲测成功)
- Geography爱好者 QGIS WGS84转其它坐标系并计算坐标
- php记录代码执行时间
- JQUERY的size()与length
- Yii直接加载JS/CSS
- oracle redo删除,意外删除redo的恢复
- char、varchar、binary和varbinary的区别与联系