`
lzj0470
  • 浏览: 1272899 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Lite XML Preview

    博客分类:
  • Lite
阅读更多
  • MVC的本质不是分
    • MVC的初衷并不是分工合作
    • 分不是目标,不合理的分法更容易导致沟通成本的上升
    • 以数据为中心:去繁就简,返朴归真
    • 大乱需大治:表现层没有上下文,一切修改从源头出发

 

  • 前端MVC到底该怎么分
    • {HTML (M)+ CSS (V)} + JS(C)
    • JSON(M) + (HTML+CSS)(V)+JS(C)

 

  • 什么是模板引擎
    • 模板引擎的本质就是以一种以更加简单高效利于维护的方式帮我们完成拼接字符串的工作。
    • 源代码接近目标代码。
    • 源代码一般独立存在。

 
 
 
 

2

 
 
 
 

问渠哪能清如许 为有源头活水来 
——初识 Lite XML 

  • Lite 是什么
    • 缩写自List Template
    • JSON格式中间指令存在(可以类比于JVM上的字节码)
    • 利于代码迁移(JavaJSPythonPhp…
    • 利于性能优化(http://templatetest.googlecode.com/

 

  • Lite XML是什么
    • 一种以XML方式存在的Lite源代码(可以类比于JVMjava源代码)
    • 利于设计更高效的语法规则(因XML与目标代码HTML的近亲关系)

 

  • 其他特别之处
    • 表达式基于JavaScript运算规则。
    • 前后端、跨语言统一模版语法。

 

  • Lite XML能带来什么?
    • 保障输出合法性(减少XSS漏洞的发生)
    • 降低学习成本(统一的模版语法)
    • 提高编码效率(通用工具支持)
    • 培养严谨的编程习惯(严谨的语法结构)
    • 方便代码复用利于后期维护(碎片包含/组织、格式化安全…)

 
 
 
 
 
 

3

 
 
 
 

满堂花醉三千客 一剑霜寒十四州 
——语法亮点  

  • XML Lite 基础语法的亮点
    • 善解人意的XML
      • XML属性自动处理,XML文本自动编码。
    • 空循环处理。
      • 查询没有数据?请走for标记之后的else节点。
    • 文档片段包含。
      • 受不了大量只有一行代码的零碎模版文件?组织在一起吧,我支持!
    • 更多:http://code.google.com/p/lite/wiki/Syntactic_sugar_of_XML_Lite

 

 

 
 

4

 
 
 
 

避繁就简 道法自然 
——标记语法  

  • 标记语法的设计原则是,参考标准,避繁就简
    • 形式上近似JSTL 但有所简化
      • JSTLforEach标签还可以重定义对列表的起始位置,而Lite这些功能都迁移到表达式中,通过函数实现。简化控制逻辑。
    • 控制语法上也近似JSJava类编程语言
      • 事实上吧Lite中间代码从新翻译成JS并非难事,1.0A中已支持该功能

 

  • 最基本的标记有那些呢?

 

  • 如何看待:大道甚夷,而民好径
    • Lite核心指令相对简单稳定。
    • 我们可以通过自定义组建支持,但是不推荐。
    • 建议通过函数实现更复杂的功能,如上面所说的列表位置问题

 

5

 
 
 
 

    有之以为利 无之以为用 
    ——使用方法(Java版) 

  • 我们只做最需要的
    • 短小精悍,Lite XML大小只有区区100k,相对其他模板实现,非常之轻。
    • TemplateEngine是一个默认实现。
    • Lite XML没有提供复杂的配置支持。
    • 如何与WebworkStruts2)集成。

 

  • 提供必要的扩展
    • 扩展EL默认上下文
      • 全局函数、变量
      • 扩展指定类型的成员方法

 

  •  
    • 扩展解析模块
      • 在解析过程采用pipline模式组合节点解析器
      • 任何节点解析器都可以作用于所有类型的节点,以支持横向扩展
      • 节点解析器命中之后,输出编译指令,即可退出,完成纵向扩展。
      • 解析过程中支持直接对运行模板默认全局变量集合扩展(内部扩展)

 

  •  
    • 扩展运行时模版插件(不推荐)
      • 运行时插件,可以以类似jsp tag lib的方式工作,甚至可以通过代理程序复用jsp tag

 

  •  
    • 扩展编译期模版插件(不推荐)
      • 编译期插件允许某个插件在模板初始时直接控制默认全局变量集合。

 
 
 

6

 
 
 
 

    道隐无形 上德若谷 
    ——自动表单功能(Java) 

  • 表现形式
    • 沿用html标准,无需新语法,降低学习成本。
    • 根据服务端数据反向推断的方式自动初始化表单。
    • 一切在悄然之间按您的期待的方式自动完成

 

  • 处理逻辑
    • input 若未指定value属性,其值会自动从上下文获取
    • checkbox选中状态也可以根据上下文自动初始化
    • select,option如是

 
 

7

 
 
 
 

    为学日益 为道日损 
    ——内置SiteMesh功能(Java) 

  • 装饰配置的全局定义
    • 通过全局定义装饰规则管理布局和共享展现修饰
    • 方便全局统一修改
    • 简化主体内容

 

  • 兼容SiteMesh定义语法
    • 基本兼容SiteMesh的定义规则

 
 
 

8

 
 
 
 

    生而不有 功成而弗居 
    ——使用方法(JS版) 

  • 开发和调试期间
    • 源代码独立存在,独立编辑环境
    • 支持XSD自动语法提示
    • 修改后立即生效
    • 无需手工处理,一切自动完成

 

  • JSIJSA集成,自动导出优化。
    • 在上线时,可以将模版导出成直接的js代码,抛弃解析模块,提高运行效率。
    • 也可以导出成json中间指令。并设计一个运行时砂箱机制,保证模版中脚本安全(防止脚本攻击)。

 
 
 

9

 
 
 
 

    蓬山此去无多路 青鸟殷勤为看探 
    ——事件绑定技巧(JS版)  

  • 传统网页的事件链接方式
    • addEventListener,attachEvent
    • onclick=???
  • 基于模版的链接方式
    • ${action.onclick()}
    • ${action.showMessage(‘title’,’content’)}

 
 
 

10

 
 
 
 

五行通天地 八卦定乾坤 
——指令设计参考 

  • Lite指令的表现方式
    • 数值,字符串,数组,三种基本类型组合
    • 可通过表达式自身解析程序解析这种中间代码
    • 可以通过JSON格式的存储方式跨平台迁移

 

  • 表达式指令设计
    • 数据指令分以下五种类别
      • 变量类型
      • 常量类型
      • 延迟节点
      • 新数组节点
      • 新键值集合节点

 

  •  
    • 运算指令分按优先级分九重 (九组二十三条指令)。
      • 操作符指令分三段: 
        000           1000             1 
        组内编号 | 优先级编号 | 操作元素个数标记

 

  •  
    • 表达式解析过程和内部表示方法
      • 将函数调用,参数合并,集合维护都表示为普通运算符。
      • 逆波兰式单栈运算。

 
 

11

 
 
 
 

五行通天地 八卦定乾坤 
——指令设计参考 

  • 模版指令设计
    • 天地定位:
      • 乾卦对应数字为:111=7
      • 对应的模版指令为:ADDON(插件扩展)。
      • 坤卦对应数字为:000=0
      • 对应的指令为:EL表达式

 

  •  
    • 山泽相离:
      • 艮卦对应数字为:001=1;指令为:if
      • 兑卦对应数字为:1106;指令为:else

 
 

  •  
    • 雷风相薄:
      • 震卦对应数字为:100=4; 
        指令为:XML属性表达式 XML_TEXT
      • 巽卦对应数字为:011=3; 
        指令为:ML文本表达式 XML_ATTR

 

  •  
    • 水火不融:
      • 离对应数字为:101=5;指令为:for
      • 坎对应数字为:010=2;指令为:break
分享到:
评论
1 楼 fantom 2011-08-12  
怎么好的文章没人顶

相关推荐

    前端开源库-node-xml-lite

    "前端开源库-node-xml-lite"是一个专为前端开发者设计的轻量级XML处理库,尤其适用于Node.js环境。这个库以纯JavaScript编写,无需依赖其他外部组件,为XML的解析提供了一个简单且高效的解决方案。 XML(Extensible...

    hi3516-liteos烧写.xml

    hi3516-liteos烧写.xml

    YOLOv5-lite预训练权重文件

    YOLOv5-lite预训练权重文件(V5lite-e.pt/V5lite-s.pt/V5lite-g.pt/V5lite-c.pt) YOLOv5-lite预训练权重文件 YOLOv5-lite预训练权重文件 YOLOv5-lite预训练权重文件 YOLOv5-lite预训练权重文件 YOLOv5-lite预训练...

    markdown2tei:使用 pandoc 将 Markdown 转换为符合 TEI-Lite 的 XML 的脚本

    它将 Markdown 文件转换为符合 TEI Lite 标准的 XML 文件。 问题/拉取请求,欢迎。 要求 为了运行,这个脚本依赖于: sed xsltproc 标题字段 目前,此脚本可识别 TEI 标头的有限元素子集。 这些基本上都使用 ...

    Tflite_Model.rar

    标题中的"Tflite_Model.rar"指的是一个RAR格式的压缩包,它包含的主要是与TensorFlow Lite(Tflite)相关的模型资源。TensorFlow Lite是Google开发的一个轻量级的机器学习框架,它允许开发者在移动设备和嵌入式系统...

    X-Lite 3.0 汉化版

    **X-Lite 3.0 汉化版** X-Lite是一款流行的SIP(Session Initiation Protocol)客户端,主要用于VoIP(Voice over Internet Protocol)通信。它为用户提供了便捷的软电话服务,允许通过互联网进行语音通话。X-Lite ...

    X-lite完全 下载

    标题中的“X-lite完全下载”指的是获取X-lite软件的完整版本。X-lite是一款流行的SIP(Session Initiation Protocol)软电话应用,适用于个人用户和小型企业进行VoIP(Voice over Internet Protocol,即互联网语音...

    navicat9_lite中文版

    - **数据导入导出**:支持多种格式的数据导入导出,包括CSV、XML、TXT等,方便数据迁移和备份。 - **SQL编辑器**:内置的智能SQL编写器提供代码补全、语法高亮和错误检查,提升SQL编写效率。 - **数据可视化*...

    perl 对 xml的详细操作

    对于XML相关的网络协议和标准,Perl 也提供了相应的模块支持,例如 SOAP::Lite 支持SOAP协议,SOAP 是一种基于XML的协议,用于跨平台的远程方法调用;WDDX.pm 实现了WDDX协议,用于不同语言间的数据交换;XML::RSS ...

    TensorflowLite-Demo

    TensorFlow Lite是Google推出的一个轻量级机器学习框架,它主要设计用于在移动设备和嵌入式系统上运行机器学习模型。这个框架的目标是让开发者能够将训练好的TensorFlow模型部署到各种资源有限的设备上,如智能手机...

    DE10-Lite_v.2.0.1_SystemCD.zip_DE10-Lite_DE10-Lite型号_DE10Lite开发板

    DE10-Lite_v.2.0.1_SystemCD

    MMS-Lite中文参考手册.pdf

    然后,手册详细解释了如何创建MMS-Lite库,涉及到了使用Expat库进行XML解析和在不同开发环境(如WIN32和GNU)下的构建方法。 在第4部分中,手册重点介绍了MMS-Lite的低层组件,包括配置选项、组件移植和接口实现等...

    x-lite 3.0 用户手册

    ### X-Lite 3.0 用户手册:VoIP电话软件详解 #### 一、X-Lite 3.0 概览 X-Lite 3.0 是由CounterPath Solutions公司开发的一款下一代软电话客户端,旨在为用户提供媲美传统电话的所有功能,并在此基础上增加了桌面...

    navicat8lite下载 navicat8lite_mysql_en下载 navicat8lite_mysql_en mysql客户端下载

    navicat8lite下载 navicat8lite_mysql_en下载 navicat8lite_mysql_en mysql客户端下载 非常不错的mysql客户端

    capability_vrf-lite的作用

    OSPF vrf-lite OSPF vrf-lite OSPF vrf-lite OSPF vrf-lite

    HedEx Lite 华为软件

    HedEx Lite全网最低积分下载!!! 华为的文档是真的逻辑清晰好用,就是HDX文件不方便做批注,HedEx Lite还下架了,用HedEx Lite来转换成PDF吧。哈哈哈哈。 HedEx Lite是轻量化的电子文档应用桌面工具,具有免安装,...

    GD32F103移植liteOS

    在本文中,我们将深入探讨如何将LiteOS操作系统移植到GD32F103微控制器上。GD32F103是意法半导体(STMicroelectronics)开发的一款基于ARM Cortex-M3内核的32位微控制器,而LiteOS则是华为推出的一款轻量级实时操作...

    x-lite中文版

    《X-lite中文版:探索标准SIP协议Soft Phone的魅力》 在现代通信技术中,SIP(Session Initiation Protocol)协议扮演着至关重要的角色。它是一种应用层控制协议,用于建立、修改和终止多媒体通信会话,如语音、...

    LiteOS内核函数解析-RTOS内核原理.zip_liteos与rtos_liteos内核函数_rtos_rtos lite

    《LiteOS内核函数解析-RTOS内核原理》这一资料主要涵盖了华为的物联网(IoT)操作系统 LiteOS 的内核函数及其在实时操作系统(RTOS)中的应用原理。本文将详细解析这些关键知识点,帮助开发者深入理解 LiteOS 的内核机制...

Global site tag (gtag.js) - Google Analytics