成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Sanic + 前端MVVM 一種新一代Python高性能全棧開發(fā)實(shí)踐

NusterCache / 3088人閱讀

摘要:前端一種新一代高性能全棧開發(fā)實(shí)踐背景本項(xiàng)目將使用配合最簡(jiǎn)單的邏輯來(lái)展示一個(gè)基于的全新一代高性能全棧開發(fā)實(shí)踐的為什么是對(duì)于為何不是等著名框架,或許可能很多人會(huì)產(chǎn)生疑惑,本身和非常的相似,而它的出現(xiàn),不僅是大大改進(jìn)過(guò)去時(shí)代性能低下通病,外加配

SanicCRUD-vue

Sanic + 前端MVVM 一種新一代Python高性能全棧開發(fā)實(shí)踐

背景

本項(xiàng)目將使用Sanic + Vue2 + Webpack2 配合最簡(jiǎn)單CRUD的邏輯來(lái)展示一個(gè)基于Python的全新一代高性能全棧開發(fā)實(shí)踐的Demo

為什么是Sanic

對(duì)于為何不是Flask、Django等著名框架,或許可能很多人會(huì)產(chǎn)生疑惑,Sanic本身和Flask非常的相似,而它的出現(xiàn),不僅是大大改進(jìn)過(guò)去WSGI時(shí)代性能低下通病,外加配合uvloop作為核心引擎,使Sanic在很多情況下單機(jī)并發(fā)甚至不亞于Golang,而且它更意味著Python在Web領(lǐng)域走進(jìn)了全新的未來(lái)。

那么uvloop又是什么?簡(jiǎn)單的說(shuō),Python3.4之后作為最高效簡(jiǎn)單的協(xié)程并發(fā)庫(kù)莫過(guò)于asyncio,而asyncio的出現(xiàn)僅僅只是為了提供更方便的異步編程及互操作的接口,其底層用的還是比較傳統(tǒng)的event loop,而uvloop是在重新定制asyncio基礎(chǔ)上引入了libuv,
其性能不僅超過(guò)了以往如gevent、tornado等Python異步框架,也同樣以超過(guò)2倍多的性能領(lǐng)先于node.js。

是不是和Flask非常相似?

為什么是MVVM

那么在我繼續(xù)之前,我也想和大家回顧一下Web開發(fā)的發(fā)展簡(jiǎn)史:

第一階段: 網(wǎng)頁(yè)三劍客,生猛的通過(guò)原生javascript直接操作Dom樹;

第二階段: JQuery誕生,配合前端MVC為代表的Backbone.js, 讓我們可以優(yōu)雅而簡(jiǎn)單的操作Dom樹;

第三階段: 后端架構(gòu)升級(jí)為MVC,前后端分工更清晰,前端工程化、ECMAScript規(guī)范開始嶄露頭角;

第四階段: 后端架構(gòu)進(jìn)入了微服務(wù)時(shí)代,前端架構(gòu)不僅升級(jí)為MVVM,ES6更是成為目前事實(shí)上的標(biāo)準(zhǔn);

在這里,我不想過(guò)于神化MVVM有多么的先進(jìn),JQuery為代表的MVC有多么的落后,但確實(shí)MVVM有著很多先進(jìn)的特性:

低開銷

易維護(hù)

可重用

為什么選擇Vue.js

Vue.js是MVVM設(shè)計(jì)模式中目前最火熱的一個(gè)前端框架之一,除了性能表現(xiàn)優(yōu)異之外,與類似React相比,更輕量級(jí)、更容易上手。

通過(guò)Vue中的“單文件組件”特性,更靈活的定義組件,不僅使代碼結(jié)構(gòu)更清晰,而且能與任何其他組件進(jìn)行隨意組合,更具復(fù)用性。

Webpack是什么

Webpack提供了一整套前端工程自動(dòng)化的解決方案

peewee是什么

有了高性能的Sanic作為基石,或許還不夠,最能成為后端性能瓶頸的更多的是在于數(shù)據(jù)庫(kù),因此挑選一個(gè)合適的ORM變的極為重要,目前python比較主流的ORM是Django-ORM、SQLAlchemy等,但為了配合Sanic這種性能卓越的框架,我更傾向于peewee,更輕量級(jí)、方便二次封裝,更友好的支持異步。

Demo

一個(gè)簡(jiǎn)單的“上海人員信息查詢系統(tǒng)”作為例子

項(xiàng)目結(jié)構(gòu)
 |
 |—— tests                            // 單元測(cè)試
 |
 |—— sanic_crudvue                    // 主項(xiàng)目
 |      |
 |      |—— config                    // 后端基本配置
 |      |
 |      |—— crud                      // 后端APP 
 |      |
 |      |—— frontend          
 |      |       |__ build             // webpack配置文件
 |      |       |__ dist              // 編譯后的目標(biāo)目錄
 |      |       |__ src               // 前端源代碼
 |      |       |    |   
 |      |       |    |__ components   // 本項(xiàng)目各種各樣的核心組件 
 |      |       |    |
 |      |       |    |__ App.vue      // 主頁(yè)
 |      |       |    |
 |      |       |    |__ eventBus.js  // 中央消息處理器,用于‘非父子組件’通信,下一個(gè)版本將會(huì)使用vuex
 |      |       |    |
 |      |       |    |__ main.js      // webpack入口
具備的功能(v0.1)

Sanic (后端)

如何開啟一個(gè)基于Sanic的工程項(xiàng)目,并通過(guò)藍(lán)本來(lái)組織基本的MVC模式

通過(guò)在Sanic中建立基于RestFul-API并實(shí)現(xiàn)一個(gè)基本的CRUD邏輯

處理CORS(跨域資源共享)以及解決在Sanic中“pre-flight”請(qǐng)求問(wèn)題

簡(jiǎn)單的在peewee上進(jìn)行二次封裝ORM

演示在Sanic中進(jìn)行單元測(cè)試

增加api接口文檔

通過(guò)peewee和Sanic來(lái)實(shí)現(xiàn)RestFul-API的分頁(yè)

VueJS & webpack (前端)

遵循ECMAScript 6 規(guī)范

如何在vue中使用‘單文件組件’進(jìn)行開發(fā)編碼

演示‘非父子組件’如何進(jìn)行簡(jiǎn)單的通信以及‘父子組件’之間如何傳遞數(shù)據(jù)

如何和后端進(jìn)行數(shù)據(jù)交互

如何在vue中優(yōu)雅的引入第三方JS庫(kù)

格式化時(shí)間

分頁(yè)實(shí)現(xiàn)

可復(fù)用組件

DbHeader.vue

DbFooter.vue (sticky footer)

DbFilterinput.vue

DbModal.vue

DbSidebar.vue

DbTable.vue

得益于類似vue、react等MVVM模式,本項(xiàng)目的任何組件,只要您覺得合適,都可以復(fù)用在您的任何項(xiàng)目中,避免重復(fù)造輪子。

如何通過(guò)webpack2配置來(lái)自動(dòng)化構(gòu)建前端環(huán)境(包括如何配置vue2、處理靜態(tài)文件,構(gòu)建不同環(huán)境等等)

本項(xiàng)目主要技術(shù)棧

python 3

sqlite (not recommend, only convenience example)

vueJS 2.x

webpack 2.x

element ui

axios

準(zhǔn)備工作

請(qǐng)必須安裝 Python 3.5, 3.6 或以后更高的版本

安裝 nodejs / npm

克隆倉(cāng)庫(kù)

git clone https://github.com/boylegu/Sa...

cd SanicCRUD-vue

安裝

構(gòu)建后端環(huán)境

cd SanicCRUD-vue

make install

構(gòu)建前端環(huán)境

cd sanic_crudvue/frontend

npm install

使用說(shuō)明

運(yùn)行后端服務(wù)

make dev

運(yùn)行前端服務(wù)

cd sanic_crudvue/frontend

npm run dev

運(yùn)行單元測(cè)試

cd SanicCRUD-vue

make test

你也可以在生產(chǎn)環(huán)境中運(yùn)行cd sanic_crudvue/frontend;npm run build進(jìn)行編譯并配合Nginx

未來(lái)計(jì)劃

本項(xiàng)目可以作為工作參考、學(xué)習(xí)或者教學(xué)演示,之后將陸續(xù)以版本的形式,即每個(gè)版本都會(huì)新增不同的功能演示項(xiàng),不定期進(jìn)行發(fā)布更新,有以下功能已經(jīng)在計(jì)劃之中:

用戶認(rèn)證

引入更高級(jí)的vuex組件通信機(jī)制

演示vue-route的使用

加入docker部署環(huán)境

新增針對(duì)yarn的支持
... ...

項(xiàng)目地址:https://github.com/boylegu/Sa... My Final Thoughts
                     ▄▄▄▄▄
            ???██████▄▄▄       _______________
          ▄▄▄▄▄  █████████▄  /                 
         ????█████▌ ??▄ ??█ | Gotta go fast!   |
       ??█████▄▄ ?██████▄██ | _________________/
       ?▄▄▄▄▄  ??█▄?█════█? |/
            ???▄  ??███ ?       ▄▄
         ▄███??██▄████████▄ ▄??????█▌   ______________________________ 
       ██?▄▄▄██?▄███? ??████      ▄██  █                               
    ▄???▄██▄??▌████??????███     ▌▄▄????█_____________________________ //
    ▌    ??████?███??????██▌
    ?▄▄▄▄?   ??████????▄██?
              ??█████████?
            ▄▄██?██████?█
          ▄██?     ???  █
         ▄█             ?▌
     ▄▄▄▄█▌              ?█▄▄▄▄??▄
    ▌     ?                ??▄▄▄?
     ??▄▄?     ██   
   ???????????????????????????????????? ? 
 - ▌          SanicCRUD-vue              ? ?      
  - ▌                            (o)          ? 
 /- ▌            Go Go Go !               ? ?           
 /  ???????????????????????????????????? ?       
               ██

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/83537.html

相關(guān)文章

  • Sanic前端MVVM 一種一代Python性能全棧開發(fā)實(shí)踐

    摘要:前端一種新一代高性能全棧開發(fā)實(shí)踐背景本項(xiàng)目將使用配合最簡(jiǎn)單的邏輯來(lái)展示一個(gè)基于的全新一代高性能全棧開發(fā)實(shí)踐的為什么是對(duì)于為何不是等著名框架,或許可能很多人會(huì)產(chǎn)生疑惑,本身和非常的相似,而它的出現(xiàn),不僅是大大改進(jìn)過(guò)去時(shí)代性能低下通病,外加配 SanicCRUD-vue Sanic + 前端MVVM 一種新一代Python高性能全棧開發(fā)實(shí)踐showImg(https://segmentfa...

    Profeel 評(píng)論0 收藏0
  • Sanic教程:快速開始

    摘要:快速開始在安裝之前在支持異步的過(guò)程中,都經(jīng)歷了哪些比較重大的更新。踏出第一步我們將正式使用來(lái)構(gòu)建一個(gè)項(xiàng)目,讓我們踏出第一步,利用來(lái)編寫一個(gè)返回字符串的服務(wù)程序。本次示例的源代碼全部在上,見。 快速開始 在安裝Sanic之前,讓我們一起來(lái)看看Python在支持異步的過(guò)程中,都經(jīng)歷了哪些比較重大的更新。 首先是Python3.4版本引入了asyncio,這讓Python有了支持異步IO的標(biāo)...

    warmcheng 評(píng)論0 收藏0
  • SpringBoot-vue 基于Java的微服務(wù)全棧快速開發(fā)實(shí)踐

    摘要:本項(xiàng)目將使用配合最簡(jiǎn)單的邏輯來(lái)展示一個(gè)基于的微服務(wù)全??焖匍_發(fā)實(shí)踐的。提供一系列大型項(xiàng)目常用的非功能性特征,比如內(nèi)嵌服務(wù)器,安全,指標(biāo),健康檢測(cè),外部化配置。 SprintBoot-Vue SpringBoot + 前端MVVM 基于Java的微服務(wù)全??焖匍_發(fā)實(shí)踐 showImg(https://segmentfault.com/img/remote/1460000010167913...

    FleyX 評(píng)論0 收藏0
  • SpringBoot-vue 基于Java的微服務(wù)全棧快速開發(fā)實(shí)踐

    摘要:本項(xiàng)目將使用配合最簡(jiǎn)單的邏輯來(lái)展示一個(gè)基于的微服務(wù)全棧快速開發(fā)實(shí)踐的。提供一系列大型項(xiàng)目常用的非功能性特征,比如內(nèi)嵌服務(wù)器,安全,指標(biāo),健康檢測(cè),外部化配置。 SprintBoot-Vue SpringBoot + 前端MVVM 基于Java的微服務(wù)全棧快速開發(fā)實(shí)踐 showImg(https://segmentfault.com/img/remote/1460000010167913...

    neu 評(píng)論0 收藏0
  • 微信小程序開發(fā)python+sanic 實(shí)現(xiàn)小程序登錄注冊(cè)

    摘要:參考鏈接微信小程序七日談第五天你可能要在登錄功能上花費(fèi)大力氣理解認(rèn)證及實(shí)踐網(wǎng)站微信登錄實(shí)現(xiàn)最后,感謝女朋友支持。 開發(fā)微信小程序時(shí),接入小程序的授權(quán)登錄可以快速實(shí)現(xiàn)用戶注冊(cè)登錄的步驟,是快速建立用戶體系的重要一步。這篇文章將介紹 python + sanic + 微信小程序?qū)崿F(xiàn)用戶快速注冊(cè)登錄全棧方案。 微信小程序登錄時(shí)序圖如下: showImg(https://segmentfaul...

    antz 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<