• ASP.NET MVC5 视图预编译


    一.目的

    关于Razor视图及引擎原理,一句两句话是讲解不完的。

    这里可能不恰当地说,cshtml视图文件是先编译成dll文件,再通过视图引擎“解析”成html输出到浏览器。

    MVC编译cshtml是动态编译的,并缓存起来。可它到底缓存到哪里了???

    请看园子里的蒋金楠ASP.NET MVC的Razor引擎:View编译原理》一文 !

    相信不少人想过:能不能把视图进行预(提前)编译?答案是肯定的,否则就没法叙述下去了。

    • 预编译提升网站程序运行性能,毕竟少一步编译过程,节省开销(当然和缓存起来相比的效果有待测试?);
    • 能预编译也就意味着不需要视图原始文件。这样分发给别人项目测试或演示时,可以隐藏源码。 
    二.安装工具

    VS没有提供这种编译工具,但第三方技术团队为其提供扩展,如图搜索:RazorGenerator(这里我已经装过)

     

    三.安装类库

    首先创建一个MVC5 Demo项目后……

    在“程序包管理器控制台”(也可以用“管理解决方案的NuGet程序包”窗口里搜索安装)

    安装执行:Install-Package RazorGenerator.Mvc

    查看帮助:Get-Help RazorGenerator

    启用执行:Enable-RazorGenerator

    命令执行后,每一个扩展名为cshtml都会自动多一个类文件,如图:

    注:此时在VS里build生成项目后,就可以删除视图原始文件,运行网站以验证是否预编译成功。

    四.发布与部署

    发布Web,部署网站。删除Views文件下所有cshtml视图文件后,只剩下一个Web.config文件,如图:

    运行网站ok!(就不截图了)。这一步也是验证,部署项目是否正常加载视图!

    五.问题注意

    官方英文:

    Optionally specify one of the generators in the first line of your Razor file.

    A generator declaration line looks like this:@* Generator: MvcHelper *@ .

    If you don't specify this, a generator is picked based on convention

    (e.g. files under Views are treated as MvcViews)

    其实大概意思:

    对于Helpr文件处理方式有所不同。Helper文件一般放在别的文件夹下。

    这时需要在Helper文件的第一行添加 @* Generator: MvcHelper *@ 来声明一下即可!

    六.编译另一方法

    上面使用“Enable-RazorGenerator”方法,直接全部自动Generator了。你也可以:

    注:蓝色标注的地方,“内容”更改为“无”时,发布Web时,就没有视图文件了(省得删了)。

    七.领悟

    这篇博文没有什么技术含量,也有不好意思发表出来的滋味啦。

    只是实际项目中需要预编译视图时,走过弯路。为了有需要的人节省学习时间,才总结此文!

    你可以想象cshtml文件也可以编译dll文件了,是不是可以把它做资源库方式,甚至保存到数据库中。

    在看过老外一篇《How to load Views from Assembly in MVC》博文中,这一想法说明是可以实现的。

    为什么要这样折腾呢?呵呵,视图分离,控制器分离……

    这样便于做插件模块化开发,其次做成项目产品后,尽可能地做一下保护措施!

     

  • 相关阅读:
    物理层的三种编码方式
    Mysql中eft join、right join、inner join的区别
    Linux常用命令
    Linux中文件颜色所代表的属性和颜色
    phpcms v9 中的数据库操作函数
    NetBeans无法使用编码GBK安全打开文件
    PHP中的一些常用正则表达式
    eureka强制下线上线
    perl(JSON) is needed by mysql-community-test-5.7.30-1.el7.x86_64
    利用TikZ 宏包在 LaTeX 中绘制流程图
  • 原文地址:https://www.cnblogs.com/fanjibao/p/3691801.html
Copyright © 2020-2023  润新知