id: e7555fc2f47d41be954b239f37757b12
parent_id: 
item_type: 1
item_id: e2897ed6d62149d8b1d46314d91a21a4
item_updated_time: 1764345579942
title_diff: "[{\"diffs\":[[1,\"freemarker_百度百科\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":15}]"
body_diff: "[{\"diffs\":[[1,\"<html>\\\r\\\n<head>\\\r\\\n  <title>freemarker_百度百科</title>\\\r\\\n  <basefont face=\\\"微软雅黑\\\" size=\\\"2\\\" />\\\r\\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\" />\\\r\\\n  <meta name=\\\"exporter-version\\\" content=\\\"YXBJ Windows/608924 (zh-CN, DDL); Windows/10.0.0 (Win64); EDAMVersion=V2;\\\"/>\\\r\\\n  <meta name=\\\"application-data:ANDROID_CLIP_TYPE\\\" content=\\\"full_and_local\\\"/>\\\r\\\n  <style>\\\r\\\n\\tbody, td {\\\r\\\n\\t  font-family: 微软雅黑;\\\r\\\n\\t  font-size: 12pt;\\\r\\\n\\t}\\\r\\\n  </style>\\\r\\\n</head>\\\r\\\n<body>\\\r\\\n<a name=\\\"14597\\\"></a>\\\r\\\n<h1>freemarker_百度百科</h1>\\\r\\\n\\\r\\\n<div><span style=\\\"word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;\\\"><div style=\\\"font-size: 16px\\\"><div style=\\\"font-size:100px;font-family:Helvetica, sans-serif;text-size-adjust:100%;\\\"><div style=\\\"font-size:0.13rem;line-height:0.13rem;\\\"><div><div style=\\\"background:rgb(255, 255, 255);color:rgb(51, 51, 51);word-wrap:break-word;\\\">\\\n<div>\\\n<div style=\\\"background:rgb(255, 255, 255);color:rgb(102, 102, 102);font-size:0.13rem;line-height:0.39rem;height:0.39rem;padding:0px 62px 0px 15px;position:relative;border-bottom:1px solid rgb(230, 230, 230);\\\">\\\n<div style=\\\"display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:1;\\\">声明：词条人人可编辑，创建、修改和认证均免费</div>\\\n<a href=\\\"https://wapbaike.baidu.com/common/declaration\\\" style=\\\"color:rgb(51, 51, 51);text-decoration:underline;position:absolute;right:35px;top:0px;\\\">详情</a>\\\n<div style=\\\"position:absolute;right:15px;top:2px;\\\">\\\n<em style=\\\"color:inherit;font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.12rem;line-height:0.19rem;\\\"><span style=\\\"color:inherit;font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.12rem;line-height:0.19rem;\\\"></span></em>\\\n</div>\\\n<span style=\\\"color:rgb(102, 102, 102);font-size:0px;line-height:0.39rem;display:block;height:0px;clear:both;overflow:hidden;visibility:hidden;\\\"> </span></div>\\\n\\\n<div style=\\\"overflow:hidden;text-align:center;display:block;height:440.22px;\\\">\\\n<a style=\\\"color:rgb(58, 127, 222);text-decoration:none;display:inline-block;position:relative;height:100%;max-width:100%;overflow:hidden;\\\">\\\n<img src=\\\":/01e8eda950354760bd072183cf4ab5c2\\\" type=\\\"image/jpeg\\\" data-filename=\\\"bbb5f512a4245b14eba151fbc337763c.jpg\\\"/>\\\n<div style=\\\"position:absolute;font-size:0.13rem;color:rgb(255, 255, 255);background:rgba(0, 0, 0, 0.5);border-radius:50px;right:17px;bottom:17px;min-width:55px;height:31px;padding-right:8px;\\\">\\\n<em style=\\\"color:rgb(255, 255, 255);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:18px;position:relative;top:10px;\\\"><span style=\\\"color:rgb(255, 255, 255);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:18px;\\\"></span></em><span style=\\\"position:relative;top:5px;left:7px;\\\">6</span>\\\n</div>\\\n<div style=\\\"display:block;position:absolute;left:17px;bottom:17px;width:63px;height:31px;background:rgba(0, 0, 0, 0.5);font-size:0.13rem;color:rgb(255, 255, 255);border-radius:50px;line-height:32px;\\\">\\\n<em style=\\\"color:rgb(255, 255, 255);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:18px;position:absolute;left:8px;\\\"><span style=\\\"color:rgb(255, 255, 255);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:18px;\\\"></span></em>\\\n<span style=\\\"position:absolute;left:28px;\\\">编辑</span>\\\n</div>\\\n</a>\\\n</div>\\\n\\\n<div>\\\n<div style=\\\"margin:0.18rem 0.17rem 0.12rem;\\\">\\\n<div style=\\\"position:relative;\\\">\\\n<div style=\\\"display:inline-block;margin-right:32px;\\\">\\\n<span style=\\\"font-size:0.24rem;color:rgb(0, 0, 0);line-height:0.29rem;font-weight:700;\\\">freemarker</span>\\\n</div>\\\n<div style=\\\"float:none;color:rgb(102, 102, 102);margin-top:0px;font-size:0.13rem;font-weight:400;position:absolute;right:-3px;top:0.03rem;width:0.32rem;height:0.23rem;line-height:0.23rem;text-align:center;\\\">\\\n<em style=\\\"color:rgb(102, 102, 102);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.15rem;vertical-align:0px;margin-right:0px;\\\"><span style=\\\"color:rgb(102, 102, 102);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.15rem;\\\"></span></em>\\\n</div>\\\n</div>\\\n</div>\\\n<div style=\\\"color:rgb(162, 162, 162);font-size:0.13rem;\\\">\\\n<ul style=\\\"margin:0px 17px;padding:0px;list-style:none;\\\">\\\n<li style=\\\"margin-top:0.08rem;font-size:0.14rem;line-height:0.24rem;margin-bottom:0.17rem;\\\">\\\n<em style=\\\"color:rgb(204, 204, 204);font-family:baikeFont_layout;font-weight:400;font-style:normal;float:left;margin-right:6px;\\\"><span style=\\\"color:rgb(204, 204, 204);font-family:baikeFont_layout;font-weight:400;font-style:normal;\\\"></span></em>\\\n<div style=\\\"color:rgb(153, 153, 153);margin-left:0.2rem;\\\">freemaker一般指本词条</div>\\\n</li>\\\n</ul>\\\n</div>\\\n<div style=\\\"margin:24px 17px 0px;padding-top:0.01rem;font-size:0.18rem;line-height:0.3rem;color:rgb(51, 51, 51);\\\">\\\n<p style=\\\"margin:0px;margin-top:0px;\\\">\\\nFreeMarker是一款<a href=\\\"https://wapbaike.baidu.com/item/%E6%A8%A1%E6%9D%BF%E5%BC%95%E6%93%8E\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">模板引擎</a>： 即一种基于模板和要改变的数据，\\t并用来生成输出文本（<a href=\\\"https://wapbaike.baidu.com/item/HTML\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">HTML</a>网页、<a href=\\\"https://wapbaike.baidu.com/item/%E7%94%B5%E5%AD%90%E9%82%AE%E4%BB%B6\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">电子邮件</a>、<a href=\\\"https://wapbaike.baidu.com/item/%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">配置文件</a>、<a href=\\\"https://wapbaike.baidu.com/item/%E6%BA%90%E4%BB%A3%E7%A0%81/3969\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">源代码</a>等）的通用工具。\\t它不是面向最终用户的，而是一个Java类库，是一款程序员可以嵌入他们所开发产品的组件。</p>\\\n<p style=\\\"margin:0px;margin-top:0.15rem;\\\">\\\nFreeMarker是<a href=\\\"https://wapbaike.baidu.com/item/%E5%85%8D%E8%B4%B9/131326\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">免费</a>的，基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language（FTL），属于简单、专用的语言。需要准备数据在真实编程语言中来显示，比如<a href=\\\"https://wapbaike.baidu.com/item/%E6%95%B0%E6%8D%AE%E5%BA%93\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">数据库</a>查询和业务运算，\\t之后模板显示已经准备好的数据。在模板中，主要用于如何展现数据，\\t而在模板之外注意于要展示什么数据<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[1]</sup>。</p>\\\n</div>\\\n\\\n</div>\\\n<div style=\\\"margin:0.3rem 17px 0.18rem;font-size:0.18rem;line-height:0.28rem;\\\">\\\n<ul style=\\\"margin:0px;padding:0px;list-style:none;\\\">\\\n<li>\\\n<div style=\\\"float:left;color:rgb(51, 51, 51);\\\">中文名</div>\\\n<div style=\\\"margin-left:0.84rem;color:rgb(102, 102, 102);word-wrap:break-word;\\\">\\\n福瑞马克</div>\\\n</li>\\\n<li>\\\n<div style=\\\"float:left;color:rgb(51, 51, 51);\\\">外文名</div>\\\n<div style=\\\"margin-left:0.84rem;color:rgb(102, 102, 102);word-wrap:break-word;\\\">\\\nFreeMarker</div>\\\n</li>\\\n<li>\\\n<div style=\\\"float:left;color:rgb(51, 51, 51);\\\">类别</div>\\\n<div style=\\\"margin-left:0.84rem;color:rgb(102, 102, 102);word-wrap:break-word;\\\">\\\n模板引擎</div>\\\n</li>\\\n<li>\\\n<div style=\\\"float:left;color:rgb(51, 51, 51);\\\">特点</div>\\\n<div style=\\\"margin-left:0.84rem;color:rgb(102, 102, 102);word-wrap:break-word;\\\">\\\n通用性高，模板语言强大</div>\\\n</li>\\\n<li>\\\n<div style=\\\"float:left;color:rgb(51, 51, 51);\\\">最新版本</div>\\\n<div style=\\\"margin-left:0.84rem;color:rgb(102, 102, 102);word-wrap:break-word;\\\">\\\nFreeMarker 2.3.23</div>\\\n</li>\\\n</ul>\\\n</div>\\\n</div>\\\n<div style=\\\"padding:0px 17px;\\\">\\\n<div>\\\n<a name=\\\"u0\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\"></a>\\\n<div style=\\\"margin:0.2rem -17px 0rem;background:rgb(245, 245, 245);height:0.08rem;margin-top:0px;\\\"></div>\\\n<a name=\\\"1\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\"></a>\\\n<a name=\\\"发展历史\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\"></a>\\\n<h2 style=\\\"margin:0px;line-height:1;font-weight:700;padding-left:0.1rem;margin-left:-0.11rem;font-size:0.21rem;color:rgb(0, 0, 0);margin-top:0.24rem;\\\">\\\n发展历史\\\n<div style=\\\"float:right;color:rgb(102, 102, 102);margin-top:0.04rem;font-size:0.13rem;font-weight:400;\\\">\\\n<em style=\\\"color:rgb(102, 102, 102);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.16rem;vertical-align:-3px;margin-right:2px;\\\"><span style=\\\"color:rgb(102, 102, 102);font-family:baikeFont_layout;font-weight:400;font-style:normal;font-size:0.16rem;\\\"></span></em>\\\n</div>\\\n<span style=\\\"line-height:1;font-weight:700;font-size:0px;color:rgb(0, 0, 0);display:block;height:0px;clear:both;overflow:hidden;visibility:hidden;\\\"> </span></h2>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\nFreeMarker最初的设计，是被用来在<a href=\\\"https://wapbaike.baidu.com/item/MVC%E6%A8%A1%E5%BC%8F\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">MVC模式</a>的Web开发框架中生成HTML页面的，没有被绑定到<a href=\\\"https://wapbaike.baidu.com/item/Servlet\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">Servlet</a>或HTML或任意<a href=\\\"https://wapbaike.baidu.com/item/Web/150564\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">Web</a>相关的东西上，它也可以用于非Web应用环境中。<div style=\\\"text-align:center;margin:0.25rem -17px;line-height:0;\\\">\\\n<a href=\\\"#\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;display:inline-block;width:83px;height:13px;\\\">\\\n<span></span>\\\n</a>\\\n<div style=\\\"color:rgb(136, 136, 136);font-size:0.13rem;line-height:1;margin-top:0.14rem;\\\">LOGO</div>\\\n</div>\\\n\\\n</div>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\n1999年末，FreeMarker的第一个版本出现在<a href=\\\"https://wapbaike.baidu.com/item/SourceForge\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">SourceForge</a>网站上，它最初是由Benjamin Geer和Mike Bayer编写，他们定义了FreeMarker最基本的语法。FreeMarker 1获得了<a href=\\\"https://wapbaike.baidu.com/item/LGPL\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">LGPL</a>（宽通用公共许可证）的许可，其版权归属于Benjamin Geer。此外，Nicholas Cull、Holger Arendt等人对该项目也做出了主要贡献。</div>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\n在2002年初，Jonathan Revusky用<a href=\\\"https://wapbaike.baidu.com/item/JavaCC\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">JavaCC</a>重写了FreeMarker的核心代码（<a href=\\\"https://wapbaike.baidu.com/item/%E8%AF%AD%E6%B3%95\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">语法</a>和<a href=\\\"https://wapbaike.baidu.com/item/%E7%BC%96%E8%AF%91\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">编译</a>），虽然对FreeMarker 1尽量做到向后兼容，但几乎是完全重写了。Attila Szegedi对FreeMarker 2也有重要影响，除了重构和优化一些核心的<a href=\\\"https://wapbaike.baidu.com/item/API/10154\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">API</a>（<a href=\\\"https://wapbaike.baidu.com/item/%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%BC%96%E7%A8%8B%E6%8E%A5%E5%8F%A3\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">应用程序编程接口</a>），Attila还作为主要编写者实现了FreeMarker对日期、时间的支持，写出的freemarker.ext*包完成对<a href=\\\"https://wapbaike.baidu.com/item/javabean\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">javabean</a>、<a href=\\\"https://wapbaike.baidu.com/item/Jython\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">Jython</a>和<a href=\\\"https://wapbaike.baidu.com/item/XML\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">XML</a>的映射，以及HTTP <a href=\\\"https://wapbaike.baidu.com/item/servlet\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">servlet</a>、<a href=\\\"https://wapbaike.baidu.com/item/JSP/141543\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">JSP</a>和Ant的集成。Dániel Dékány主要负责文档以及项目的维护（截至2011年，Dániel Dékány仍是该项目的主要维护者）<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[2]</sup>。</div>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\n2002年3月18日，FreeMarker的第一个发布候选版2.0 RC1发布<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[3]</sup>，又经过了2个候选版的BUG修复之后，正式版的Free Marker2.0于2002年4月18日发布<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[4]</sup>。2002年10月17日，FreeMarker 2.1 发布，该版本并不能与2.0版本<a href=\\\"https://wapbaike.baidu.com/item/%E5%85%BC%E5%AE%B9/3947308\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">兼容</a>，所以使用者如果不是新建工程的话，需要重新审视已有的代码和模版<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[5]</sup>。</div>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\n由于项目没有法律实体，FreeMarker的2.0.x和2.1.x的<a href=\\\"https://wapbaike.baidu.com/item/%E7%89%88%E6%9D%83\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">版权</a>仍归属Benjamin Geer。而在2002年12月制作2.2版本时，Benjamin Geer出于对自由开源许可的理解，将<a href=\\\"https://wapbaike.baidu.com/item/%E4%BB%A3%E7%A0%81%E5%BA%93\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">代码库</a>版权转给Visigoth Software Society（西班牙的一个非营利性软件协会）和共同创办人Jonathan Revusky<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[2]</sup>。</div>\\\n<div style=\\\"font-size:0.18rem;line-height:0.3rem;margin-top:0.16rem;\\\">\\\n2003年3月27日，FreeMarker 2.2 发布，这个版本引入了一些非常重要的新特性，但是有一些功能却不能逆向兼容<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[6]</sup>。在2.2的版本中，可能最重要的新特性就是<a href=\\\"https://wapbaike.baidu.com/item/namespace\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">namespace</a>支持，这使得FreeMarker成为了合适大规模项目的工具，因为它允许不同页面分享的<a href=\\\"https://wapbaike.baidu.com/item/%E5%AE%8F/2648286\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">宏</a>和<a href=\\\"https://wapbaike.baidu.com/item/%E5%8F%98%E9%87%8F/3956968\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">变量</a>没有任何名称空间冲突。同时，宏也变得更加强大，因为他们可以调用可选目标，并且宏现作为一流的变量，可以传递给其他宏使用。此外2.2中另一个吸引人的特性为，FreeMarker可以利用由第三方所写的<a href=\\\"https://wapbaike.baidu.com/item/JSP/141543\\\" style=\\\"color:rgb(58, 127, 222);text-decoration:none;\\\">JSP</a>标记库<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[7]</sup>。在此之后，2.3版本之前，共更新了8个版本<sup style=\\\"vertical-align:text-top;color:rgb(136, 136, 136);font-size:0.12rem;line-height:1;\\\">[6]</sup>。</div>\\\n</div>\\\n</div>\\\n<div style=\\\"margin:0px 15px;\\\">\\\n<div style=\\\"margin:25px 0px;height:0.35rem;line-height:0.35rem;color:rgb(136, 136, 136);background:rgb(255, 255, 255);text-align:center;border:1px solid rgb(255, 255, 255);\\\"><span style=\\\"text-indent:-10000px;display:inline-block;width:0.25rem;height:0.25rem;background-size:25px 25px;vertical-align:middle;visibility:hidden;\\\"></span><span style=\\\"vertical-align:middle;text-align:center;display:inline;margin-left:-25px;\\\">点击加载更多</span></div>\\\n\\\n\\\n\\\n</div>\\\n\\\n<div>\\\n</div>\\\n</div></div></div></div></div></span>\\\n</div></body></html>\\u0000\"]],\"start1\":0,\"start2\":0,\"length1\":0,\"length2\":14129}]"
metadata_diff: {"new":{"id":"e2897ed6d62149d8b1d46314d91a21a4","parent_id":"f67288c3a0be4374b5d532b5dcc3aabc","latitude":"0.00000000","longitude":"0.00000000","altitude":"0.0000","author":"","source_url":"","is_todo":0,"todo_due":0,"todo_completed":0,"source":"joplin-desktop","source_application":"net.cozic.joplin-desktop","application_data":"","order":1764348826735,"markup_language":2,"is_shared":0,"share_id":"","conflict_original_id":"","master_key_id":"","user_data":"","deleted_time":0},"deleted":[]}
encryption_cipher_text: 
encryption_applied: 0
updated_time: 2025-11-28T21:04:02.728Z
created_time: 2025-11-28T21:04:02.728Z
type_: 13