關於網站選型,用Django重寫我的網站?
各位大俠,本人小白,自學編程,用lamp架構,thinkphp3.2.3,bootstrap3,jquery做了一個知識庫網站,測試網址是http://www.zhishiren.cn/index...。由於沒有經驗,目前感覺是代碼寫的太亂,各種設計也欠考慮,而且現在所用的lamp架構和jquery也有些過時,不利於以後各種高大上功能的擴展(希望能堅持下去),本著生命在於折騰的理念,我也想使用Django加上vue這一套架構(其實我也很想轉向python,本人是在銀行工作,python可能會大有用處),但我研究了Django和vue些知識以後,有些困惑,希望大家能給些建議:
? vue在各種功能上能不能完全代替Jquery?還有什麼樣的js框架適合我的項目?React?? Jquery有bootstrap這樣漂亮的ui框架,vue有沒有配套的ui框架?django是不是自帶一套ui界面啊,我看他的啟動界面還是挺漂亮的。? 我的網站里有一個新聞欄,就是推送各種用戶的新聞,我想這個功能應該是用nosql的資料庫更適合(我猜的),那應該會用到nosql這樣的資料庫如mongodb等,那Django框架對哪一種nosql資料庫匹配更好?
? 除了nosql資料庫的應用,我的網站里還有各種結構化數據,我在django中同時使用結構化的資料庫,如mysql,或者自帶的sqlite,那在同一個項目里同時使用mongodb和mysql,不會有什麼困難吧?最怕有異常八阿哥。? 大家對我這個轉型或者說重構方案有什麼建議?布思梅伊斯 發佈於 8 分鐘前
黃哥幫你理理:
1、90年代開發軟體,是基於 c/s ,胖客戶端,瘦服務端,當年本人用delphi 開發這樣的應用。
2、後來2000年起,互聯網大潮來了,開發是B/S結構,基於瀏覽器的瘦客戶端,業務邏輯在胖服務端。
3、現在基於微服務的天下,手機APP 有點像(胖客戶端,瘦服務端)。
所以你的重構要基於服務化,將你的服務按照RESTFUL API的形式提供服務,供前端Javascript 的代碼調用。
4、 vue在各種功能上能不能完全代替Jquery? 當然能。不然造輪子幹嘛??
5、Django框架是後台開發的,相當於PHP,你說的一套ui界面,這個是Javascript 的事。
6、Django + websocket 適合你新聞的實時推送。
7、django 用app 的概念,完全可以和資料庫隔離,所以不存在不能同時支持不同資料庫的問題。
建議: 將你的服務按照RESTFUL API的形式提供服務,供前端Javascript 的代碼調用。
Vue.js+Django+Django-rest-framework(drf)可以滿足你的需求,前後端用rest-api交互。
不過這樣的話前後端都得重新寫,資料庫結構可以保留,用ORM去適配現有的資料庫結構,而且你還考慮NoSQL,估計要做下資料庫的遷移。不過Django對主流資料庫都支持很好,這個不用擔心,用自己熟悉的就行,比如你打算用mongodb和mysql就沒啥問題,愛怎麼搞怎麼搞。
vue有搭配的ui框架,才用vue的ui的話就用django自帶的ui了,vue+rest的方式還是比自帶的那種寫template的方式好很多的。不過django自帶的admin還是很好用的,這個別丟了。
總結一下就是照著之前的資料庫寫django的model,然後寫drf的views和serializers,別用template,vue端調rest-api實現前端。
你如果真把這個跑通了,對比一下之前的搞法,應該就能體會到「人生苦短我用Python」的含義了。
- Vue
- Flask
- RESTFUL API
- Nosql
不推薦Django,不只是Django,其他像Flask、Tornado等Python系的Web框架統統不推薦!(本人四年Python開發)
那用什麼嘞?噹噹噹噹~,Elixir On Phoenix!!!
下面請聽我來說為什麼。
1. 樓主已然有了PHP的thinkphp開發經驗,這個時候轉Python的Django其實對你幫助不大,只不過把以前的經驗又重新複習了一遍。
2. 從語言上講,由PHP轉到Python,幫助也不是特別大。Python能寫的PHP也不是做不了,比如爬蟲、小工具什麼的。
3. Elixir為什麼好?它是函數式編程語言,有強大的模式匹配、神奇的元編程,能帶給你不一樣的函數式編程體驗。它的底層基於erlang的BEAM虛擬機,語法模擬Ruby,攜OTP神器,輕鬆解決分散式並發問題,項目支持熱更新(不是自動重啟的那種)。在這裡你可以真真正正毫無心理負擔的「隨意飛進程」。
4. Phoenix為什麼好?它繼承了Ruby On Rails的優良基因。有超好用的腳手架,一個命令生成項目目錄、生成各種代碼、生成數據模型。它生成的代碼目錄結構就是最佳實踐,不需要糾結應該怎麼做好。它本身支持websocket,並且自帶一個非常好用的js客戶端。它可以實時編譯前端文件,監控前端和後端的代碼改動,自動刷新頁面,輕鬆愉快的開發體驗。
5. 性能的飛躍提升!要是只是上面那些,還不足以下決心使用phoenix。重點是,做的項目並發高啦!我用python寫的項目,費心勞力的優化,還不及phoenix隨便寫的,憑什麼!!因為依託於BEAM的強大,每個用戶每個請求都是一個獨立進程,而單機輕鬆啟動進程百萬。不需要根據伺服器核心數,啟動對應數量的實例,一個就能充分發揮伺服器的硬體性能。
6. 還有很多好處需要自身體會了……
然後
* 用React,不要Vue。
* UI框架,阿里的Ant Design,是基於React的。
* 數據推送,上面說了Phoenix自帶websocket。
* 不推薦使用nosql資料庫,很多坑。用PostgreSQL不好嗎?啥數據結構都有支持啊,完全不需要nosql。
* 介面方面,還在推薦Restful的是不是有點落後了,難倒不知道github的最新api都用上graphql了嗎。
以上
推薦閱讀:
※由於字體的不同,中文網頁設計應該摸索出一條與西方網頁設計截然不同的路,你同意這個觀點嗎?
※為什麼設計師需要了解歷史
※為何大多數英文網站看上去更美?
※二十年前的網頁是什麼樣子的?
※收藏貼 | 原來導航欄還能這麼做