zoukankan      html  css  js  c++  java
  • FreeMarker笔记 第二章 数值和类型

    2.1 基本内容

    2.1.1 简介
    2.1.2 什么是数值

    和程序语言中的数值类型是相似的。

    2.1.3 什么是类型?
    2.1.4 数据模型是哈希表

    2.2 类型

    2.2.1 简介
    2.2.2 标量

    标量是最基本、最简单的数值类型,可以是:字符串、数字、布尔值、日期;

    2.2.3 容器

    容器的类型有:哈希表(HashMap)、序列(ArrayList)、集(集是有限制的序列,不能获取集的大小,也不能通过索引取出集中的子变量,但是它们仍然可以通过list指令来遍历);

    2.2.4 子程序
    2.2.4.1 方法和函数

    假设程序员在数据模型中放置了一个方法变量avg,那么它就可以被用来计算数字的平均值。给定3和5作为参数,访问avg时就能得到结果4;

    The average of 3 and 5 is: ${avg(3,5)}

    输出:

    The average of 3 and 5 is: 4

    那么方法和函数有什么区别呢:它们没有关系,但也不是一点关系都没有。方法是来自于数据模型(它们反射了Java对象的方法),而函数是定义在模板内的(使用了函数指令-这也是高级主题),但二者可以用同一种方式来使用。

    2.2.4.2 用户自定义指令

    用户自定义指令(换句话说,就是FreeMarker的标签)。

    假设现在有一个变量box,它的值是用户自定义的指令,用来打印一些特定的HTML信息,这个指令定义了一个标题和其中的信息。

    <@box title="Attention!">
        Too much copy-pasting may leads to 
        maintenance headaches.
    </@box>
    2.2.4.3 函数/方法和用户自定义指令的比较

    二者之间的选择是两难的。按经验来说,如果能够实现,请先用自定义指令而不要用函数/方法。指令的特征如下:

    • 输出(返回值)的是标记(HTML,XML等)。主要原因是函数的返回结果是可以自动进行XML转义(这是因为${…}的特性),而用户自定义指令的输出则不是(这是因为<@…>的特性所致,它的输出假定为是标记,因此就不再转义).
    • 副作用也是很重要的一点,它没有返回值。例如一个指令的目的是往服务器日志中添加一个条目。(事实上你不能得到自定义指令的返回值,但有些反馈的类型是有可能设置非本地变量的)。
    • 会进行流程的控制(就像list或if指令那样),但是不能在函数/方法上这么做;
    2.2.5 其它
    2.2.5.1 节点

    节点变量代表了树状结构中的一个节点,而且通常是配合XML格式来处理的。

    节点的主要作用是拓扑信息,也可以存储一些元信息(metadata)。

    项目

    1. P1:F:360LearnFreeMarkerworkspaceFreeMarker-hello-javahttps://github.com/yejq/FreeMarker-hello-java.git
    2. P2:F:360LearnfreemarkerworkspaceFreeMarker-hello-webhttps://github.com/yejq/FreeMarker-hello-web.git
  • 相关阅读:
    软件项目管理实践之日计划
    VB.NET版机房收费系统—数据库设计
    图的邻接矩阵存储结构
    Java多态特性:重载和覆写的比較
    《实体解析与信息质量》
    cocos2d-x lua 中使用protobuf并对http进行处理
    Memcached 笔记与总结(2)编译 php-memcache 扩展
    大数据的时代意义
    大数据的时代意义
    SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式
  • 原文地址:https://www.cnblogs.com/yejq/p/3967105.html
Copyright © 2011-2022 走看看