zoukankan      html  css  js  c++  java
  • Ext.Net 1.2.0_Ext.Net.ResourceManage 如何初始化页面资源

    本文内容

    • 引入——对比页面在使用或不使用 Ext.Net 控件的区别
    •     没引用 Ext.Net
    •     引用了 Ext.Net
    • Ext.Net.XControl 和 Ext.Net.ResourceManager
    • 修改记录

    引入——对比页面在使用或不使用 Ext.Net 控件的区别

    本文旨在初步分析 Ext.Net 初始化的过程。也就是,不加入 Ext.Net.ResourceManager,与加入 Ext.Net.ResourceManager 之后,页面内容的区别。本文用 FireFox 查看源文件。

    • 没引用 Ext.Net

    新建一个没有任何 Ext.Net 控件的页面。代码如下所示:

    图 1 没引用 Ext.Net

    图 1 没引用 Ext.Net

    那么,用 FireFox 查看源文件如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head><title>
     
    </title></head>
    <body>
        <form name="form1" method="post" action="WebForm1.aspx" id="form1">
    <div>
    <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTE2MTY2ODcyMjlkZHGyYm3CSBB0uH2DAOtZCHXgBYSj" />
    </div>
     
        </form>
    </body>
    </html>
    • 引用了 Ext.Net

    新建一个添加 Ext.Net.ResourceManager 的页面,如下所示:

    图 2 引用了 Ext.Net

    图 2 引用了 Ext.Net

    用 FireFox 查看源文件如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <link rel="stylesheet" type="text/css" href="/extjs/resources/css/ext-all-embedded-css/ext.axd?v=17083" />
    <title>
     
    </title>
        <script type="text/javascript" src="/extjs/adapter/ext/ext-base-js/ext.axd?v=17083"></script>
       1:  
       2:     <script type="text/javascript" src="/extjs/ext-all-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript" src="/extnet/extnet-core-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript" src="/extnet/locale/ext-lang-zh-CN-js/ext.axd?v=17083">
       1: </script>
       2:     <script type="text/javascript">
       3:     //<![CDATA[
       4:         Ext.net.ResourceMgr.init({id:"ResourceManager1",BLANK_IMAGE_URL:"/extjs/resources/images/default/s-gif/ext.axd",aspForm:"form1",theme:"blue"});Ext.onReady(function(){Ext.QuickTips.init();});
       5:     //]]>
       6:     
    </script>
       1:  
       2: </head>
       3: <body>
       4:     <form name="form1" method="post" action="WebForm2.aspx" id="form1">
       5: <div>
       6: <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
       7: <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
       8: <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTkzNTgyMzk4N2QYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFEFJlc291cmNlTWFuYWdlcjFtzMaC7eCHSStptAvkxOouI11aMQ==" />
       9: </div>
      10:  
      11: <script type="text/javascript">
      12: //<![CDATA[
      13: var theForm = document.forms['form1'];
      14: if (!theForm) {
      15:     theForm = document.form1;
      16: }
      17: function __doPostBack(eventTarget, eventArgument) {
      18:     if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
      19:         theForm.__EVENTTARGET.value = eventTarget;
      20:         theForm.__EVENTARGUMENT.value = eventArgument;
      21:         theForm.submit();
      22:     }
      23: }
      24: //]]>
    </script>
     
     
    <div>
     
        <input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAgLl9M/1DQLk1b+VAvPeIxQnrPccjp0QWBmQuJLa1QHw" />
    </div>
        
        </form>
    </body>
    </html>

    区别很明显。Ext.Net.ResourceManager 向页面添加它的内置 CSS 和 Ext js 核心脚本。这些 CSS 和 Ext js 文件,作为 Ext.Net 程序集的嵌入资源,通过 ASP.NET 的 WebResource 方式使用。Ext.Net 与 Ext js 的最大区别是 Ext.Net 为 Ext js 提供了一个 IDE 环境。为开发人员省去了相当大一部分编写脚本的工作。

    Ext.Net.XControl 和 Ext.Net.ResourceManager

    因此,Ext.Net.ResourceManager 是 Ext.Net 开始的一部分,它通过 ASP.NET 的 WebResource 方式加载程序集的嵌入资源,如 CSS 、JS 和图像等。这些资源都位于 Ext.Net 项目的 Build 目录。Ext.Net.ResourceManager 类位于 Ext.Net 项目的 Core 目录,它继承了 XControl 类。Core 目录中的类是 Ext.Net 核心类。

    图 3

    图 3

    顾名思义,ResourceManager 当然是 Ext.Net 管理资源(包括 CSS 和 JS )的重要类,他不仅可以将 Ext.Net 的嵌入资源加入到页面,也可以像 ASP.NET 一样在开发阶段向页面注册自定义的脚本等。ClientStyleItem 和 ClientScriptItem 类是表示嵌入资源的两个类,用于从 Ext.Net 中获得嵌入资源路径等信息,它们聚合到 ResourceManager 类中。

    当把 Ext.Net.ResourceManager 控件放入页面后,它会随着网页一起被实例化,同时会执行 OnInit、OnLoad、Render 等相关事件,从而初始化 Ext.Net。如果用 VS 查看该类的相关信息,并将修饰符为 Internal 和 Private 的方法隐藏,这些方法从类的实例中不能访问的方法我们暂时不用关心,如下所示:

    a

    图 4

    会看到如下事件。

    图 5

    图 5

    其中,

    OnInit、OnLoad、OnPreRend、Render 事件完成了页面的初始化,而且你会在 Render 事件中找到它调用了 GetWebResourceUrl() 和 Build 开头的方法,将程序集内嵌资源,包括 CSS 和脚本,添加到页面。

    无论是 Ext.Net.ResourceManager,还是它的父类 XControl,都是分部类,分别在好几类中实现。如下所示:

    图 6 Ext.Net.XControl 类的实现

    图 6 Ext.Net.XControl 类的实现

    图 7 Ext.Net.ResourceManager 类的实现

    图 7 Ext.Net.ResourceManager 类的实现

    注意:

    虽然文件名与实际类名不同,而且位置也不同,但实现的类都是同一个类,这是为了更好地说明此处主要实现了该类的哪个方面功能。其中,文件名与类名相同的文件,是这个类的主要文件。

    修改记录

    • 第一次 2011-12-21 [UPDATE] Ext.Net.XControl 和 Ext.Net.ResourceManager 小节
  • 相关阅读:
    weak引用变量是否线程安全
    VMware vSphere HyperVisor安装过程记录
    【转载】VMWare ESXi 5.0和vSphere Client安装和配置
    Wmware桥接网络虚拟机无法上网的问题
    虚拟机移动后重启网络时提示Device does not seem to be present
    Eclipse maven工程 Missing artifact com.sun:tools:jar:1.5.0:system 解决方法
    【转】使用JIRA搭建企业问题跟踪系统【个人推荐】
    使用XAMPP本地安装Wordpress博客
    【转载】维度表和事实表的区别
    maven工程的如何进行代码调试
  • 原文地址:https://www.cnblogs.com/liuning8023/p/2294017.html
Copyright © 2011-2022 走看看