`
han2000lei
  • 浏览: 276093 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Helma中的skin模板

阅读更多

下面来看一下Helma中的skin模板:

    Helma中的skin模板其实就是一个页面,与html是一样的。但是它的后缀名是.skin,它支持一种脚本格式,这种脚本是Helma程序中经常用到的脚本,我们暂称其为Helma脚本。此脚本非常短小,还现还没有发再像java或aspx那么长的脚本段,一般情况下是它是像下面这样用的。请看代码:
<form name="f" method="post" action="<% response.action %>">

</form>
    <% response.action %> 就是一个Helma脚本段。它的值是从Helma的action中传过来的一个值,这里代表一个提交的action名。

    下面我们主要说一下Helma中的skin模板的使用:
    Helma中的skin模板的使用与jsp、axpx中的使用是完全不同的使用方式。因为这个模板是放在一个对象中的,这个模板只能在自己的对象中使用,除了Global与HopObject中的skin,详细了解请参考我的文档《Helma中的Global与HopObject》http://han2000lei.iteye.com/admin/blogs/327196。对象使用模板主要有两种方式:以下是Helma使用skin模板的代码:
this.renderSkinAsString("html");//skin是在Helma中对象目录下面存放的以.skin为后缀的模板文件
this.renderSkin("html");//对象目录下面的模板文件名是这样的:html.skin
renderSkinAsString("html");//这样是应用的公共的(Global目录下的)skin模板
renderSkin("html"); //只要前面不加this,都是应用的公共的(Global目录下的)skin模板
    现在来介绍一下renderSkinAsString()与renderSkin()的区别
renderSkinAsString();的作用是将一个skin文件抓过来使用,我们可以抓过来后赋值给一个变量。例:
var s = this.renderSkinAsString("html");//将html.skin模板抓过来赋值给一个变量

    其实,renderSkinAsString()是将一个模板变成了一个字符串来赋值给我一个变量的。
renderSkin();的作用是将模板展现出来,相当于向我们的浏览器输出一个页面来显示我们的数据。

下面来介绍一下前面有this与没有this的区别:
this.renderSkinAsString("html");
this.renderSkin("html");
renderSkinAsString("html");
renderSkin("html");

    先说有this的,因为模板是放在对象中的,那么带this的意思就是自己使用自己的模板。注意是使用的自己的,而Global下面的模板是使用不到的。Golbal下的模板是公共的,如果想使用,前面就不能加this,而必须像这样使用renderSkinAsString("html");或renderSkin("html");。而HopObject下的模板则必须用this来访问,因为Helma下的每一个对象都有一个HopObject中内容的拷贝(其实是每个对象继承的HopObject下的东西)。

现在再介绍一个在Helma程序中的一个关于skin模板的方法
var str = "hello word";//定义一个字符串
var skin = createSkin(str);//用这个字符串来创建一个skin模板
this.renderSkin(skin);//向浏览器展现这个模板

    createSkin(str);是通过字符串来创建一个模板。这样做非常有用,当你必须使用一个模板,而这个模板又非常短小,没有必要定义成一个单独的文件时,这样做非常有用。(如果一个小的模板,里面可能就只有一行代码,这样也要写成一个文件的话,那将会使目录变得非常有臃肿)

最后说一个值的注意的问题:
在模板中的<a href=""></a>与<img src="" />这样的关于路径的问题,要注意了:我们在jsp或是axpx或是html中使用的都是静态的路径。而在Helma的skin模板中,它们不是一个静态路径,更多的是一个action,其代码如下
<a href="<% this.href action="action" %>" >链接</a><!--它的href通常是一个Helma的脚本代码 -->
<img src="img" /><!--使用时一定要注意,如果这样写,src="img",这个img一定是个action,而不是静态文件-->

    我想要说的是,模板是出现这种关系到路径问题的时候,它都是访问的一个action,这种方式是与它的这种rest风格的编程密切有关的。
分享到:
评论

相关推荐

    mongodb + helma 实现web快速开发

    Helma支持多种模板语言,如JSP、Rhino JavaScript和E4X,使得开发者可以轻松地构建动态网站和Web应用。 将MongoDB与Helma结合使用,可以创建出高效的Web开发解决方案。MongoDB作为数据存储后端,负责处理和存储大量...

    PHP Scripting Engine Plugin for Helma-开源

    Helma是一个Web应用程序框架。 它提供了对各种脚本引擎的支持,但是Rhino JS脚本引擎插件仍然是唯一的捆绑插件。 该项目提供了一个PHP插件,允许PHP开发人员使用Helma Web应用程序

    Antville提供高性能、功能丰富的博客托管软件

    Antville 是用服务器端 JavaScript 编写的,并使用 Helma Object Publisher 开发。Antville 在后端使用关系数据库。 要运行 Antville,您需要 Helma Object Publisher 和关系数据库软件。我们用 PostgreSQL 和 MySQL...

    jala:ORF.at 的 Jala SVN 存储库的分支——现在是 antvillehelma 的一部分

    这是 Jala Javascript 库 1.2 版的 README 文件。... 要包含某个 Jala 模块,只需将以下行添加到 Helma 应用程序的源代码中(将[name]替换为所需的模块名称): app.addRepository("./modules/jala/

    antville:Weblog托管系统的皇后号–自2001年以来用服务器端JavaScript编写

    Antville的源代码中仍然可能隐藏着错误。 如果您找到一个,请告诉我们。 Antville的创建者对软件的功能不承担任何责任。系统要求要运行Antville,您需要和关系数据库软件。 我们在和测试了Antville – 应该工作。 ...

    twoday-开源

    Helma是一种JavaScript服务器环境,用于构建动态Web应用,它支持数据库访问、模板引擎和HTTP服务等功能。因此,HelmaTwoday可能包含了运行或开发Twoday所需的所有文件和资源,比如源代码、配置文件、数据库脚本、...

    helvm.github.io::sun:HELVM-在HaskellEta中实现的天堂般的神秘(Vegan Metro)虚拟机

    :sun: HELVM (发音helium )是在Haskell / Eta中实现的Heavenly Esoteric Little(素食地铁)虚拟机。 HELVM有六个部分: :helicopter: (发音helicam )天生深奥的小混凝土绝对机 ‍:wrench: :wrench: ‍:sheaf...

    antville:更新你的克隆——这个 repo 被替换了

    Antville 完全用 JavaScript(准确地说是 ECMAScript)编写,并基于 Helma Object Publisher,这是一个强大且快速的可编写脚本的开源 Web 应用程序服务器(它本身是用 Java 编写的)。 Antville 在后端使用关系...

    nodejs快速入门

    - **先驱者们**:早在Node.js出现之前,已有其他几种尝试将JavaScript应用到服务器端的技术,比如Aptana Jaxer(基于SpiderMonkey)、Helma(基于Rhino)。这些尝试为Node.js的发展奠定了基础。 - **早期挑战**:...

    warpFX-开源

    warpFX是Flex:trade_mark:的数据抽象库,可在Flex:trade_mark:与支持某些已定义远程方法的任何AMF3兼容服务器之间提供透明数据服务。 warpFX附带了用于Helma的服务器端远程方法和AMF3实现。

Global site tag (gtag.js) - Google Analytics