我正在尋找使用F#將一些HTML輸出到網頁。有任何想法嗎?使用F#進行簡單的.NET Web開發#
回答
爲了給出一些具體的「HOWTO」,我嘗試創建一個簡單的ASP.NET MVC應用程序,它在F#中實現了關鍵部分。正如在引用的答案中指出的那樣,使用F#進行Web開發的最佳方式是創建一個C#Web應用程序,並將實現實際行爲的所有類型移至F#庫。儘管有可能直接創建F#web項目,但有很多限制(例如,不完美的智能感知和其他可能的問題),所以在C#中管理aspx
文件可能是一個更好的主意。
這裏是我做的(使用Visual Studio 2010):
- 創建一個新的C#項目 「ASP.NET MVC 2 Web應用程序」。這將創建一個帶有一些初始模板和幾頁的新C#項目。我會忽略處理帳戶的頁面(您可以刪除它)。
Controllers
中有HomeController.cs
文件,其中包含主頁的功能(加載數據等)。您可以刪除文件 - 我們將在F#中重新實現它。- 添加新的「F#庫」項目並添加對ASP.NET MVC程序集的引用。其中有很多(參見C#項目),但最重要的是,您需要
System.Web.Mvc.dll
和其他引用此引用的其他引用(F#編譯器會告訴您需要哪些引用)。 - 現在,將下面的代碼添加到
Module1.fs
- 這實現原來的HomeController
,它曾經是用C#編寫的。
的源代碼看起來是這樣的:
namespace MvcApplication1.Controllers
open System
open System.Web.Mvc
[<HandleError>]
type HomeController() =
inherit Controller()
member x.Index() =
x.ViewData.["Message"] <- "Welcome from F#"
x.View() :> ActionResult
member x.About() : ActionResult =
x.View() :> ActionResult
這是一個簡單的重新實現原來的C#代碼(創建一個單獨的類)的。我使用了原來的C#命名空間,以便MVC框架可以輕鬆找到它。
來自C#項目的文件Views\Home\Index.aspx
定義了用戶界面,並使用您設置爲來自F#項目的ViewData
字典的數據。
這個「HOWTO」顯示瞭如何使用F#編寫ASP.NET MVC應用程序,但創建普通WebForms應用程序的步驟本質上是相同的 - 創建一個C#Web應用程序並將實現類移動到F#庫,它將從C#Web應用程序中引用(它實際上不包含太多的C#代碼)。
謝謝!這正是我之後的事情! = d 一件事:我注意到,這個工程: 「成員x.Index()= x.View()」 注缺乏類型註釋和鑄造的。這個可以嗎?它工作正常,但我很好奇,爲什麼你做了不同的事情。 – 2010-05-02 21:59:42
@Matt:如果它有效,那麼我認爲它是正確的:-)。我認爲MVC在內部使用Reflection,所以它可能有點靈活。我以不同的方式做了我的版本,因爲我只是翻譯了C#版本(就像它一樣,以避免可能出現的各種細節問題)。 – 2010-05-02 22:17:22
如果有人有興趣在一個更詳細的討論,我寫了一篇關於這個主題的文章:
文章顯示了F#創建了一個相對簡單的MVC Web應用程序。控制器和模型在單獨的F#庫中實現(與路由映射一起)。該示例還演示瞭如何使用F#中的LINQ進行數據訪問(包括一些整潔的技巧,例如引用的組合)。
- ASP.NET and F# (I.) - Creating MVC web applications in F#
- Visual Studio 2010 Template - 添加MVC Web應用程序,以 「新項目」
- 1. F#web開發
- 2. 從.Net Web開發到Java Web開發
- 3. 今天開始用MVC4 Web Api進行開發,使用Beta?
- 4. 使用RhinoMocks進行簡單嘲弄的問題.NET
- 5. 如何在vim中使用縮進進行Web開發?
- 6. 使用Eclipse進行.NET開發是否可行?
- 7. 使用Mac進行開發
- 8. 使用C#.NET進行網絡開發的好處
- 9. 簡單的Web使用Python
- 10. 使用虛擬化技術進行Web開發的優勢
- 11. 使用虛擬PC進行與Oracle的Web開發
- 12. 在Eclipse中使用HTTPS進行Web應用程序開發
- 13. 「使用Rails進行敏捷web開發」一書:未應用CSS
- 14. 使用SQLAlchemy進行簡單驗證
- 15. Java Web服務開發 - 用於簡單安裝的庫?
- 16. 使用SELECT進行簡單BOOLEAN評估
- 17. 使用SQL Server Express進行開發並使用SQL Server 2008進行開發?
- 18. 針對Web服務進行開發
- 19. 開源在Windows中使用C++進行簡單語音識別
- 20. 爲什麼不使用C編程語言進行Web開發
- 21. 使用Web開發進行版本控制
- 22. 使用Dalvik VM On服務器進行Web開發?
- 23. 使用Ruby on Rails進行語義Web開發
- 24. 如何使用Git存儲庫進行Web開發(和部署)?
- 25. 是否值得學習使用Emacs進行Web開發
- 26. 我可以使用spring liferay進行移動web開發
- 27. 我應該使用多少Silverlight進行Web開發?
- 28. 使用Rails進行敏捷Web開發 - ActiveRecord :: StatementInvalid錯誤
- 29. 使用Emacs進行Web開發? (Php/mysql/javascript/css/html
- 30. 哪個Eclipse發行版適合使用Python,PHP或Perl進行Web開發?
看一看這個問題:HTTP://計算器。com/questions/1135959/f-and-asp-net – 2010-05-02 20:01:31
如果你問的是關於ASP.NET(我認爲是這樣,基於標籤),那麼它可能是重複的。但是,還有其他方法可以從F#生成HTML(例如,直接進行,但這可能不是您要做的)。 – 2010-05-02 20:13:48
我所看到的所有相關問題都表明這是可能的,但在解釋實際操作中缺乏細節。 – 2010-05-02 20:27:12