FreeMarker中<#include>和<#import>标签的区别

在使用freemarker作为前端页面模板的应用中,会有很多的freemarker模板页面,这些ftl会在不同的页面中重复使用,一是为了简化布局的管理,二是可以重复使用一些代码。

在freemarker中可以通过以下两种方式来使用已经存在的模板。他们是<#inclue>和<#import>标签。

1.<#include> directive

该标签的作用是将便签中指定的路径的ftl文件导入到使用标签的ftl文件中,包括macro\funtion\variable等所有被引用的ftl内容。被引用的ftl内容会在引用的ftl中重新被渲染最终输出。一般用于页面拆分,便于页面重用,如将header和footer分别抽取出来独自成模板,这样在所有返回给前端的page里都可以include这两个模板了。

<#include "../../header.ftl"> 将相对路径中的header.ftl文件加载到当前文件中。如header.ftl中定义了宏、函数等,在当前文件中可以不加命名空间前缀直接使用。如在header.ftl中

定义了<#marco getBranch></macro>,可以在当前文件中直接使用:<@getBranch>...</@getBranch>.

2.<#import> directive

该标签的字面意义和include差不多,经常会混淆使用。其含义是将标签中指定的模板中的已定义的宏、函数等导入到当前模板中,并在当前文档中指定一个变量作为该模板命名空间,以便当前文档引用。与include的区别是该指令不会讲import指定的模板内容渲染到引用的模板的输出中。

如:<#import  ”../../service.ftl as service>.其作用是将service.ftl中的定义的各宏、函数、变量、自定义、设置等内容用指定的命名空间名称加以引用。但是当前文档不会将import的模板输出插入到import标签的位置。和<#include>标签一样可以使用相对路径和绝对路径引用外部模板。

如:service.ftl中定义的宏如下:<#macro branchService></#macro>,在当前文档中可以这样导入<#import "../../service.ftl" as service> ,service变量作为该文档中使用service中服务的命名空间,调用时应该这样:<@service.branchService >....</@service.branchService>.

原文地址:https://www.cnblogs.com/jpfss/p/8445200.html

时间: 2024-10-14 17:22:19

FreeMarker中<#include>和<#import>标签的区别的相关文章

Ruby中 Include, Extend, Import, Require 的使用区别

Include 如下例当你Include一个模块到某个类时, 相当于把模块中定义的方法插入到类中.它允许使用 mixin.它用来 DRY 你的代码, 避免重复.例如, 当你有多个类时, 需要相同的函数时, 可以把函数定义到module中, 进行include.下例假设模块Log和类TestClass在相同的.rb文件.如果它们存在于多个文件, 则需要使用 load 或 require 导入文件. module Log def class_type "This class is of type:

Android中margin和padding标签的区别

Android中的margin标签和padding标签到底有什么区别,从以下这段简单的代码图和效果图片就可以看出效果来! 这是一张普通的ImageView载入的图片 下面代码段先加入的部分为android:layout_margin="20dp"得到的效果图片为,此处明显可以看出在图片上方和左侧留出了20个dp单位的空间. 再加入接下来的代码如下:android:paddingLeft="50dp",得到的效果图片为. 那么此处不难看出,margin指的是Image

Android中dp和sp标签的区别

记得之前学习中有位老师说过我们经常使用的尺寸单位为dp和sp,而这两个单位有什么区别在今天的学习中和我遭遇了.在书中描述的代码中,反复出现比较多的是dp,px.所以呢,想趁着这个机会搞清涉及的尺寸单位,免得以后再在这个问题上浪费时间. px:pixels,每个像素对应着屏幕上的一个点,一般作为分辨率设置时着重使用的单位. sp:scaled pixels,比例像素,主要处理字体的大小,可以根据用户的字体大小首选项进行缩放.而比较关键的是,根据Google建议,TextView的字号最好使用sp字

Laravel模板引擎Blade中section的一些标签的区别介绍

Laravel 框架中的 Blade 模板引擎,很好用,但是在官方文档中有关 Blade 的介绍并不详细,有些东西没有写出来,而有些则是没有说清楚.比如,使用中可能会遇到这样的问题: [email protected] 和 @section 都可以预定义可替代的区块,这两者有什么区别呢?[email protected] 可以用 @show, @stop, @overwrite 以及 @append 来结束,这三者又有什么区别呢? 本文试对这些问题做一个比较浅显但是直观的介绍. @yield 与

PHP中include和require语句的区别

通过 include 或 require 语句,可以将 PHP 文件的内容插入另一个 PHP 文件(在服务器执行它之前). include 和 require 语句是相同的,除了错误处理方面: require 会生成致命错误(E_COMPILE_ERROR)并停止脚本 include 只生成警告(E_WARNING),并且脚本会继续

iOS #include与#import的区别

#include  #import  @class   讲解  #include 区分 #include <x.h>与#include "x.h"的作用 #include <x.h>:它用于对系统自带的头文件的引用,编译器会在 系统文件目录下去查找该文件. #include "x.h":用户自定义的文件用双引号引用,编译器首先会 在用户目录下查找,然后到安装目录中查找,最后在系统文件中查找. 在使用#include的时候要注意处理重复

CSS中link和@import的区别

你对CSS中link和@import的区别是否熟悉,这里和大家分享一下,@import  属性用来指定导入的外部样式表及目标设备类型, link除了调用CSS外还可以有其他作用譬如声明页面链接属性,声明目录,rss等等,而@import就只能 调用CSS. CSS中link和@import有什么区别? 定义  ◆link元素 HTML和XHTML都有一个结构,它使网页作者可以增加于HTML文档相关的额外信息.这些额外资源可以是样式化信息(CSS).导航助手.属于另 外形式的信息(RSS).联系信

#import、#include、#import&lt;&gt;和#import””的区别

#import.#include.#import<>和#import””的区别 一.#import与#include #import不会引起交叉编译的问题.因为在Objective-C中会存在C/C++和Object-C混编的问题,如果用#include引入头文件,会导致交叉编译. 二.#import<>与#import"" 在实际运用中都是某个框架里的.#import <Three20/Three20.h><>通常指向的是一个目录#im

(转载)OC学习篇之[email&#160;protected]关键字的作用以及#include和#import的区别

前一篇文章说到了OC中类的三大特性,今天我们来看一下在学习OC的过程中遇到的一些问题,该如何去解决,首先来看一下我们之前遗留的一个问题: 一.#import和#include的区别 当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 但是使用两次#import的话,不会报错,所以他可以解决重复导入的问题,他会做一次判断,如果已经导入一次就不导入了 二.关键字@class的作用 在来看一下OC中的关键字@class的作用,在