簡體   English   中英

NVelocity項目已經死了嗎? 還有替代品嗎?

[英]Is the NVelocity project dead? Are there alternatives?

我正在尋找.NET / C#的模板引擎來在我的應用程序中生成電子郵件通知。 我過去讀過有關NVelocity的內容並認為它符合我的需求,但似乎這個項目已經死了。

您是否仍然建議將NVelocity用於此目的,或者您可以建議任何替代方案嗎?

注意:我發現了一些其他模板引擎,但這些引擎主要是ASP.NET MVC(Brail,NHaml等)的“視圖引擎”。 但我認為這些不是我想要的。

Castle Project分叉了該項目並進行了維護,最近於2010年12月10日發布了1.1.1版本。更多詳細信息可以在Castle Projects NVelocity網站上找到 他們還對其進行了一些改進,其細節可以在他們的NVelocity改進頁面找到。 該項目看起來已經死了,在MonoRail 3中,它已經被基於Razor的Castle Blade所取代。

如果您正在尋找替代方案,那么我建議使用ASP.Net MVC3或Spark View EngineRazor視圖 引擎

開源項目RazorEngine允許您使用ASP.Net MVC或Web頁面之外的Razor View引擎,以便您可以使用它來生成模板化電子郵件。

由於NVelocity似乎已經死亡(再次),我建議使用DotLiquid 目前還不能說太多,因為我還在評估它,但它確實看起來很有前途(並建立MonoTouch / MonoDroid庫,因為我很關心)。

更新 [2012年6月11日]

將“安全”類/集合作為模型的約束可能是頭痛的主要原因。 在評估此引擎時,您可能希望從這一點開始。

Codeplex上有項目。

http://www.codeplex.com/NVelocity

項目描述:NVelocity是一個非常有道理的開源java模板工程框架的端口,速度為1.6。 NVelocity是一個用C#編寫的純.Net庫,目前面向Framework 3.5版。

簽入的初始源代碼似乎是直接來自svn.castleproject.org。

創建CodePlex項目的人(用戶名:TerryLiang)也在8月份從nLucene創建了一個。 對於那個項目,從那以后他已經制作了大約50個簽到,所以也許他正計划在該項目上做一些認真的工作。

除了很難找到最新版本的項目之外,NVelocity沒有任何問題。 Google通常會將舊的sourceforge鏈接作為第一個匹配,而codeplex鏈接是下一個最常見的鏈接。 得到它的地方是來自Castle的Pervez Choudhury提到的。 我們在工作中使用Castle版本的NVelocity,它很棒。

自從第一次提出這個問題以來,這幾年出現了另一種選擇,那就是微軟的T4。 大多數人認為T4是預編譯生成器,因為它是第一次發布的,但實際上你現在可以用它來生成生成器類並在運行時進行動態生成。 它被稱為預處理的T4模板,您可以在這里閱讀更多相關信息。 它的優點是它已經內置在Visual Studio中,因此您無需執行任何特殊操作即可。

您可以使用brail或nhaml standalone來生成HTML電子郵件。

nhaml的核心(不確定brail ??)沒有引用MVC或ASP。

我使用nhaml來生成XPS文檔,以便從win表單應用程序進行打印和報告。

如果它必須是文本或許http://www.stringtemplate.org/

這里有一個類似的問題如何使用Brail作為獨立的通用模板引擎(如NVelocity)?

我沒有看到不使用NVelocity(Castle項目分叉)的理由。 它是穩定的,您的特定需求(電子郵件模板)可能沒有使用NVelocity的其他項目那么復雜,所以您不應該期待任何問題。

我無法為DotLiquid提供 Sorin,所以只想添加我的評論 - 它似乎是一個積極開發的優秀平台。

並且它們具有trunk版本中的功能(不是在發布的dll中),如果以這種方式注冊,則可以使用pocos而無需從任何基類繼承:

foreach (var type in {Assembly}.GetTypes())
    Template.RegisterSafeType(type, type.GetProperties().Select(p => p.Name).ToArray());

這解決了索林提到的頭痛問題。

StringTemplate也是一件好事,但是過於嚴格和限制,模板太純粹的視圖,使用起來很不實際......

我同意西蒙的意見; http://www.stringtemplate.org/非常出色,設計精良,並且得到了積極的維護。

您可以使用IKVM將其轉換為程序集,從而在.Net中使用原始(且經常更新)的Velocity Java版本。 我用這種方式成功地使用了速度來生成.Net下的代碼。 你也可以看一下StringTemplate。 有StringTemplate的java和C#版本。 你可以在這里找到一個關於在.Net中使用Velocity的快速迷你教程。 我建議仔細看看StringTemplate ,因為我認為它是一個更干凈的模板引擎(我是最近的轉換)。

我建議使用XSLT進行模板化。 是的,它需要更多的時間來學習技術,但是你有比其他任何東西更靈活的模板解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM