最近寫代碼的時間實在不多,而且今年又打算業余學習下Unity3D以及NodeJs(用於開發游戲后台),因此完善框架的時間更不多了。不過我會一直堅持下去的,同時我也希望有興趣的同學可以加入Push你的代碼。
獲取地址:https://github.com/magicodes/Magicodes.NET/releases/tag/V1.0.0.5Beta
最新代碼地址:https://github.com/magicodes/Magicodes.NET
如果碰到問題,請先閱讀此鏈接:FAQ
這次更新主要內容如下所示,具體功能點你可以在Worktile上查看:
點此查看【需要注冊】(如果無法打開,請復制下面鏈接https://worktile.com/project/4a961c1c28cf4b07bdb4a07f661c7fcf/task)
下面我開始大致的介紹介紹。
關於新的后台UI
之所以棄用ACE Admin,是因為ACE Admin前端太重,不利於生成與維護。另外,我想更好的使用ASP.NET MVC。
關於代碼生成
你可以在文檔的節11看到整個的詳細說明,如:
這里,我簡略的帶過。
自從放棄了ASP.NET Scaffolding Template(ASP.NET基架模板)(具體見博文:Magicodes.NET框架之路——讓代碼再飛一會(ASP.NET Scaffolding)),我就開始了代碼生成的自主探索之旅。
首先介紹下我們的生成理念——基於Model以及輔助特性生成增刪改查控制器與視圖。
按照新的生成方式,我們的操作順序如下:
1. 添加Model,並且配置好生成特性(可以參考上面的輔助生成特性)
2. 添加“入口”T4模板(暫且允許我這么稱呼,它用於引用一些公共T4模板,並且設置生成規則/參數)
3. 設置生成參數
4. 保存生成或者運行生成
5. 查看並確認生成結果(控制器、視圖目錄以及相關視圖文件是否已經成功生成)
下面是部分效果圖:
從上圖可以看出,簡單的CRUD以及配置信息的代碼已經生成。但是投入到實際使用還有很多工作量,比如:
- 根據屬性類型自動加載相應控件。(目前只做了部分,比如日歷控件,下拉列表等尚未實現)
- 搜索尚未實現(如上一版一樣,集成OData查詢即可)
- 根據輔助生成特性來完善一些邏輯。比如這里明顯是存在父子級關系的,那么我希望后面能夠增加相應特性來生成更完善的代碼。
不過目前這版,生成基礎架構后,你可以基於生成的代碼改改用了。不過,為了使生成的代碼更加靈活,因此我將生成的View模板放在了Magicodes.Admin插件的Magicodes.Templates目錄。
做到這一步,打通這條路子,我就耗費了不少時間(包括走了不少彎路)。希望有興趣的朋友可以將我剛才提及的一些不完善的地方完善完善,我實在是心有余而力不足啊。
關於后台重構
主要體現在以下幾點:
-
增加了Magicodes.Admin插件,用來承載后台業務
-
使用了新的后台模板,並且提供了個人頁面、郵箱、通訊錄等模板(如上所示)
-
重寫了整個后台機制,提供了后台插件類型
-
重寫了CRUD生成(見上文)
-
重寫了配置信息生成(見上文)
-
重寫了Admin路由,后台插件請求url默認前綴為Admin
關於MVC插件
由於上文提及了后台插件,那么在這里就提提,具體的請查看文檔:
門戶插件:
后台插件是本次重構增加的,后面還會對其功能進行擴展:
MVC插件是之前就存在的,如下所示:
關於文檔協議管理器的重構
重構了文檔協議管理器,並且支持配置文件配置。具體如文檔所示:
關於插件bundles支持
如標題所示,該功能是為了支持Microsoft.AspNet.Web.Optimization,以便將多個資源合並並且能夠壓縮資源(css和js)。你可以在文檔中找到詳細說明,如:
關於插件資源請求
有時候,我們並不想把所有的資源都bundle,再說了,bundle只能bundle css和js,圖片怎么辦,字體文件怎么破?
如下所示,我們會經常使用字體文件:
@Styles.Render("~/fonts/font-awesome/css/font-awesome.min.css")
根據這種情況,在新的版本里,CSS中的字體文件亦會指向插件對應的目錄:
不過值得注意的是,如果字體文件無法加載,請確定是否已經添加了相應的Mime類型。比如上面的擴展名為“.woff2”的文件。
關於該節的說明你可以在文檔插件請求一節中找到,如:
關於插件后台菜單配置
現在,插件配置文件中已經支持配置后台菜單,如下所示:
關於框架文檔
目前框架文檔已遷移至Worktile,因為其已經集成了Web Office App,查看Word會比較方便。鏈接如下:https://worktile.com/project/4a961c1c28cf4b07bdb4a07f661c7fcf/folder/b99d13f90d55401faba366a961e6d103
上面很多截圖就是使用Web打開截取的。
關於反饋
由於個人工作時間超級忙,因此QQ群溝通我是拒絕的。你可以在GitHub上添加Issues,如果我看到,我想我會第一時間答復的。
https://github.com/magicodes/Magicodes.NET/issues?q=is%3Aissue
目前有幾種類型的Label,請在添加的時候選擇相應類型:
- 建議以及反饋請使用【Feedback(反饋與建議)】
- Bug請使用【Bug】
- 需要幫助請使用【help wanted(需要幫助)】
- 疑問請使用【question(疑問)】
關於V0.0.0.6Beta版?!
下一版該做什么?說實話需要做的還很多,很多功能由於改來改去,體驗並不是很好,比如CRUD生成的界面。不過總得需要人慢慢來迭代的,而我希望有朋友能夠Pull requests來fix這些問題。而我更多的是注重於框架本身。
對於V0.0.0.6Beta版,如果你有好的建議,您可以在GitHub上添加相應的Issues,如果建議不錯,我會采納的。當然不一定會安排在V0.0.0.6Beta版本。
另外,最近有一個想法,想提供一種基於.NET開發的WebSocket的服務端框架,無論是用於開發網頁還是用於搭建游戲服務(不要說SignalR)。為什么有這個想法:可以這么說,Ajax所帶來的用戶體驗挽救了當時正飽受詬病,正在風雨飄搖中的Javascript。因此,技術在不斷地進步亦在不斷地帶來新的更好的用戶體驗。在這個用戶都知道緩存(被程序員哥哥說的耳朵都起繭了,能不知道么),都知道F5的時代,突然有些網站你發現他是即時的,你不需要F5了,你發現你是震撼的!!!現在就有這種例子,比如Worktile,其后台是使用NodeJs開發的,無論是其消息機制還是多人協作下(比如添加列表與任務),它都是即時的,也就是意味着你不需要去刷新。也許少按幾個F5改變不了什么,但是對一些協作辦公之類的Web系統來說,意義真的很大。以前我曾想過,但是更多的僅是集成到站內消息,現在我想也許可以考慮設計一種機制或者框架來處理所有。當然目前只是想想,我實在沒這個精力。