NancyFX 第三章 Web框架
如果使用Nancy作为一个WEB框架而言,会有什么不同?实际上很多。
在使用Nancy框架为网页添加Rest节点和路由和之前的Rest框架中是相同的,这方面没有什么需要学习的了。Nancy采用一贯的处理方式, 通过一些模块化的组件进行扩充功能,使得更加适合开发一个完整的WEB站点。
Nancy非常适合提供基于自定义路由的静态文件和基于数据的视图(就像ASP.NET MVC),事实上,你甚至可以去定义一个引用的别名或路由来指向已经存在的特定静态文件,而不是动态生成一个。
请参见以下示例。 想象在Nancy的Bootstrapper(后面会有介绍)有以下代码
protected override void ConfigureConventions(NancyConventions
nancyConventions)
{
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddFile(
"/jquery",
"scripts/Jquery-2.1.1.min.js"));
}
然后我就可以在我添加的HTML页面或试图中这样引用这个文件
<script src="~/jquery"></script>
乍一看,这可能不像什么特别的,但如果你决定在您的网站中使用的jQuery的新版本会发生什么呢?
考虑到遍历每个页面,模板和视图,把每一处“〜/script/jquery-2.1.1.min.js”修改成“〜/script/jquery-3.0.0.min.js”(或无论新版本是什么),或者替换一个类中的单个行并重新编译,我知道我更喜欢哪一个。
不只是单个文件,您可以映射整个目录结构。 在这本书的Demo中,你会在bootstrapper代码中找到以下内容
代码列表2
protected override void ConfigureConventions(NancyConventions
nancyConventions)
{
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/scripts", @"Scripts"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/fonts", @"fonts"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/images", @"Images"));
Conventions.StaticContentsConventions.Add(
StaticContentConventionBuilder.AddDirectory("/", @"Pages"));
}
上面设置四个全局规则,任何请求“/scripts”都会指向Nancy编译程序所在的目录中的scripts文件夹,对于“/fonts”和“/images”也是同样的。
处理“/”的规则却是被重定向到一个名为pages的文件夹,因此请求“/home.html”将会在./pages/home.html中查找HTML内容。
我将在后面讨论视图(views)时更详细地介绍这一点,但现在,知道默认情况下你不必做任何处理。您可以创建一个名为Content的文件夹,并将所有内容放入其中;
对于那些希望把Nancy添加到项目中的开发者来说,意味着什么那?
好吧,这意味着你可以通过NuGet安装Nancy(没有其他模块),在应用程序中创建一个名为Content的文件夹,然后向这个文件夹中添加HTML,Javascript,样式表或是其他,,按F5键,并开始托管该内容。
请注意,此Content文件夹不仅仅适用于ASP.NET托管,同样也适用于WCF托管,Windows服务中自托管,或在Azure托管。实际的主机平台根本不重要;这是Nancy的一个默认约定。
这只是Nancy为打造完整网站系统提供的一个小技巧。
Nancy 还提供:
- 基于多视图引擎下的动态试图(Dynamic views via multiple view engines)
- 简单的模型绑定(Simple model binding)
- 内容和数据校验(Content and data validation)
- 基本的会话管理(session management)
在本章中,您了解了Nancy适用于构建整个网站和Web应用程序中的一些特性,事实上,在写这本书到目前为止,我实际上听到一些人把NancyFX称为“.NET版的NodeJS”,因为它带来了许多Node的特性到.NET技术栈。
在下一章中,我们会采用预制的Visual Studio模板,使用"super-duper-happy-path"的编程方式 编写第一个基于Nancy的Web应用程序。
NancyFX 第三章 Web框架的更多相关文章
- 使用Micrisoft.net设计方案 第三章Web表示模式
第三章Web表示模式 体系结构设计者在设计第一个作品时比较精简和干练.在第一次设计时,并清除自己做什么,因此比较小心谨慎.第二个作品是最危险的一个作品,此时他会对第一个作品做修饰和润色,以及把第一次设 ...
- jQuery系列 第三章 jQuery框架操作CSS
第三章 jQuery框架操作CSS 3.1 jQuery框架的CSS方法 jQuery框架提供了css方法,我们通过调用该方法传递对应的参数,可以方便的来批量设置标签的CSS样式. 使用JavaScr ...
- Java开发工程师(Web方向) - 04.Spring框架 - 第5章.Web框架
第5章--Web框架 Web框架概述 Web框架单元测验 本次得分为:13.50/15.00, 本次测试的提交时间为:2017-09-25 1单选(2分) 关于Spring MVC中Dispatche ...
- 第三章 web设计原则:
程序员的修炼从优秀带卓越 第三章 web设计原则: 网站的评判标准 加载的速度要快 这到底是什么东西 给我看一个例子 清清楚楚的告诉我要做什么,并且扫除障碍 ...
- 使用Micrisoft.net设计方案 第三章Web表示模式 Web模式集群详细介绍 Observer(观察器)
在面向对象的编程中,对象同时包含数据和行为,这两者一起表示业务域的特定方面.使用对象生成应用程序的优点之一是可以将所有数据操作封装在对象内.这样, 就使对象成为独立的单位,并增加了在其他应用程序中重用 ...
- 第三章 Web页面建设
认识<q>元素: 简短的引用. 问:你去掉了双引号,换成了一个<q>元素,只是为了显示双引号?这样不是更复杂了吗? 答:不.在增加<q>元素之前,浏览器只知道这是一 ...
- 三分钟了解 Python3 的异步 Web 框架 FastAPI
快速编码,功能完善.从启动到部署,实例详解异步 py3 框架选择 FastAPI 的原因. FastAPI 介绍 FastAPI 与其它 Python-Web 框架的区别 在 FastAPI 之前,P ...
- python 全栈开发,Day66(web应用,http协议简介,web框架)
一.web应用 web应用程序是一种可以通过Web访问的应用程序,程序的最大好处是用户很容易访问应用程序,用户只需要有浏览器即可,不需要再安装其他软件.应用程序有两种模式C/S.B/S.C/S是客户端 ...
- HTTP协议和WEB框架
一.HTTP协议 <<HTTP权威指南>>读书笔记:https://www.cnblogs.com/qcssmd/p/5508150.html 一.HTTP简介 HTTP协议是 ...
随机推荐
- 可拖动布局之Gridster
看过bootstrap可视化布局系统的人是不是都会对页面元素的拖拽有着很大的兴趣?下面呢,楼主就给大家讲两个楼主知道的拖拽小插件吧. 一.gridster 1.了解gridster 后续官网:http ...
- iOS 添加WKWebView导致控制器无法释放的问题
在WkWebView与JavaScript交互中,经常会在原生中注入MessageHandler,app中注入MessageHandler的方法 WKWebViewConfiguration *con ...
- Java Integer类型比较
今天做了一道题目题目如下: Integer a=10; Integer b=10; System.out.print(a==b); Integer c=200; Integer d=200; Syst ...
- javascript高级程序设计第三章的一些笔记
[TOC] 1. 语法 1.1 区分大小写 变量.函数名和操作费都区分大小写. 1.2 标识符 标识符指变量.函数.属性的名字,或者函数的参数.标识符按以下规则组合: 第一个字符必须是一个字母,下划线 ...
- Socket 参数笔记
//服务端@RunWith(JUnit4.class) public class ServerSocketTest { @Test public void testServer() throws IO ...
- SpringBoot实战 之 异常处理篇
在互联网时代,我们所开发的应用大多是直面用户的,程序中的任何一点小疏忽都可能导致用户的流失,而程序出现异常往往又是不可避免的,那该如何减少程序异常对用户体验的影响呢?其实方法很简单,对异常进行捕获,然 ...
- dojo中的dojox/grid/EnhancedGrid表格报错
1.错误截图 2.错误出处 <body class="claro"> <div id="gridContainer"> <span ...
- Java Web项目(Extjs)报错四
1.Java Web项目(Extjs)报错四 具体报错如下: usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ...
- 利用Tomcat部署Web项目报错
1.错误描述 usage: java org.apache.catalina.startup.Catalina [ -config {pathname} ] [ -nonaming ] { -help ...
- 易理解java代码8皇后问题
马上就要蓝桥杯比赛了,我这些算法还是不会,确实有点慌,今天一天早上睡到很晚不愿起床,然后才开始研究8皇后问题.这也是典型的回溯与递归问题.其实本质上和马踏棋盘问题非常类似,八皇后问题呢,就是要判断主对 ...