自2019年元旦发布Hanjst模板语言及其编译引擎以来,已经一年多了。在此期间,随着Hanjst模板语言的推广和应用?Hanjst,我们陆续发布了以下更新:??Hanjst/Hanjst更新加上JavaScript运行时优化等,Hanjst+更新升级:报错,innerLoop和loadingLayer,Hanjst模板语言和引擎在线文档Doc&API登场。近期对Hanjst进行了一些更新,现介绍如下,以供参考。1、升级:增加API接口函数Hanjst.showImageAsync,用于显示HTML图片元素1.1。背景及问题此语句在调用Hanjst之前会报错一次Invalidrequestforimagefile'{\$imgPath}'whichdoesnotexistontheserverside.如果服务器不做一些基于.htaccess的指向,这个请求在大多数情况下会返回404错误。这实际上是一个无意义的操作,应该避免。1.2.解决方案HTML页面元素
...修改后:...{\$showImageAsync(\$imgId)}…1.4。扩展了对更多图像异步加载的支持它对页面在低速网络上的表现有很大帮助。我们在Writing5GNetworkSpeedandPageSpeedUp中描述了Lazyloading(https://ufqi.com/blog/5g-network-speed-webpage-lazyloading/),如果在Hanjst中集成了这样一个功能default,或者对整个Hanjst或者整个页面的性能有很大的帮助。在上述以外的一些场景下,也可以主动引入showImageAsync实现图片的异步加载。这也算是加分项,买一赠一。2.改进:引入部分bracketPos和dotPos来判断模板语言的表达式2.1。背景和问题1){\$aFunc(0.2)}–>解析错误。Hanjst的语法定义中,要在当前位置显示一个变量,可以直接使用下面的写法:2){\$var}同时,这个字符和下面的表达式还可以表达更多的意思:3){\$aFunc()}–>执行aFunc函数,并在当前位置显示结果;4){\$aFunc(\$var)}–>执行带参数的aFunc函数,并在当前位置显示结果;5){\$aFunc(\$var1,\$var2)}–>执行两个以上参数的aFunc函数,并在当前位置显示结果;6){\$var.substring(0,10)}–>对变量$varNative字符串截取函数substring执行JavaScript,并在当前位置显示结果;7){\$var=1}–>普通的JavaScript赋值语句,不会在当前位置显示任何东西;8){\$var++}->普通的JavaScript字符串操作不会在当前位置显示任何内容;但是,在表达式{\$aFunc(0.2)}的解析过程中,发送了一个错误,主要问题是在区分.dot和comma时发生了异常,需要修复。2.2.解决方案之所以定位问题是因为.dot和逗号的位置。对于这种场景,在程序中添加兼容性就足够了。涉及到的变化不算太大,主要是本地添加了变量bracketPos和dotPos。判断条件包括,当dotPos小于bracketPos时,正常情况下为6)的表达式,当dotPos大于bracketPos时,为1)的表达式。2.3.修改前示例:…{\$aFunc(0.5)}–>解析错误,程序抛出异常修改后:…{\$aFunc(\$abc)}–>aFunc(\$abc){\$aFunc(0.5)}–>aFunc(0.5),携带参数0.5执行函数aFunc,并在当前位置显示结果{\$a.substring(0,5)}–>\$a.substring(0,5)...3.其他改进和优化3.1。重新启用Hanjst.asyncScriptArr。3.2.改进appendScript。3.3.改进了异步调用导入脚本的时间。3.4.同步更新了Hanjst的在线文档手册(https://wadelau.github.io/hanjst/index),+showImageAsync自定义函数章节...?Hanjst是一个基于JavaScript的模板语言和解析引擎,她运行在client/server上边。?HanjstHanjst可以表达逻辑控制,可以实现与服务器端模板语言相同的功能。当Hanjst完全在客户端解析时,节省了服务器端的计算资源;Hanjst模板语言是独立的,不绑定任何服务端资源;纯MVC,层间数据以JSON格式传输;全面支持常用的模板语言功能,具有复杂而强大的JavaScript编程能力;无学习成本,直接使用JavaScript编写模板语言;....Hanjst是一种基于JavaScript的模板语言和解析引擎,同时运行在客户端和/或服务器端。Hanjst可以表达逻辑控制并实现相同的功能作为服务器端模板语言。Hanjst在客户端的运行时,减少服务器端的计算渲染;Hanjst是语言无关的,不受后端脚本或语言的约束;与MVC、数据传输完全隔离withJSON;完全支持具有内置逻辑和自定义JavaScript函数的模板标签;无需学习更多标签语言,只需学习JavaScript;….?HanjstHengist升级:+showImageAsync和性能改进等-R/02SQ