Magicodes.IE 3.0重磅設計暢談

雪雁發表於2020-11-10

總體設計

總體設計

Magicodes.IE匯入匯出通用庫,支援Dto匯入匯出、模板匯出、花式匯出以及動態匯出,支援Excel、Csv、Word、Pdf和Html。

IE在去年年底重構一次之後,經過這麼長時間的迭代,又迎來了瓶頸。根據本人和HueiFeng的交流,我們決定逐步暫緩小版本的研發,開始IE 3.0的研發和重構之旅。這一次3.0的設計,我們主要考慮了以下方面:

主要解決痛點

在之前的版本迭代中,我們遺留了一些痛點一直並沒得到很好的解決,同時我們也有一些想法,也沒來及處理:

  1. 更友好的本地化支援,以及統一的多語言配置。在之前的版本中,我們雖然可以通過篩選器實現,但是並不太友好。

  2. 進一步簡化和加強動態匯出。動態選擇列匯出在很多業務中比較常見,我們希望通過更簡單的API給使用者提供更強大的動態匯出功能,而無需使用者動態建立DTO並且轉換資料型別。

  3. 合併列頭。

    合併列頭
  4. 單元格合併。目前主要考慮同一個值自動合併的功能。

    合併單元格
  5. 重構並重新定義樣式。支援使用者能夠非常便捷的定義表樣式、列樣式(包含列寬、固定列)、行樣式(包含行高)以及單元格樣式(包含高寬、背景)。

  6. 脫離特性類重構底層匯入匯出的最基礎的API。以便支援除了特性類匯入匯出之外,還支援動態匯出以及JSON、XML配置匯出。

  7. 提供更多更簡單的鉤子函式,覆蓋匯入匯出的各個處理環節,方便使用者按需處理。

  8. 新增列模型封裝,支援日期列、圖片列、進度列、狀態列、開關列、標籤列、評星列、公式列等。

     

    列支援
     

為什麼要做IE?

其實在IE之前,我們有很多選擇,OpenXML、NPOI、EPPlus,為什麼我們選擇做IE呢?

在日常的業務開發之中,匯入匯出是非常常見的業務,甚至滲漏到了每個列表功能之中,但是就是這麼一個常見業務,我們往往需要花費一定精力,而且在很多時候都是重複開發。經驗豐富的開發者都清楚,寫一個匯入匯出並不難,但是寫好一個匯入匯出業務並不簡單,我們就拿一個普通的匯入業務來說,往往我們要考慮到以下內容:

  1. 針對當前匯入業務編寫匯入模板生成(寫死不易於維護)

  2. 匯入時需要先檢查相關列和格式是否有效

  3. 資料校驗。對於Excel這種放開了限制的輸入方式,使用者的輸入內容會讓你懷疑人生。稍有疏漏,程式都會產生各種意外。並且,如果驗證不通過,我們還需要在UI介面上提示使用者哪裡有錯誤,甚至要在使用者的匯入檔案中標註出來。

  4. 資料型別轉換和適配。

看了以上流程,那麼你還會覺得做一個匯入簡單麼?正因為如此,Magicodes.IE應運而生,我們希望通過IE來幫助大家簡化匯入、匯出業務,並且程式碼更簡潔、更友好以及更易於維護和擴充套件。

需求是無止境的,IE經過長久的迭代,目前最新版本為2.5版本。功能已經夠多了,但是還是不夠滿意。經過我們的再三思考,我們決定暫緩小版本迭代,直接開始3.0的設計和研發。我們希望在3.0進一步重構,打好基礎,一方面徹底解決一些之前未實現的功能,另一方面,讓部分API更友好,同時極大的提升IE的擴充套件性。

貢獻邀請

對於3.0版本目前我們還處於設計和思考階段,當然3.0也是IE里程碑中的一項重大的更新,是值得記錄的,我們很期待3.0版本的釋出,但是由於該版本我們要做一個歷史性的大更新,我們開發團隊人數也不足,目前缺少貢獻者的參與,我們發自內心的希望大家能夠加入我們,一起來建設IE,沒有時間不要緊,只要每週抽出來幾個小時。能力達不到不要緊,一方面我們可以先實現功能,再優化程式碼;另一方便,我們開發團隊以及群裡的小夥伴均可提供思路以及一對一的支援。

最後

3.0版本我們目前還在設計和思考階段,歡迎大家多多提供寶貴意見和建議,如果合理我們會一併納入。不過,由於我們精力實在有限,也非常發自內心的希望大家能夠加入我們,一起來建設IE。沒有時間不要緊,只要每週抽出幾個小時。能力達不到不要緊,一方面我們可以先實現功能,再優化程式碼;另一方面,我和HueiFeng以及群裡的小夥伴均可提供思路以及一對一的支援。

針對IE,我們是認真的,也希望認真的你能夠加入我們!

最後,發起一個求助:https://github.com/dotnetcore/Magicodes.IE/issues/171
【翻譯求助】教程翻譯求助。Tutorial translation help #171,希望有人能夠抽空幫忙整理教程並且主導翻譯工作。

相關文章