1 項(xiàng)目描述##
WECO是一個(gè)開源的共創(chuàng)社區(qū)贝次,是一片創(chuàng)意互相碰撞的土壤。在這里你可以查看彰导、喜歡蛔翅、評論他人發(fā)布的創(chuàng)意,可以關(guān)注和私信感興趣的用戶位谋,當(dāng)然還可以發(fā)布屬于自己的創(chuàng)意山析!
作為WECO的技術(shù)支持和開發(fā)人員,簡單來說掏父,WECO是一個(gè)類似微博和知乎的內(nèi)容管理系統(tǒng)笋轨,只不過這里的內(nèi)容元素,也即微博的微型博客赊淑、知乎的問題以及答案爵政,變?yōu)榱藙?chuàng)意。因此在考慮功能設(shè)計(jì)的時(shí)候陶缺,主要是從創(chuàng)意本身的特點(diǎn)出發(fā)钾挟,并結(jié)合社交平臺和內(nèi)容管理系統(tǒng)常見功能進(jìn)行考慮。
2 技術(shù)框架##
后端框架我選擇了Flask饱岸,一個(gè)輕量級的python框架等龙,前端使用Flask依賴的Jinjia渲染模版,以及Jquery伶贰、Bootstrap和font-awesome等蛛砰。項(xiàng)目中還用Flask編寫了一些RESTful APIs,基于動(dòng)態(tài)分配token機(jī)制實(shí)現(xiàn)用戶的認(rèn)證和授權(quán)黍衙。
由于WECO屬于商業(yè)項(xiàng)目泥畅,故此處不直接透露其部署地址,但代碼始終堅(jiān)持開源原則琅翻,托管于Github位仁,clone下來后經(jīng)過幾步簡單的配置,一個(gè)嶄新的WECO(或者說常見功能皆具備的社交平臺)就可以運(yùn)行了方椎。開發(fā)時(shí)間為1個(gè)月聂抢,總共有205次commit,代碼量為萬行級別棠众。
3 功能介紹##
WECO 1.0已經(jīng)實(shí)現(xiàn)的功能包括但不僅限于:
- 用戶注冊琳疏、登錄有决;
- 以“最新”、“最熱”兩種排序方式在首頁瀑布流展示最新創(chuàng)意空盼;
- 創(chuàng)意詳情頁包括封面圖片书幕、標(biāo)題、分類揽趾、標(biāo)簽台汇、作者信息、點(diǎn)贊數(shù)篱瞎、閱讀量苟呐、評論數(shù)和創(chuàng)意內(nèi)容,喜歡創(chuàng)意俐筋、評論創(chuàng)意和評論點(diǎn)贊功能也已經(jīng)實(shí)現(xiàn)牵素;
- 查看其他用戶筒占,包括ta的頭像、昵稱川慌、個(gè)性標(biāo)簽扁誓,ta的基本資料、ta的創(chuàng)意噪生、ta喜歡的創(chuàng)意、ta的關(guān)注和ta的粉絲,關(guān)注用戶和發(fā)送私信的功能也已經(jīng)實(shí)現(xiàn)抱怔;
- 填寫完創(chuàng)意標(biāo)題、分類和標(biāo)簽嘀倒,選擇創(chuàng)意封面圖片屈留、編輯好創(chuàng)意內(nèi)容之后即可發(fā)布創(chuàng)意。創(chuàng)意的內(nèi)容由一段段文字测蘑、一張張圖片和一個(gè)個(gè)視頻等原子元素組成灌危,發(fā)布之后還可以繼續(xù)以時(shí)間軸的順序編輯、添加和刪除創(chuàng)意內(nèi)容的各個(gè)原子元素碳胳;
- 編輯創(chuàng)意勇蝙,包括更換封面圖片、修改創(chuàng)意標(biāo)題挨约、分類和標(biāo)簽等內(nèi)容味混;
- 搜索創(chuàng)意,搜索目標(biāo)可以是創(chuàng)意或其他用戶诫惭,支持關(guān)鍵詞匹配搜索和創(chuàng)意分類搜索翁锡,并且實(shí)時(shí)顯示“我”的最近搜索記錄和當(dāng)前系統(tǒng)實(shí)時(shí)熱搜;
- 個(gè)人中心夕土,在這里可以編輯我的個(gè)人資料馆衔,包括修改頭像、昵稱、性別哈踱、個(gè)性標(biāo)簽等信息荒适,并可以刪除自己的創(chuàng)意、取消喜歡已經(jīng)喜歡的創(chuàng)意开镣、取消關(guān)注已經(jīng)關(guān)注的用戶刀诬、查看有哪些粉絲關(guān)注了自己;
- 我的消息邪财,在這里可以看到和自己相關(guān)的動(dòng)態(tài)陕壹,如他人關(guān)注了自己、喜歡了自己的創(chuàng)意等树埠,還可以看到別人發(fā)送的私信消息并打開私信窗糠馆。
文字介紹完了,準(zhǔn)備開始發(fā)圖了怎憋!
4 遇到的困難##
大的技術(shù)難點(diǎn)有三又碌,第一是Flask應(yīng)用的部署,需要使用到wsgi绊袋,這里有參考介紹毕匀;第二是APIs的設(shè)計(jì),采取動(dòng)態(tài)分配token機(jī)制的話需要考慮到多設(shè)備登錄有效性問題癌别;第三是應(yīng)用的模塊化皂岔,Blueprint是一個(gè)好的解決方案,或者這里也有指導(dǎo)介紹展姐。
小的技術(shù)難點(diǎn)包括圖片上傳躁垛、前端壓縮和裁剪等,主要使用了lrz和cropit兩個(gè)js庫圾笨,萬事開頭難教馆,一開始的摸索是必須的,學(xué)會之后就會方便高效很多擂达。
5 總結(jié)##
本次項(xiàng)目給了我一個(gè)Flask實(shí)戰(zhàn)的好機(jī)會土铺,其實(shí)也是邊學(xué)邊用、在使用的過程中加強(qiáng)自己對Flask的熟悉程度谍婉。Flask相對于CI舒憾、TP等php框架最大最明顯的優(yōu)勢是其為python框架,而python有著各個(gè)領(lǐng)域浩瀚無盡的拓展包穗熬。另外也接觸了前端裁剪镀迂、壓縮、上傳圖片唤蔗,這些點(diǎn)在現(xiàn)在常見的應(yīng)用中還是相當(dāng)重要的探遵。