Crox 是一个由 JavaScript 语言实现的高性能跨语言模板引擎。Crox 模板可以直接在JavaScript环境中使用,也可以翻译成 PHP、 JSP 等其他编程语言的可执行方法或翻译成 Velocity、Smarty 等其他模板引擎的源模板,Crox 通过独有的“模板逻辑直译”技术保证翻译后的结果在各种环境下都具备最佳执行效率。
遍历数组用 each,遍历对象用 forin
=== !== == != 目前都允许,翻译成 js 时保持不变
build 目录下,是用 build.wsf(windows 下双击运行,需要 java、google closure compiler)生成的。
crox.js 是 web(js)版的
crox-all.js 还包含到 php、vm 的翻译
crox2.js 是移动 web 版(比 crox.js 更轻量一点,不过差不多)
xxx-min.js 是相应的压缩版
全端时代的展现端多样化迫使后端服务纯数据化改造进程加快,而在前端领域依靠前端构造展现的WebAPP架构与后台输出展现的传统架构将长期共存。在此背景下一个能够在多种架构环境中广泛适用的跨语言模板引擎将带给我们:
不同Web架构间从数据到HTML的构建过程的统一,这样:
不同架构间的前端组件和区块可以共享复用
前端工程师改开发Demo为开发模板,降低“套页面”引入的质量风险
促成新型的同时支持前后端渲染的前端架构,可以:
解决单页应用站点内容无法被搜索引擎抓取的问题
让移动端在省电模式(高网速后台渲染)和省流量模式(低网速前台渲染)中灵活切换成为可能
基于语法、词法分析的模板引擎将有助于区块内基于数据变化进行局部刷新的技术实现
“高性能”是跨语言全端模板引擎的核心技术指标。因为无论在动辄数千QPS的后端环境下,还是在展现伴随着内存和电力消耗的移动端,模板引擎的性能要求都比在PC端分布式运行的环境里高出太多。那么如何做到高性能呢?
通过逻辑“直译”保障高效
通过明确的API定义保障逻辑"直译"可行
因此,我们提出了Crox。
Crox是如何做到 高性能
和 跨语言
的呢?请先看看 Crox的概要设计文档 吧
{{root.name}}
// 输出 data.name
{{#if root.length > 0}}
有 {{else}}
没了 {{/if}}
{{#each root val key}}
{{key}}
=> {{val}}
{{/each}}
{{#forin root val key}}
{{key}}
=> {{val}}
{{/forin}}
{{set a = data.lilei.mother.phone.brand}}
然后可以 {{a.prop}}
{{include "path/to/file.tpl"}}
// 导入file.tpl
{{#raw}}<script>console.log('{{#if}}{{/if}}')</script>{{/raw}}
Crox翻译输出 <script>console.log('{{#if}}{{/if}}')</script>
Crox模板语法已被 Kissy XTemplate 模板(有限)兼容
更多Crox模板语法说明,请点击 这里
如果对Crox的 编译原理
部分感兴趣,欢迎翻阅 Crox语言规范
IDEA: XBRL DOCUMENT { "instance": { "crox-20200423.htm": { "axisCustom": 0, "axisStandard": 0, "contextCount": 1, "dts": { "calculationLink": { "local": [ "crox-20200423_cal.xml" ] }, "definitionLink"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>crox</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" conte
http://thx.github.io/crox/ Crox是一个由JavaScript语言实现的高性能跨语言模板引擎.Crox模板可以直接在JavaScript环境中使用,也可以翻译成PHP,JSP等其他编程语言的可执行方法或翻译成Velocity,Smarty等其他模板引擎的源模板,Crox将保证翻译后的结果具备最佳执行效率. 在生产系统中,我们使用的各种前后端模板引擎多有其独到的一面,而C
Section Contents 内建函数参考 字母顺序索引 字符串内建函数 数字内建函数 日期内建函数 布尔值内建函数 序列内建函数 哈希表内建函数 结点(对于XML)内建函数 循环变量内建函数 独立类型内建函数 很少使用的和专家级的内建函数 指令参考 Alphabetical index assign attempt, recover compress escape, noescape flu
接下来,我们会详细描述 Django 内置模板语言的语法 (DTL),和 Mako、Jinja2 一样,需要掌握其注释、变量、过滤器、标签、控制语句等等的写法,并用实际的案例进行说明。 1. DTL 基础用法 1.1 变量 DTL 中变量的写法为 {{ variable }}, 这和 Jinja2 非常类似。模版引擎碰到模板变量时,会从上下文 context 中获取这个变量的值,然后用该值替换掉它
ThinkCMF前台模板多语言是使用多模板的方式来实现的,如:当前模板是simplebootx,如果想开启英文前台模板的话,就只要加一个模板名为 simplebootx_en-us模板就可以了; 前台模板多语言实现原理: ThinkCMF在前台控制器加载模板文件时,会根据当前用户的浏览器语言或者用户指定的语言来加载模板文件,如果是中文用户就加载 simplebootx 里的模板文件,如果是英文用户
快速上手 如果你有通过 NodeJs 调用 SOFARPC 的需求.可以按照如下的文档来开始. 安装 首先按照文档安装 https://github.com/sofastack/sofa-rpc-node 使用命令. $ npm install sofa-rpc-node --save 代码示例 暴露一个 RPC 服务,并发布到注册中心 'use strict'; const { RpcSer
具体查看ejs官方文档 https://github.com/mde/ejs
语境 另外,如果我从模板中删除createMode和sourceDatabaseId,一切都很好。 这就是上面使用的模板