|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我认为,可以通过更加简单的首次编译,而增加第二次编译的负担,来提高java的运行效率。只是将java源代码进行简单的等价转换,而不假设编译成某种虚拟机器的目标格式,而由本地编译器针对性的二次编译。</p>做一个WEB程序,可以在只管修正少少程序代码的情形下,轻松制订皮肤和切换皮肤,应当都是必要的,谁也不想,在网站界面想要改版的时分,要改一年夜片逻辑代码。
一个及格的皮肤机制系统的完成,应当要做到以下几点:
->页面模板上要少少具有逻辑代码(假如模板上具有大批逻辑代码,那估量这个也不叫作模板了)。
->可以轻松改动页面结构,同时不影响程序代码(.cs)。
->新模板的定制,基础上能由皮肤制造者参依旧模板自行完成,不必要开辟职员太多参与。
->坚持功能。
然后,来看看,都有哪些办法人人用来完成所谓的皮肤机制,同时举行各个办法的一些团体申明。
1.改动页面挪用的CSS文件来换肤。
这一个,严厉下去讲,不该该算作皮肤机制。固然CSS十分壮大,也可以经由过程它来恣意改动页面元素结构,但它的HTML一直是稳定的,以是范围性长短常年夜的。
长处:完整不影响功能,乃至能够完整不由服务端代码来办理它的变更,可使用JS来切换皮肤(由此,在我们有一套完善皮肤机制的情形下,这类办法,能够完整不与此机制抵触,让用户在客户端作更多的本性化)。
弱点:假如作为中心皮肤机制的话,十分有范围性。
示例:如QQ.COM,114LA.COM下面的一些可点击的小色块,就是改动挪用的CSS文件来完成换肤。
2.读取模板文件,交换标识符为要显现的内容与数据输入。
这一个办法的天真性对照高,每套皮肤能够有本人的结构,有本人的本性。
完成:好比模板中有一个标识$Subject,程序代码会把它交换成文章题目,然后有一个标识块<!—Loop[ArticleList]--><h1>$Subject</h1><div>$Content</div><!--/Loop-->,程序代码会把它交换成一个文章列表,最初输入处置完一切标识符的内容。
一般,我们会缓存读取到的模板内容,但字符串的交换一直不成制止,大概也会把交换过的内容也缓存起来,但如许子,就即是要缓存模板内容和交换过的内容,占用了两份仿佛挺反复内容的内存(为何?否则总不应每次数占有改动的时分就往作IO操纵读取操纵读模板文件吧,这仿佛比字符串交换功能更差)。
长处:模板天真水平很高,能够任意修改页面结构。
弱点:影响功能,开辟职员保护难,必需有特定的标识符来暗示页面变量,前期保护大概会带来十分多的成绩。
3.利用ASP.NET的App_Themes。
这一个办法,应当是极差的一个办法,基本只是ASP.NET的一个小纂头,鸡肋,基础上不有用。
完成:好比,定制一个BUTTON的款式是如许子的,<asp:buttonrunat="server"BackColor="lightblue"ForeColor="black"/>,相似如许的代码,存在于.skin文件中。然后它的换肤机制以下,<%@PageLanguage="C#"Theme="default"%>。在App_Themes目次下,是各套皮肤的自力文件夹,各个文件夹包括皮肤的款式和图片文件等等,也能够包括.skin文件。
长处:只要ASP.NET才有
弱点:包括了第一种办法的弱点,.skin的款式定制体例还要严峻依附利用ASP.NET服务端控件,同时也影响功能,天真性也极低。
4.静态载进.ASCX文件(ASP.NET用户控件)利用.master(母版)。
这个办法,应当也是良多利用ASP.NET的人利用的办法,偶然候,它还会与第三种办法分离利用。假如对功能需求不是很严厉的话,中小型项目可使用。
完成:利用LoadControl()静态载进.ASCX文件或(与)指定页面的MasterPageFile(方针皮肤文件夹的)完成(一般.ascx与.master还会分离利用)。
长处:天真性极高,每一个皮肤有自力的结构,间接利用了.CS文件的变量与办法ETC…乃至每套皮肤另有本人自力的代码文件。
弱点:影响功能。有乐趣能够本人往反编译LoadControl办法。同时,在页面要利用<%%>这类代码块,偶然候感到也有点不雅观。
5.Xml+xslt
传说xml代替html是趋向??不分明,不懂得。应当不成能。此种办法我没有深切懂得过,不外也许完成应当是要如许子?每个XML(输入数据)会有一个对应的XSL文件(把持款式)。以下:
xml文件:
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<breakfast_menu>
<food>
<name>BelgianWaffles</name>
<price>$5.95</price>
<description>twoofourfamousBelgianWaffleswithplentyofrealmaplesyrup</description>
<calories>650</calories>
</food>
<food>
<name>Cakes</name>
<price>$1.95</price>
<description>sweetcakes</description>
<calories>2650</calories>
</food>
</breakfast_menu>
xsl文件:
<?xmlversion="1.0"encoding="ISO-8859-1"?>
<htmlxsl:version="1.0"xmlns:xsl="http://www.w3.org/1999/XSL/Transform"xmlns="http://www.w3.org/1999/xhtml">
<bodystyle="font-family:Arial,helvetica,sans-serif;font-size:12pt;background-color:#EEEEEE">
<xsl:for-eachselect="breakfast_menu/food">
<divstyle="background-color:teal;color:white;padding:4px">
<spanstyle="font-weight:bold;color:white">
<xsl:value-ofselect="name"/>
</span>
<xsl:value-ofselect="price"/>
</div>
<divstyle="margin-left:20px;margin-bottom:1em;font-size:10pt">
<xsl:value-ofselect="description"/>
<spanstyle="font-style:italic">
<xsl:value-ofselect="calories"/>
</span>
</div>
</xsl:for-each>
</body>
</html>
如许子做,有甚么优点么,我没有体验到。
6.读取模板文件,天生.aspx文件到每套皮肤的自力文件夹下,经由过程地点重写指定到这些文件夹。
这个办法的最后的效果关于用户来讲,和第二种办法应当是差未几的,长处就是功能对照高,并且还能间接利用.CS代码内里的变量办法ETC…别的,也能够不会有<%%>代码块的存在,能够存在本人的模板言语,好像第二种办法的$Subject,<!—Loop-->标识符一样平常。
长处:几近不影响功能,只要第一次读取天生.ASPX文件必要丧失功能。天真性极高。模板代码可读性也能够完成到很高。
弱点:启动时必要读取剖析工夫(不外,这应当算是小成绩),别的,有一套皮肤,它就要天生与之对应的一套.ASPX文件(固然这个能够办理)。
7.使用ASP.NET2.0入手下手才具有的VirtualPathProvider来完成。
假造文件机制。这个,应当算是第六种办法的增强版。终极的效果,和第六种差未几,只是不会天生那些.ASPX文件罢了,取而代之的,即是长驻在内存中。
完成:完成两个类,一个承继至VirtualPathProvider,一个承继至SkinFile。VirtualPathProvider里有个FileExists办法,重写成判别哀求的路径是不是是皮肤文件路径,假如是,GetFile就实例一个SkinFile(这一个SkinFile,我们会对模板举行处置,能够具有本人的模板言语)。别的有一个GetCacheDependency办法,能够来将模板文件作为假造文件机制的缓存依附文件,一旦模板文件被修正了,它就会再从头剖析模板文件。这里先不作赘述,详细的,检察MSDN的相干文档,具可懂得。
长处:与6不异。
弱点:第一次启动必要丧失功能(但这也不成制止)。
8.另有更多的完成办法,还没用过,团体先不宣布概念,好比:利用BuildProvider,但这一个,必要有对照强的词法剖析与语法剖析才能。
竟发现没有太大的帮助。总觉得要用起来,感觉到不了位。因为公司机器的原因,一直没有安装vs.net(也从来没有用过)。以前做asp的时候一直用DW(感觉其代码联想功能不错),可现在到了asp.net却不习惯了。 |
|