这几天在研究hy中标签库的写法(类似于freemarker),对于他的后台页面都是ftl格式的,我非常好奇,

大概看完了所有manager文件下的代码,于是便产生了一个疑问,就是它定义的所有标签必须用@ms.打
头,标签必须正确闭合!他是怎么做到所有标签调用都必须@ms.打头的?我查了一下freemarker中import的用法,写了Demo测试,发现import 可以给标签空间起一个别名,但是写2个或以上的import,别名就不能一样!所以就更加好奇它的实现原理。先给大家看看它的后台所有ftl:

如上图所示,所有的标签调用都是用@ms.打头,也没有使用<#include “ui/index.ftl”/> 或者

<#import”ui/index.ftl” as ms/>最终在它的配置文件中找到了答案,如下所示:

他这样引用写的很好!让所有macro中定义的指令都统一用@ms. 调用。接下来我们看看

macro.ftl.如下图:

最后,由上图所示,在macro.ftl 中用include将index.ftl包含进来,而在index.ftl 中又使用include将其他所有的ftl包含进来了。这样的话,再在配置文件中配置一下就可以使用了。

解释hy(Xcms)内容管理系统中,后台manager文件夹中所有ftl页面中指令标签的调用,全部都用@ms.打头的原因相关推荐

  1. idea中各种标记文件夹的含义

    idea中各种标记文件夹的含义 在idea中标记文件夹 各个文件夹的含义 Source roots:通过将文件夹加入这种类别,来告诉IntelliJ IDEA,这个文件夹和它的子文件夹中包含源码,在构 ...

  2. python中临时文件及文件夹使用

    python中临时文件及文件夹使用 文章目录 python中临时文件及文件夹使用 一.简介 二.临时文件夹 2.1 获取临时文件夹 2.2 生成临时文件夹 三.临时文件 3.1 生成不自动删除(关闭时 ...

  3. php免写代码系统,drycms: 基于php7(swoole)+mysql的智能内容管理系统,后台不需要写代码,支持docker部署。...

    项目介绍 DRYCMS是一款基于PHP7(swoole)+MYSQL的智能内容管理系统,后台几乎不需要写代码,支持docker部署. 您可以照着文档里面的实践->多级分类操作一遍,然后就知道后台 ...

  4. 实验6-cp –r系统命令的实现--源路径(目录)中的所有文件和子目录,以及子目录中的所有内容,全部拷贝到目标路径(目录)中--操作系统实验

    实验目的 掌握Linux目录操作方法,包括打开目录.关闭目录.读取目录文件 掌握Linux文件属性获取方法,包括三个获取Linux文件属性的函数.文件属性解析相关的宏 掌握POSIX与ANSI C文件 ...

  5. ASP.NET Core 中的 wwwroot 文件夹

    在本文中,我将讨论ASP.NET Core应用程序中的 wwwroot 文件夹.请阅读我们之前讨论过ASP.NET Core 请求处理管道的文章.在本文的最后,您将了解 wwwroot 文件夹及其需求 ...

  6. 通过从备份中排除这些文件夹来节省Time Machine驱动器上的空间

    Are you getting notifications about a full Time Machine drive? Do you feel like your backups are tak ...

  7. Python目录下中没有Script文件夹

    其中需要将C:\python27\Scripts 和 C:\python27 添加到系统路径中. 计算机属性-远程设置-高级(环境变量)-系统变量PATH后面添加Scrips的路径 而我的Python ...

  8. sd卡有多个android文件夹,android - 如何adb拉出SD卡中存在的文件夹的所有文件

    android - 如何adb拉出SD卡中存在的文件夹的所有文件 我的SD卡中有一个文件夹:/mnt/sdcard/Folder1/Folder2/Folder3/*.jpg Folder1和Fold ...

  9. java递归删除文件夹_如何使用递归删除Java中的目录/文件夹

    java递归删除文件夹 Earlier we learned how to create a file in java and how to delete a file in java. Here w ...

最新文章

  1. glob.glob 函数读取文件
  2. C#面向对象(四)虚方法实现多态
  3. Outlook数据提取工具readpst
  4. UnsatisfiedLinkError解决办法
  5. Python中的负索引是什么?
  6. mysqldump表损坏问题
  7. wxWidgets:实现框架构造器
  8. boost::phoenix模块使用 istreambuf_iterator 测试 lambda 函数对象
  9. [渗透攻防] 一.从数据库原理学习网络攻防及防止SQL注入
  10. cookie 跨域问题
  11. Docker:尝试篇
  12. Sql server2005中如何格式化时间日期
  13. R语言与回归分析几个假设的检验
  14. 一分钟了解自动化测试
  15. javaweb时间插件
  16. 最全支付系统设计包含:账户,对账,风控...
  17. centos7 定时清理内存
  18. 扩容内存卡用mydisktest失效,教你怎么用USBoot恢复出真实容量
  19. java 生成word 分页,jsp转word + 分页
  20. upyun java_又拍云Java SDK

热门文章

  1. Mal-PEG12-acid,357277-61-3溶解性:水、DMSO、DCM、DMF
  2. n行Python代码系列:四行程序实现两个视频同屏播放
  3. MySQL数据库原理习题---SQL复杂查询
  4. 计算机主板上主要有哪些芯片,电脑主板上主要的芯片及作用
  5. Java基础 时间相关类小结[Timestamp,Date,Calendar]
  6. windowsXP远程桌面连接失败 “由于账户限制,无法登录”
  7. Word控件Spire.Doc 转换教程(二十八):将 Word 转换为 PCL
  8. 如何创建在线商城详细教程, 无代码拖放式网站建设工具, 使用US Domain Center最流行的在线建站平台
  9. Python爬取糗事百科段子+定时发送QQ邮箱
  10. telegram bot自动发送消息