zoukankan      html  css  js  c++  java
  • ABP理论学习之内嵌资源文件

    返回总目录


    本篇目录

    介绍###

    在一个web应用中,有供客户端使用的javascript,css,xml等文件。它们一般是作为分离的文件被添加到web项目中并发布。有时,我们需要将这些文件打包到一个程序集(类库项目,一个dll文件)中,作为内嵌资源散布到程序集中。ABP提供了一个基础设施使得这个很容易实现。

    创建内嵌文件###

    我们首先应该创建一个资源文件并把它标记为内嵌的资源。任何程序集都可以包含内嵌的资源文件。假设我们有一个叫做“Abp.Zero.Web.UI.Metronic.dll”程序集,而且它包含了javascript,css,和图片文件:

    我们想要使这些文件在一个web应用中可用,首先,我们应该将想要暴露的文件标记为内嵌的资源。在这里,我选择了 metronic.js文件,右键打开属性面板(快捷键是F4)。

    选中你想在web应用中使用的所有文件,将生成操作(build action)的属性值选为内嵌的 资源

    暴露内嵌文件###

    ABP使得暴露这些内嵌资源很容易,只需要一行代码:

    WebResourceHelper.ExposeEmbeddedResources("AbpZero/Metronic", Assembly.GetExecutingAssembly(), "Abp.Zero.Web.UI.Metronic");
    
    

    这行代码一般放在模块的Initialize方法中,下面解释一下这些参数:

    • 第一个参数为这些文件定义了根文件夹,它匹配了根命名空间。
    • 第二个参数定义了包含这些文件的程序集。本例中,我传入了包含这行代码的程序集。但你也可以传入任何包含内嵌资源的程序集。
    • 最后一个参数定义了这些文件在程序集的根命名空间。它是“默认的命名空间”加上“文件夹名”。默认的命名空间一般和程序集的名字是相同的,但是在程序集的属性中进行更改。这里 ,默认的命名空间是Abp(已经更改了),因此Metronic文件夹的命名空间是“Abp.Zero.Web.UI.Metronic”。

    使用内嵌文件###

    可以直接使用内嵌的资源:

    <script type="text/javascript" src="~/AbpZero/Metronic/assets/global/scripts/metronic.js"></script>
    
    

    ABP知道这是一个内嵌的资源,因而可以从之前暴露的dll中获得文件。此外,还可以在razor视图中使用HtmlHelper的扩展方法IncludeScript:

    @Html.IncludeScript("~/AbpZero/Metronic/assets/global/scripts/metronic.js")
    
    

    这会产生下面的代码:

    <script src="/AbpZero/Metronic/assets/global/scripts/metronic.js?v=635438748506909100" type="text/javascript"></script>
    
    

    唯一的不同就是参数v=635438748506909100。这样做的好处是阻止了浏览器端脚本的失败缓存。该值只有当你的dll重新生成(实际上是文件的最后写入时间)的时候才会改变,而且如果该值改变了,浏览器就不会缓存这个文件了。因此,建议使用IncludeScript方式。这对于非嵌入的物理资源也是有效的。对应于css文件,也存在相应的IncludeStyle方法。

  • 相关阅读:
    Ext学习-HelloWorld以及基础环境搭建
    简易复选框样式设置
    浏览器加载js文件顺序
    handsontable前端excel学习笔记
    前端构建工具里babel-polyfill的使用问题
    前端后端分离,怎么解决SEO优化的问题呢?
    关于babel和babel-polyfill
    一段node代码的解读
    express笔记
    mac下通过brew安装的Nginx在哪
  • 原文地址:https://www.cnblogs.com/farb/p/ABPEmbeddedFile.html
Copyright © 2011-2022 走看看