On this page
import
Page Contents
Synopsis
<#import path as hash>
Where:
path
:模板的路径。这是一个计算结果为字符串的表达式。 (换句话说,它不必是固定的字符串,也可以是类似profile.baseDir + "/menu.ftl"
的东西.)hash
:哈希变量的未引用名称,您可以通过它访问名称空间。不是表达。 (如果必须导入动态构造的名称,则必须使用this trick。)
Description
用于收集可用于导入模板的宏,函数和其他变量的集合,这些宏,函数和其他变量在导入的模板中定义。例如,假设您编写了宏以生成一些常用的片段输出,并将它们放入/libs/commons.ftl
。然后,在要使用它们的模板中,执行此操作(按惯例,在模板顶部附近,紧靠其他任何import
-s):
<#import "/libs/commons.ftl" as com>
稍后在同一模板中,假设您要使用/libs/commons.ftl
中定义的copyright
宏。然后您可以像这样调用该宏:
<@com.copyright date="1999-2002"/>
请注意上面的宏名称前的com.
。在/libs/commons.ftl
中定义的所有内容都将在com
内部。
从技术上更详细地描述,import
首先创建一个新的空namespace,然后在该命名空间内执行使用path
参数指定的模板,因此该模板在变量中填充变量(宏,函数等)。然后,将名称空间分配给使用hash
参数指定的变量,您可以通过该名称空间访问其内容。命名空间是a hash,因此点运算符可以在上面工作。赋值就像assign
指令,也就是说,它在当前名称空间中设置变量。除非导入是在主(最顶部)模板的名称空间中进行,否则哈希变量也会在全局名称空间中创建。
如果您多次使用相同的path
调用import
,它将创建名称空间并仅在第一次调用import
时运行模板。以后的调用只会返回第一次导入模板时创建和初始化的名称空间,并且不会执行导入的模板。
导入模板打印的所有输出都将被忽略(不会在import
指令调用的位置插入)。执行导入的模板,以使用变量填充其名称空间,而不写入输出。
path
参数可以是相对路径,例如"foo.ftl"
和"../foo.ftl"
,也可以是绝对路径,例如"/foo.ftl"
。相对路径是相对于使用import
指令的模板目录的。绝对路径是相对于程序员在配置 FreeMarker 时定义的基础(通常称为“模板的根目录”)。
始终使用/
(斜杠)分隔路径组成部分,切勿使用\
(反斜杠)分隔。如果您是从本地文件系统加载模板,并且使用反斜杠(例如在 Windows 下),则 FreeMarker 将自动进行必要的转换。
像include
指令一样,acquisition和localized lookup可用于解析路径。
请注意,可以使用“自动导入”设置Configuration
自动为所有模板进行常用导入。由于模板可能不会使用所有自动导入的名称空间,因此也可以使用Configuration
的“惰性自动导入”设置来使导入延迟(按需)。
如果您不熟悉命名空间,则应阅读:模板作者指南/其他/命名空间
如果不确定是否应使用import
或稍微相似的include
指令然后看这个。