写点什么

随访: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:591445
用户头像

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

关注

评论

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

正式发布后的一年,我们都做了什么? | Sermant 2023年度总结

华为云开源

开源 微服务 服务治理 sermant

区块链游戏解说:什么是 Nine Chronicles

Footprint Analytics

区块链游戏

跨国制造商部署SD-WAN提升全球业务案例分析

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

微帧为央视大年初二《2024春节戏曲晚会》提供AI画质增强服务

微帧Visionular

画质增强 超高清处理

spark为什么比mapreduce快?

京东科技开发者

安全利器!龙蜥推出机密计算远程证明服务—OAAS 诚邀广大用户测试

OpenAnolis小助手

开源 安全 龙蜥社区 机密计算 OAAS

Sora文生视频模型深度剖析:全网独家指南,洞悉98%关键信息,纯干货

汀丶人工智能

Pika sora 文生视频 文生视频模型

如何做代币分析:以 BNB 币为例

Footprint Analytics

Token 代币 bnb

户外全彩LED显示屏的验收标准

Dylan

全彩LED显示屏 户外LED显示屏 led显示屏厂家

一条Linux命令打败99%的运维

伤感汤姆布利柏

适用于预算少企业的网络组网方案

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

多人协同开发场景,如何做到高效发布

阿里云云效

阿里云 云原生 云效

为什么程序员不能一次性写好,需要不停改bug?

伤感汤姆布利柏

分布式场景怎么Join | 京东云技术团队

京东科技开发者

APISIX 可观测性最佳实践

观测云

APISIX

旁门左道:借助 HttpClientHandler 拦截请求,体验 Semantic Kernel 插件

不在线第一只蜗牛

Java c++ 开发语言

专业期刊邀请,天谋科技围绕 IoTDB 及 TsFile 刊文《Java aktuell》并将于 JavaLand 峰会作报告

Apache IoTDB

软件测试学习笔记丨ES(Elasticsearch)介绍

测试人

软件测试 自动化测试 测试开发

多人协同开发场景,如何做到高效发布

阿里巴巴云原生

阿里云 微服务 云原生 云效

面试官:如何实现多级缓存?

王磊

Java 面试

人工智能的起源和应用场景

小齐写代码

提升网络灵活性,SD-WAN助您快速应对备用线路需求

Ogcloud

网络 SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商

京东商品详情数据采集方法代码展示

tbapi

京东API接口 京东商品详情接口

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