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高性能全栈开发实践相关推荐

  1. python sanic_Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践

    SanicCRUD-vue Sanic + 前端MVVM 一种新一代Python高性能全栈开发实践 背景 本项目将使用Sanic + Vue2 + Webpack2 配合最简单CRUD的逻辑来展示一个 ...

  2. python全栈开发实践入门_Python全栈开发实践入门

    Python全栈开发实践入门 编辑 锁定 讨论 上传视频 <Python全栈开发实践入门>是2017年10月电子工业出版社出版的图书,作者是谢瑛俊. 书 名 Python全栈开发实践入门 ...

  3. python全栈开发实践入门_讲书3分钟丨《Python全栈开发实践入门》 -讲书人 谢瑛俊...

    只需3分钟就能快速了解一本书! 由作(译)者发声讲书,直指新书的特点与主旨. 只需利用碎片化时间,省时省力选到适合自己的好书 音频链接 音频内容 大家好,我是<Python全栈开发实践入门> ...

  4. 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月第二期,跟第三 ...

  5. python物联网全栈开发实践

    物联网发展的趋势 碎片化 标准化 拟人化 (人工智能) 集成电路,微机电:是物联网终端设备的基础,如同"蛋白质" 创建电源设计为设备长期运行奠定了能源基础,如同"碳水化合 ...

  6. 石家庄python开发_石家庄PythonWeb全栈开发工程师修炼

    [课程介绍] 课程以python语言为主导,进行web服务相关的全栈开发,包含后端服务器开发,部署,监控:web前端开发,前后端不分离模板模式开发,前后端分离,单独前端部署方案.课程涉及到的知识点有: ...

  7. 未来物联网全栈开发 --JavaScript or Python?

    版权声明:本文为博主杜锦阳原创文章,未经博主允许不得转载,如有侵权将依法追究其法律责任. 目录(?)[+] 先来说说 Javascript 再来说说 Python 未来谁是王者 未来物联网全栈开发 - ...

  8. 学python有前途吗-Python全栈开发有前景吗,是否值得学习?

    谢邀 一.什么是Python web全栈工程师? 全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人.也叫全端工程师(同时具备前端和后台能力),英文Full Stack developer. ...

  9. python 全栈开发之路 day1

    python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...

最新文章

  1. 【08】Effective Java - 异常
  2. android重写方法,android中native js中重写方法问题
  3. 中国连续十年成马来西亚最大贸易伙伴
  4. 散点画三维曲面图_UG 复杂曲面合金零件的数控加工
  5. 让计算机开口说话教学反思,小班语言教案及教学反思《我会说普通话》
  6. oracle未获得监听器,无监听文件listener.ora的动态监听小例试验
  7. java异常处理和自定义异常利用try和catch让程序继续下去(回来自己再写个例子试运行下)...
  8. 百度开源呼叫中心系统
  9. linux 修改图片像素,如何修改照片分辨率
  10. 学习的爬虫一点小感悟附上爬取淘宝信息的教程
  11. java8 匿名内部类的前生今世
  12. Spring Websocket 使用笔记
  13. Python实现网络聊天
  14. 射频信号源进阶使用技巧【转载自微信公众号微波射频网】
  15. hadoop SWAP交换空间
  16. Android版本新特性(6-12)(13预览)
  17. Smarty入门教程一----Smarty的安装
  18. LibGDX_2.1: LibGDX 应用框架(6 大系统交互接口)
  19. “+智能”时代 华为如何引领中国制造走向“智”变?
  20. python修炼之pip基本命令

热门文章

  1. windows安装RabbitMQ注意事项
  2. 浅谈ASP.NET Forms验证
  3. Centos 安装python 3.7 遇到 ModuleNotFoundError: No module named _ctypesmake [install] Error 1(亲测下面的红字内容)
  4. Python MySQLdb 循环插入execute与批量插入executemany性能分析(list批量写法亲测成功)
  5. Geography爱好者 QGIS WGS84转其它坐标系并计算坐标
  6. php记录代码执行时间
  7. JQUERY的size()与length
  8. Yii直接加载JS/CSS
  9. oracle redo删除,意外删除redo的恢复
  10. char、varchar、binary和varbinary的区别与联系