|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在相册系统的开发上,因为采用的是团队分工合作方式,更让我明白了在一个团队之中,团队成员之间的交流沟通的重要性,如果没有很好的沟通交流,成员之间的任务没有分配好。 1.PHP(&fastm)把文档切割为复杂的DOM布局
PHP模板的设计思绪十分大度,用正文里的Begin和End把HTML(WML,或任何XML)页面切割成分歧的块,并且块外面还可以持续切块。
如许一来,一个页面被切割成一个树布局,很象DOM布局。只是DOM布局太甚粗笨,对每个元素都要创立一个节点,并且节点的类型十分庞杂。好比,一个HTML DOM布局,有几何种HTML元素,就会有几何种节点类型,好比,Body,Table,TR,TD,Form,Input等。
而PHP模板则是一个轻量级的DOM布局,一个Begin-End块就是一个节点。Begin-End块只包含三种内容――静态文本,变量,和其它的Begin-End块。
设计思绪如斯简约而壮大,易用而通用(可以用在任何标准或不标准的XML页面中,好比HTML,WML,乃至XUL,XAML),并且,可以在HTML编纂器中所见即所得。纵不雅世界模板手艺,莫出其右。
我经由了多种Java页面手艺的熬煎,经同事引见,熟悉了PHP模板手艺,欣喜异常,本来竟有如许的好器材,只恨了解太晚。
Fastm模板的思绪完整自创PHP模板思绪,只是略微做了一些扩大。(概况请拜见我的上一篇提到JDynamiTe的文章――Java页面手艺综述)。
Fastm模板的BEGIN-END DYNAMIC块,就相当于PHP模板的Begin-End块。
Fastm模板的BEGIN-END IGNORED块,就相当于PHP模板的疏忽不显示的Begin-End块。
好比上面的HTML片段。
<select name=”zipcode”>
<!-- BEGIN DYNAMIC: zipcodes -->
<option value=””></option>
<!-- END DYNAMIC: zipcodes -->
</select>
咱们看到,这个片段包括一个BEGIN-END块(zipcodes),这个块里包括两个不异的变量,其它的局部都是静态文本。
这个片段的fastm Template DOM布局以下:
静态文本 <select name=”zipcode”>
静态块zipcodes --
| --- 静态文本 <option value=”
| --- 变量
| --- 静态文本 ”>
| --- 变量
| ---静态文本 </option>
静态文本 </select>
2.fastm的ValueSet是DOM概念的又一次奔腾
Fastm模板DOM布局的一个中心特征就是,只能读取,不克不及改动。
PHP代码每次装载一块PHP模板,然后静态改换外面的变量局部的值。PHP模板从实质上讲是可以读取,也是可以操作改动的。
HTML(WML,XML)DOM更是如斯。法式直接修正DOM节点的值,才干失掉分歧的静态了局。可以说,XML DOM生成就是用来操作改动的。XML DOM自己又是模板,又是数据。
可以改动的DOM布局不克不及够用在多线程的情况下。每一个线程必需获得本人的新颖DOM备份,停止操作改动,失掉本人的静态了局。想一想看,在一个静态文本占绝大局部的DOM布局里,这类做法将形成何等大的空间和工夫上的华侈。
Fastm模板的DOM布局是只读的,不克不及改动。所以一个Fastm DOM可以用在多线程的情况中。
既然咱们不克不及修改Fastm Template DOM,那末咱们若何给Fastm Template DOM赋值呢?咱们若何使用Fastm Template DOM取得静态了局呢?
Fastm引入了ValueSet的概念。ValueSet是一个树形布局的静态数据集,用来婚配只读的Fastm模板DOM布局,生成静态了局。
法式员必需事前机关好全部树形静态数据集(ValueSet DOM),然后把和ValueSet DOM和Fastm Template DOM联合起来,生成静态了局。
所以,fastm的全部利用以下:
(1)法式的全部运转过程当中,fastm模板文件(也就是加了BEGIN-END正文的HTML文件)只需求被解析一次,生成一个Fastm Template DOM。
(fastm模板解析速度奇快,比JSP编译,Velocity解析,XML DOM解析,都快良多,大局部情形下乃至快于SAX解析。并且fastm DOM和原始fastm模板文件的巨细几近一样大,只多了一个List纪录分歧的块,空间效力也要凌驾)
(2)法式生成分歧的ValueSet DOM,婚配只读的Fastm DOM,生成分歧的静态了局。
(因为fastm Template DOM布局的复杂高效,全部婚配进程很快。凡是情形下,工夫效力乃至高于最快的纯JSP或Servlet。ValueSet DOM的空间效力比不上纯JSP或Servlet,但经由公道重用,最少可以接近纯JSP或Servlet的空间效力。今后的初级使用话题系列会具体解说这个成绩。)
好比,咱们来为下面的Template DOM布局(zipcode Select)机关一个ValueSet DOM。
String[] zipcodes = {“361005”, “100008”};
IValueSet top = new ValueSet(); // 对应下面的全部HTML片段
List items = new ArrayList(); // 对应 静态局部zipcodes
for(int i = 0; i < zipcodes.length; i++){
IValueSet item = new ValueSet();
item.setVariable(“”, zipcodes[i]);
items.add(item);
}
top.setDynamicValueSets(“zipcodes”, items);
咱们把top这个ValueSet DOM和Template DOM联合起来。就生成以下了局。
<select name=”zipcode”>
<option value=”361005”>361005</option>
<option value=”10008”>100008</option>
</select>
咱们可以看到,Template DOM节点和ValueSet DOM节点之间不是逐一对应的关系,而是一对多的关系。一个Template DOM节点对应一个ValueSet List。ValueSet List包括几何个ValueSet,这个Template DOM节点就显示所少次。
比起TagLib来,fastm的优势不言而喻。fastm的几行代码,或一个办法,可以完成一个或几个TagLib的功效。比起任何其它的页面手艺来讲,其它页面手艺能做到的,或做的好的,fastm都可以做失掉,并且做的更好。而fastm能做到良多其它页面手艺做不到的工作。好了。不多说了。J
ValueSet DOM和Template DOM的分隔,是一个极大的思绪上的立异和奔腾。
究竟,页面中的静态局部,和静态比起来,长短常小的一局部。ValueSet DOM代表静态局部,由法式随时生成,可以存在多份。Template DOM代表静态局部,只需求解析一次,并且只需求一份。
ValueSet DOM和Template DOM的分隔,更是一种史无前例完全的显示和数据的分别。比XML/XSLT的办法加倍完全。XML的确是地道的数据,但XSLT中却不成防止的要包括逻辑。ValueSet DOM是地道的数据,没有任何逻辑,Template DOM是地道的显示模板,也没有任何逻辑。
一份Template DOM可以用多个ValueSet DOM赋值。一样,一个ValueSet DOM也能够用于多个Template DOM,把不异的数据显示在分歧作风的模板中。
好比,咱们还有如许一个HTML片段:
<table>
<!-- BEGIN DYNAMIC: zipcodes -->
<tr><td></td></tr>
<!-- END DYNAMIC: zipcodes -->
</table>
咱们把下面的top ValueSet赋给这个模板。失掉的了局以下。
<table>
<tr><td>361005</td></tr>
<tr><td>100008</td></tr>
</table>
咱们可以看到,Template DOM就是模板,只包括显示作风和分块界说。ValueSet DOM就是数据,只包括数据。
Fastm具有其它页面熟成手艺不成对比的优胜性:
所见即所得,模板与数据的完全分别,模板与数据的多对多自在婚配,易学易用,开辟速度快,运转空间小,运转速度快。
就我团体的感到来讲,fastm几乎是处理一切页面手艺成绩的银弹。
上文能够有些“自卖自诩”之嫌,特注释以下:
我不是一个擅长吹捧的人。不然早就从事倾销员、公关宣扬之类有出路的职业去了。并且因为自我倾销才能和社会关系学才能的完善,已形成了本身的才能、精神和工夫上的极大华侈。我疾苦本人的近况,却不忏悔。我懂得社会的游戏划定规矩,但没有才能,也不肯、不屑介入。心坎里老是存在着一种胡思乱想,但愿发明一个游离于现有划定规矩以外的事业。
别的,我是一个客不雅务实、思想周密明晰的人,具有“外举不避仇,内举不避子”的担任的学术精力。有一分,当说一分,决不多说一分,也毫不少说一分。
3.fastm的可重用性的中心在于ValueSet DOM
JSP手艺的可重用性的中心在于TagLib。
XML DOM的可重用性的中心在于DOM节点的通用操作。
Fastm的可重用性的中心在于ValueSet DOM节点的通用操作。好比,下面讲的那段生成ValueSet的代码。
Template DOM自己可以作为一个只读模板来利用,一样,Template DOM上面包括有的任何Template DOM布局也能够作为一个自力的只读模板来利用。这点和XML DOM一样。XML DOM的任何一个节点可以作为自力的节点来利用。
ValueSet DOM不但是数据重用的中心,一样是模板拼装重用的中枢。fastm完成各模板之间各个块的搬运拼装,再轻易不外了。完成所谓的Tile功效,小菜一碟。
JSP,还有某些暗示逻辑的TagLib,Velocity模板,XSL文件,都是包括逻辑的模板。团体以为,模板中包括逻辑,是一种很好笑的行动。模板的优点在于体现页面结构、显示作风,而不在于逻辑。为何不让善于逻辑的Java去向理逻辑?
在fastm中,Template DOM和ValueSet DOM中都不含有任何逻辑。一切的逻辑都落在Java代码中。而Java是一种高度面向对象的言语,其布局性和重用性是任何模板言语不克不及对比的。所以,fastm的可重用性的中心在于ValueSet DOM节点的通用操作。这些通用操作的代码固然由Java完成。
怎么培养啊 别光说不练啊,好 ,比如新人入门自己步是配置环境,虽然现在都有很多的集成环境,但是真实的体验下配置环境还是会有很多帮助,不论是你以后工作还是在真实的linux下开发。 |
|