写点什么

随访:Razor 与 F#和其他语言

  • 2011-01-04
  • 本文字数:699 字

    阅读完需:约 2 分钟

上个月,Vladimir Kelman 提出这样一个问题:可否将 F#与新的 Razor 视图引擎搭配使用。在咨询过 Scott Guthrie 和 Marcin Dobosz 后,我们知道这是可行的,前提是你需要自己构建所有必要的插件才行。

第一个挑战就是语法。与老式的 ASP 风格的视图引擎不同,视图与内联代码之间的界限变得相当薄,很多语言从语法上就无法实现。根据 Scott Guthrie 所述:“从概念上来说,Razor 是支持 F#的(这意味着语法上是没问题的)”。接下来,他提到了与 Marcin Dobosz 的对话,后者解释了一些必要条件。

在 Razor 端(System.Web.Razor.dll),你需要实现自己的类,让其继承自 CodeParser、RazorCodeGenerator 和 RazorCodeLanguage(还有其他必要的辅助类),然后使用 RazorCodeLanguage.Language 注册文件扩展。我们并没有提供实现自己的语言的任何指南,因此你需要查看源代码看看 CSharp 或 VB 相关的类是如何做的。 在 MVC 端(只有在支持 @model 时才需要这步),你需要继承自 MvcWebPageRazorHost 并返回具体的 MVC 解析器和生成器,他们需要继承自基本的解析器和生成器。这时还需要查看 System.Web.Mvc.Razor 命名空间中的类的源代码。你还可以在基本的解析器和生成器中实现它,这样所有一切都只能用在 MVC 项目中了。

当然了,这些只不过是让 Razor 能够处理新语言所需做的最少的工作。如果你想要编写解析器和生成器,那么你可能还想创建 Visual Studio 所需的项目、条目以及 T4 模板以提供更好的用户体验。

ASP.NET MVC 3 2010 年 10 月 Beta 版的源代码位于 Codeplex 上,基于“ Microsoft Source License for ASP.NET Pre-Release Components ”。

查看英文原文: Follow-up: Razor with F# and Other Languages

2011-01-04 07:591426
用户头像

发布了 88 篇内容, 共 272.7 次阅读, 收获喜欢 9 次。

关注

评论

发布
暂无评论
发现更多内容

【愚公系列】2022年05月 二十三种设计模式(二)-抽象工厂模式(Abstract Factory Pattern)

愚公搬代码

5月月更

读《Software Engineering at Google》(24)

术子米德

架构师成长笔记

SAP 电商云的 Spartacus Storefront 部署到 CCV2 的前提条件

汪子熙

typescript 电商 SAP commerce 5月月更

阿里巴巴Java性能调优实战

Joseph295

Netty篇之内存管理器

邱学喆

内存管理器 netty内存管理 jemalloc管理器

读《Software Engineering at Google》(17)

术子米德

架构师成长笔记

读《Software Engineering at Google》(16)

术子米德

架构师成长笔记

Nacos 源码简析之 Nacos Client 自动注册原理

道嗔

源码 nacos

[Day33-02]-[二叉树] 恢复二叉搜索树

方勇(gopher)

LeetCode 二叉树 数据结构和算法

《Linux是怎么样工作的》读书笔记

懒时小窝

Linux Linux Kenel

读《Software Engineering at Google》(21)

术子米德

架构师成长笔记

读《Software Engineering at Google》(22)

术子米德

架构师成长笔记

二、应用高可用设计要点

穿过生命散发芬芳

5月月更 高可用设计

读《Software Engineering at Google》(19)

术子米德

架构师成长笔记

读《Software Engineering at Google》(23)

术子米德

架构师成长笔记

C语言总结_字符串全方位练习

DS小龙哥

5月月更

公众号运营推广方式

源字节1号

软件开发

[Day33-03]-[二叉树] 二叉树展开为链表

方勇(gopher)

LeetCode 二叉树 数据结构和算法

Apache Calcite整体架构及处理流程

不穿格子衬衫的程序员

大数据 Apache Calcite database SQL解析

读《Software Engineering at Google》(18)

术子米德

架构师成长笔记

LeetCode 242:有效的字母异位词

武师叔

5月月更

如何在 WordPress 中创建登录页面

海拥(haiyong.site)

WordPress 5月月更

Centos7升级Python2到Python3

入门小站

Linux

MyBatis 的动态 SQL超详细讲解

顾言

mybatis 动态SQL

maven构建docker镜像三部曲之三:推送到远程仓库(内网和阿里云)

程序员欣宸

Java Docker 5月月更

某年某周每一天的时间是多少

入门小站

工具

在线Excel转YAML工具

入门小站

工具

Go链表与切片比较

jinjin

List 链表 slice Go 语言 切片

ubuntu 18及以上版本配置IP的方法,你get了吗

伍工

Linux 网络

TypeScript 概述

Emperor_LawD

typescript 5月月更

读《Software Engineering at Google》(20)

术子米德

架构师成长笔记

随访:Razor与F#和其他语言_.NET_Jonathan Allen_InfoQ精选文章