模板

在PHP框架中需要使用smarty模板吗?

扶醉桌前 提交于 2019-12-02 05:28:52
在 java 开发中使用模板已经习以为常了,很多人讨厌 java web 开发栈中的 JSP,虽然 sun 公司推出了 JSF,但总感觉出来的不是时候,一直也没有怎么用过。在 java 网站开发教程中,SSH 中的两大框架 Struts 推荐使用 Velocity,而在 Spring 中则推荐使用 freemarker。甚至在前端语言 javascript 中都出现了各种各样的模板引擎。 在 PHP 的轻量级框架 CodeIgniter 中,明确写明: 注意:因为在视图文件中使用纯 PHP 要快一些,所以 CodeIgniter 不要求你一定要用这个类。然而,有一些开发者和对使用 PHP 有困难的设计师一同工作时,更愿意使用模板引擎。 模板是框架发展的新方向吗?使用 Smarty 呢,还是自己手写模板,或者用框架自带的。 我不少开发者认为:“就用 CI 的模板,我觉得 CI 这样的模版方式很爽”。 “模版自己写!”。 还有人觉得不应该使用模板,这些开发者主要是考虑到性能。 “最具性能的模板就是不要模板,直接 echo”。 但是,使用模板也不一定就达不到性能,“我是直接生成 html,大些的项目有必要生成一个”。 模板的坚持使用者们还给出了其它理由: “这个改变不影响模板设计者,内容仍将准确的输出到模板。同样的,哪天美工吃多了想要完全重做界面,也不会影响到程序逻辑。这是 smarty

Tiny模板引擎(Velocity Plus)应用示例

こ雲淡風輕ζ 提交于 2019-12-01 19:49:48
把TinyTemplate当成是Velocity的升级版其实也是可以的,毕竟它的语法是基到Veloccity扩展而来的,兼容度在80%以上。 至于TinyTemplate的实例是怎样的,且看下面: 宏的可变参数 在Java中的可变参数使用起来非常方便,Tiny模板也对可变参有一定支持。 #macro hello() ParameterList: ${helloParameterList.size()} #for(para:helloParameterList) hello:${para} #end #end #call("hello","aa",1,true,false) 运行结果: ParameterList: 4 hello:aa hello:1 hello:true hello:false 说明:在宏的包体中,有一个默认的变量,名称就是宏的名字+ParameterList,当前例子中,宏的名字是hello,所以变量的名字就是:helloParameterList。 此变量的类似是一个List,因此可以调用List的方法。 Set示例 运行结果: 宏定义及其调用示例 1:1 2:2 3:1 4:2 5:2 解释: 首先设置abc=1,然后显示它的值,结果是1,这个是理所当然的。 然后定义一个宏,在宏里设置变量abc的值为2,然后显示这个值。 在调用setAbc宏的时候

sping3+hibernate4框架模板

我的梦境 提交于 2019-12-01 01:06:07
本框架以商品购物平台项目为例,用到spring3mvc和hibernate4,主要搭建步骤如下: 1、spring3MVC模板 2、集成hiebernate4模板 3、Spring集成测试模板 包含的技术: spring框架; springMVC技术; velocity框架; 多视图解析器; Log4j日志框架; spring集成测试; 【配置web.xml】 【spring3MVC+Velocity模板】 (1)放入sping3所需的库、commons-logging-1.0.4.jar、jstl.jar, 加入velocity框架需要的库(velocity-1.7.jar、commons-collections-3.2.1.jar、commons-lang-2.4.jar) (2)配置web.xml,启动spring和mvc <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http

聊一聊前端模板与渲染那些事儿

我与影子孤独终老i 提交于 2019-11-30 00:12:06
欢迎大家收看聊一聊系列,这一套系列文章,可以帮助前端工程师们了解前端的方方面面(不仅仅是代码): http://my.oschina.net/MrHou/blog?catalog=477313&temp=1466755903794 1 页面级的渲染 再刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串。浏览器对其进行渲染。html中可能会混有一些php(或者php中混有一些html)。在服务端将数据与模板进行拼装,生成要返回浏览器端的html串。 这与我们现在做一个普通网页没什么区别。只不过现在,我们更常使用模板技术来解决前后端耦合的问题。 前端使用模板引擎,在html中写一些标签,与数据与逻辑基本无关。后端在渲染的时候,解析这些标签,生成HTML串,如smarty。其实前端与后端的交互在服务端就已经有一次了。 模板: front.tpl <div> {%$a%} </div> 后端: // 设置变量 $smarty->assign('a', 'give data'); // 展示模板 $smarty->display("front.tpl"); 到前端时是渲染好的html串: <div> give data </div> 这种方式的特点是展示数据快,直接后端拼装好数据与模板,展现到用户面前。 2 异步的请求与新增模板 新的时代

superword中的模板抽取实践

倖福魔咒の 提交于 2019-11-29 20:48:16
superword这个项目,全使用JAVA8新特性: https://github.com/ysc/superword ,一开始只是我的一个英语单词分析工具,用于生成HTML片段然后发到博客中,后来功能越来越强于是我就做成一个项目了,再后来有人跟我说自己不是计算机专业的不会用这个软件,于是我就改造成了一个WEB项目,这个项目现在有点需要改进的地方,就是 把JAVA代码生成HTML的这个逻辑改成使用FREEMARKER的方式 。 我们首先来看在org.apdplat.superword.system.AntiRobotFilter类中的原来的 JAVA代码生成HTML的逻辑: StringBuilder html = new StringBuilder(); html.append("<h1>The meaning of red color font is your answer, but the right answer is the meaning of blue color font for the word <font color=\"red\">") .append(quizItem.getWord().getWord()) .append(":</font></h1>"); html.append("<h2><ul>"); for(String option :

程序员简历模板

霸气de小男生 提交于 2019-11-29 14:16:27
README.md 说明 本系列程序员简历模板由国内首家互联网人才拍卖网站「 JobDeer.com 」提供。 在线MarkDown简历书写工具 https://github.com/geekcompany/DeerResume ( 支持了实时存档 教学:《如何写好技术简历》 http://get.jobdeer.com/744.get 程序员简历模板列表 PHP程序员简历模板 iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历模板 C/C++程序员简历模板 NodeJS程序员简历模板 架构师简历模板 通用程序员简历模板 来源: oschina 链接: https://my.oschina.net/u/166646/blog/516087

篮子、水果和鸡蛋——关于C++的模板偏特化和萃取编程技法

江枫思渺然 提交于 2019-11-29 01:48:52
最近在读《STL源码剖析》。读这本书的时候发现自己的C++的知识其实是非常匮乏的。 从大学的C++教材上学到一些C++基本的语法、内存管理、继承、多态等方面的基础知识。这些只是是一棵大树的根。而读STL的源码和侯捷的解析的时候,发现C++还有很多丰富的细节和技巧。这些是大树上的枝叶。学习C++,不仅要学习根,也要学习枝叶,这样才能让大树茂盛起来。虽然C++语法一些用法较为晦涩,但读完这些代码之后觉得思路比以前更开阔,另外可以活动脑筋。 比如模板的偏特化这个特性。侯捷的《STL源码剖析》中对于模板的偏特化(partial specialization)的解释为: 如果class template拥有一个以上的template参数,我们可以针对其中某个或多个 template参数进行特化工作。template是一个很抽象的东西。template偏特化之后就让模板变得具体那么一点点。 用一个形象一点的比喻吧。我们把template比作一个装东西的篮子。这个篮子既可以装鸡蛋,也可以装苹果。那么所谓偏特化就是让你用一个篮子专门装水果,这就是template水果篮。以后你就只能使用水果篮来装苹果、装梨,而不能使用其他的篮子来装这些水果了。 看一个STL例子: 有一个“篮子” iterator_traits, 它内部typedef 了value_type类型,用来定义模板的参数类型class I