Hanjst+更新升级:报错、innerLoop和loadingLayer
时间:2023-04-05 13:25:39
HTML5
在过去的几个月里,Hanjst做了一些升级,包括功能增强和性能优化,为Hanjst的生产环境部署添砖加瓦,保驾护航。为了方便后续维护和持续更新完善,特此备忘如下。2019年4月27日星期六12:48,+模板erros的可读错误报告2019年5月19日星期日19:19,+renderTemplateRecurse用于深层包含文件。2019年5月31日星期五18:44,+允许有限支持xxxelse范围内的变量,includeScript的错误修复。07:586/2/2019,+imprvswith_appendScript到appendScript以进行异步调用。6月5日星期三16:31,2019,+imprvswithparentNode=BODY19:18Monday,June10,2019,+asyncScripts的错误修复。2019年6月13日,星期四22:29,+loadingLayer。“XxxxLoading...Loading...
”.21:36,星期四,六月2019年2月20日,+MSIE浏览器警告。增加可读性错误异常报告当Hanjst遇到语法错误时,抛出可读性异常代码描述,形成可追溯的错误报告,一般形式如下:Hanjsttemplatecodeexecfailed.{“stack”:”ReferenceError:$myAds2is未在评估中定义\n(评估在renderTemplate(http://example.com/view/default/js/Hanjst.js?v=201906171103:468:15),:405:1)\n在renderTemplate(http://例子le.com//view/default/js/Hanjst.js?v=201906171103:468:39)\n在_callRender(http://example.com//view/default/js/Hanjst.js?v=201906171103:679:9)\n在http://example.com//view/default/js/Hanjst.js?v=201906171103:698:9\n在http://example.com//view/default/js/Hanjst.js?v=201906171103:701:3″,"message":"$myAds2isnotdefined"}第404行:第405行:if($myAds2['sadplace']=='homepage_up_right'){Line406:tpl2js.push("
增加对Hanjst父元素的检测这个改进是由于HTM本身的局限性,根据实验结果表明,浏览器的解析引擎在渲染页面时,如果是放在未关闭的div中的脚本,则不会默认执行,直接跳过。这样,如果将Hanjst放入一个div元素中,则默认启动随页面自动启动的Hanjst解析引擎后,无法实现后续加载嵌套页面等脚本。鉴于此,Hanjst在启动时会检测其父元素是否不是默认和预期的body,并抛出异常报错。等待开发人员进一步解决问题后再继续。添加loadingLayerHanjst编译页面时,会将原始代码暴露给调用者。虽然时间是以毫秒(ms)为单位,但如果遇到网速慢的情况,还是会有不完美的“印象”。为此,我们设计了在Hanjst工作时,在前端预设一个“幕布”,即loadingLayer,展示给用户。页面编好,大幕拉开,完美呈现!HanjstLoading...Hanjstloading默认layer的elementid为Hanjstloading,也可以通过启动参数指定一个自定义的elementId:Hanjst.LoadingLayerId='myLoadingLayer';增加对过时MSIE的检测。如果浏览器太旧,比如微软IE浏览器,尤其是8.0之前的版本,对JavaScript的支持有限,无法顺利完成Hanjst的编译分析,会报错。为了让用户更容易感知这些,我们对Hanjst进行了改进,增加了对MSIE版本过旧的检测,并给出相应的提示。Hanjst是一种基于JavaScript的模板语言和解析引擎,运行在客户端/服务器端。Hanjst能够表达逻辑控制,可以实现与服务器端模块语言相同的功能。当Hanjst完全在客户端解析时,节省了服务器端的计算资源;Hanjst模板语言是独立的,不绑定任何服务端资源;纯MVC,层间数据以JSON格式传输;全面支持常用的模板语言功能,具有复杂而强大的JavaScript编程能力;无学习成本,直接使用JavaScript编写模板语言;....-R/s2ST