在网上无数的地方,我已经看到了在JavaScript之前包含CSS的建议.一般来说,推理的形式如下:
在订购CSS和JavaScript时,您希望首先使用CSS.原因是渲染线程具有渲染页面所需的所有样式信息.如果首先包含JavaScript,则JavaScript引擎必须先解析它,然后再继续使用下一组资源.这意味着渲染线程无法完全显示页面,因为它没有所需的所有样式.
我的实际测试揭示了一些截然不同
我使用以下Ruby脚本为各种资源生成特定的延迟:
require 'rubygems'
require 'eventmachine'
require 'evma_httpserver'
require 'date'
class Handler < EventMachine::Connection
include EventMachine::HttpServer
def process_http_request
resp = EventMachine::DelegatedHttpResponse.new( self )
return unless @http_query_string
path = @http_path_info
array = @http_query_string.split("&").map{|s| s.split("=")}.flatten
parsed = Hash[*array]
delay = parsed["delay"].to_i / 1000.0
jsdelay = parsed["jsdelay"].to_i
delay = 5 if (delay > 5)
jsdelay = 5000 if (jsdelay > 5000)
delay = 0 if (delay < 0)
jsdelay = 0 if (jsdelay < 0)
# Block which …Run Code Online (Sandbox Code Playgroud) 当ASP.NET MVC执行包含Razor的页面时,它将首先运行主体,例如RenderBody方法,然后它运行布局的代码并将其编织在一起.
这篇博文中记录了这一点:
System.Web.Mvc.RazorView.RenderView()System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//非虚拟版本System.Web.WebPages.WebPageBase.PushContext()
System.Web.WebPages.WebPageBase.ExecutePageHierarchy()//virtual version this.Execute()//从我们的View
System.Web.WebPages.WebPageBase.PopContext
RenderSurrounding(virtualPath,body)生成的代码; //渲染布局,类似于View的渲染过程,基本上你可以有嵌套的Layout VerifyRenderdBodyOrSetions();
我想在我的视图和布局中添加代码,以跟踪页面中的实际逻辑位置.
有没有办法可以在 RenderSurrounding 之前和刚 RenderBody完成执行之后连接一个方法来运行?
我在Helpers.cshtml文件中有很多HTML帮助器,但是一些帮助器(html)需要一些jquery动作,所以我如何在helpers.cshtml中调用jquery,这可能吗?
我知道我们能继续保持页眉或特定页面的js文件,但我不希望做这样的,我只希望这加载特定助手页面上使用jquery或javascript.
有谁有这个想法?我的方案是,我有列表框控件,从helper正确加载,但我需要将自定义主题应用于列表框.
更多的清晰度
//in index.cshtml
@Helpers.testListBox("mylist" "1,2,3,4,5,6,7")
//in Helpers.cshtml
@helper testListBox(string listName, string listData){
//...... HTML code .........
//Javascript here?
}
Run Code Online (Sandbox Code Playgroud) c# model-view-controller html-helper razor-declarative-helpers asp.net-mvc-3