import

概要

<#import path as hash>

这里:

  • path:模板的路径。 这是一个算作是字符串的表达式。(换句话说,它不是一个固定的字符串, 它可以是这样的一些东西,比如,profile.baseDir + "/menu.ftl"。)
  • hash: 访问命名空间的哈希表变量不带引号的名字。不是表达式。 (如果要引入动态创建的名字,那么就不得不使用 这个技巧。)

描述

引入一个库。也就是说,它创建一个新的空命名空间, 然后在那个命名空间中执行给定 path 参数中的模板, 所以模板用变量(宏,函数等)填充命名空间。 然后使得新创建的命名空间对哈希表的调用者可用。 这个哈希表变量将会在命名空间中,由 import (就像你可以用 assign 指令来创建一样。) 的调用者被创建成一个普通变量,名字就是 hash 参数给定的。

如果你用同一个 path 多次调用 import,它会创建命名空间, 但是只运行第一次 import 的调用。 后面的调用仅仅创建一个哈希表变量,你只是通过它来访问 同一个 命名空间。

由引入的模板打印的输出内容将会被忽略 (不会在包含它的地方被插入)。模板的执行是来用变量填充命名空间, 而不是写到输出中。

比如:

<#import "/libs/mylib.ftl" as my>

<@my.copyright date="1999-2002"/>

path 参数可以是一个相对路径,比如 "foo.ftl""../foo.ftl",或者是像 "/foo.ftl" 一样的绝对路径。 相对路径是相对于使用 import 指令模板的目录。 绝对路径是程序员配置 FreeMarker 时定义的相对于根路径 (通常指代"模板的根目录")的路径。

通常使用/(斜杠)来分隔路径组成, 而不是\(反斜杠)。如果你从你本地的文件系统中加载模板, 那么它使用反斜杠(比如在Windows环境下),FreeMarker 将会自动转换它们。

include 指令一样,获得机制本地化查找 也可以用来解决路径问题。

请注意,对于所有模板来说, 它可以自动做通用的引入操作,使用 Configuration 的"自动引入"设置就行了。

如果你命名空间不是很了解,应该阅读: 模板开发指南/其它/命名空间