写点什么

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

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

关注

评论

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

Netty 核心源码解读 —— 开篇

Java 程序员 后端

pro、pre、test、dev环境

Java 程序员 后端

mysql系列:innodb日志管理,带你高效快速理解

Java 程序员 后端

OpenKruise v0

Java 程序员 后端

Oracle数据库访问性能优化

Java 程序员 后端

MySQL没有RowNum,那我该怎么按“行”查询或删除数据?

Java 程序员 后端

Netty学习之旅------Netty Channel 概述

Java 程序员 后端

netty的线程模型, 调优 及 献上写过注释的源码工程

Java 程序员 后端

OpenSSL 生成CA证书及终端用户证书

Java 程序员 后端

OpenTelemetry 简析

Java 程序员 后端

ReactJS实战之生命周期

Java 程序员 后端

Netty学习之旅------图说Netty线程模型

Java 程序员 后端

OpenFaaS实战之六:of-watchdog(为性能而生)

Java 程序员 后端

pageHelper----Mybaits分页插件

Java 程序员 后端

mysql用户&权限总结

Java 程序员 后端

MySQL索引篇之索引存储模型

Java 程序员 后端

Netty常量池

Java 程序员 后端

Netty编解码方案之Protobuf介绍

Java 程序员 后端

NoSQL到底怎么用?

Java 程序员 后端

Qt知识点梳理 —— 获取设备CPU、内存、磁盘等硬件信息

Java 程序员 后端

Nginx详解Location匹配规则

Java 程序员 后端

NodeJS快速入门必备技能

Java 程序员 后端

OpenFaaS实战之四:模板操作(template)

Java 程序员 后端

Mysql的“三高”集群架构

Java 程序员 后端

nodeJS——网络编程

Java 程序员 后端

OpenFaaS实战之六:of-watchdog(为性能而生)(1)

Java 程序员 后端

MySQL没有RowNum,那我该怎么按“行”查询或删除数据?(1)

Java 程序员 后端

Nginx服务器配置

Java 程序员 后端

Nginx超详细的常用两种安装方式

Java 程序员 后端

Protobuf 属性解释

Java 程序员 后端

Redis 的持久化机制和AOF文件重写原理

Java 程序员 后端

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