您现在的位置是:首页 > cms教程 > discuz教程discuz教程
Discuz!NT生成模板执行方式
怀蝶2025-06-29 21:35:25discuz教程已有4人查阅
导读1、ASP.NET内联编码编译时间问题先说下我的一个试验:新建一个WebApplication工程,打开Default.aspx文件,删除除之外的内容。之后在它的下边添加如下代码:
1、ASP.NET内联编码编译时间问题
先说下我的一个试验:
新建一个WebApplication工程,打开Default.aspx文件,删除除 之外的内容。之后在它的下边添加如下代码: 编译,发布。打开发布后的网站,在Bin文件夹中可以看到生成的DLL。用Reflector打开这个DLL后,可以发现没有我在页面中添加的sss()这个函数。
查看发布后的页面文件,可以看到页面文件中的内容与发布前没有任何不同,说明页面内联的代码在深层和发布时都没有被编译。
但是,与其相对应的Cs文件却没有了。它已经被编译到DLL中去了。这一点,通过Reflector可以很清楚地看到。
按F5运行这个项目,在浏览器查看Default.aspx的原文件,可以看见只有这么一行东西: 这是已经被编译后输出到浏览器的代码。内联页面内的代码此时已经被解析过了。于是,有一个结论:页面内联的代码是在执行时进行解析的(或者叫编译,我不知道究竟该怎么叫它)。
2、看看DNT的页面文件
DNT的UI是基于模板机制的。模板都存放在Discuz.Web工程中的Aspx文件夹中。每个模板主题一个文件夹。查看这些模板中的页面文件,可以看见每个页面中都有如下的组织结构: 这里,首先使用StringBulider templateBuilder组织需要页面内容,然后通过Response.Write(templateBuilder.ToString());将组织好的内容输出到Http响应的输出流中。经过IIS解析后(也可能是CGI之类的东西,我没查到),发给客户端,显示在浏览器中。
这样的代码发布后依然包含在页面文件中。后边添加的模板,也是这样的结构,他们共用一个已经编译好的存放在DLL中的页面类。这些Aspx文件中的东西只有等到需要时才被编译。据说这种做法可以在程序编译好后为程序添加模板。
DNT有自己的后台项目Discuz.Web.Admin包含了自动生成模板的功能。它可以根据用户定义好的css文件,生成论坛可以用的模板,输出的同样是具有这种结构的Aspx文件。这样,不同的DNT模板就可以共用一个cs文件,即编译在DLL文件中的页面类。最终用户只需要定义模板显示的方式(CSS),而不需要去花时间理解页面内的各种函数。即使不理解Asp.Net,也能定义出漂亮的模板了。
先说下我的一个试验:
新建一个WebApplication工程,打开Default.aspx文件,删除除 之外的内容。之后在它的下边添加如下代码: 编译,发布。打开发布后的网站,在Bin文件夹中可以看到生成的DLL。用Reflector打开这个DLL后,可以发现没有我在页面中添加的sss()这个函数。
查看发布后的页面文件,可以看到页面文件中的内容与发布前没有任何不同,说明页面内联的代码在深层和发布时都没有被编译。
但是,与其相对应的Cs文件却没有了。它已经被编译到DLL中去了。这一点,通过Reflector可以很清楚地看到。
按F5运行这个项目,在浏览器查看Default.aspx的原文件,可以看见只有这么一行东西: 这是已经被编译后输出到浏览器的代码。内联页面内的代码此时已经被解析过了。于是,有一个结论:页面内联的代码是在执行时进行解析的(或者叫编译,我不知道究竟该怎么叫它)。
2、看看DNT的页面文件
DNT的UI是基于模板机制的。模板都存放在Discuz.Web工程中的Aspx文件夹中。每个模板主题一个文件夹。查看这些模板中的页面文件,可以看见每个页面中都有如下的组织结构: 这里,首先使用StringBulider templateBuilder组织需要页面内容,然后通过Response.Write(templateBuilder.ToString());将组织好的内容输出到Http响应的输出流中。经过IIS解析后(也可能是CGI之类的东西,我没查到),发给客户端,显示在浏览器中。
这样的代码发布后依然包含在页面文件中。后边添加的模板,也是这样的结构,他们共用一个已经编译好的存放在DLL中的页面类。这些Aspx文件中的东西只有等到需要时才被编译。据说这种做法可以在程序编译好后为程序添加模板。
DNT有自己的后台项目Discuz.Web.Admin包含了自动生成模板的功能。它可以根据用户定义好的css文件,生成论坛可以用的模板,输出的同样是具有这种结构的Aspx文件。这样,不同的DNT模板就可以共用一个cs文件,即编译在DLL文件中的页面类。最终用户只需要定义模板显示的方式(CSS),而不需要去花时间理解页面内的各种函数。即使不理解Asp.Net,也能定义出漂亮的模板了。
本文标签:
很赞哦! (0)
暂无内容 |
暂无内容 |
相关文章
暂无内容 |
暂无内容 |
随机图文
Discuz模板更新后样式错乱的解决方法
1. 清空浏览器缓存或使用无痕模式浏览网站;2. 检查并确保css文件路径正确;3. 使用ftp工具确认所有模板文件已上传并覆盖原文件;4. 禁用所有插件,然后逐一启用并测试,找出问题插件。Discuz的NT进行缓存分层本地缓存+memcached介绍
在以前的两篇文章(DiscuzNT 缓存设计简析, DiscuzNT中集成Memcached分布式缓存)中,介绍了DiscuzNT中的缓存设计思路以及如何引入Memcached,当然前者是IIS进程的缓存discuz数据表结构介绍
cdb_access--当某用户对某些版块有特定的权限的时候,该表记录了该用户在这些版块有什么权限。调用discuz编辑器的步骤方法
前面讲了如何开发一个discuz的特殊主题插件,详情可在此查看discuz特殊主题插件开发步骤和犯的愚蠢错误。上一篇文章讲解的是一些简单的开发步骤,不涉及到具体的编码。
留言与评论 (共有 0 条评论) |