长沙理财网站建设,网站后台传不上图片,中国住房和建设部厅查询网站,logo制作规范学习了一段时间的鸿蒙开发#xff0c;发现鸿蒙开发还是比较简单的#xff0c;今天突然心血来潮#xff0c;研究了一下鸿蒙热更新#xff0c;最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言#xff0c;ArkTs又是基于TypeScript语言的#xff0… 学习了一段时间的鸿蒙开发发现鸿蒙开发还是比较简单的今天突然心血来潮研究了一下鸿蒙热更新最终得出的结论是鸿蒙暂时不支持热更新。 鸿蒙app开发主要是利用的ArkTs语言ArkTs又是基于TypeScript语言的TypeScript语言又是机遇JavaScript语言。我们先不管他们三种语言的关系总之一句话鸿蒙开发可以用这三种语言中的任意一种语言都能开发和兼容。既然他们都能兼容那他们任意一种语言支持热更新鸿蒙应该就能支持热更新了。
1.JavaScript是否支持鸿蒙热更新探索。 怀着这个思路我就开始了各种查找资料皇天不负有心人经过一番查找真的被我找到了踪迹。在JavaScript中可以利用Document创建元素的方式设置src把需要热更新的JavaScript代码动态加载到Document树中实现的方式如下
function loadScript(url) {var script document.createElement(script); // 创建script标签script.type text/javascript; // 指定脚本类型为JavaScriptscript.src url; // 设置要加载的JS文件路径// 将script标签添加到页面头部或者body尾部根据需求选择(document.head || document.getElementsByTagName(head)[0]).appendChild(script);
}// 调用loadScript()函数进行动态加载JS文件
loadScript(path_to_your_file.js); JavaScript能动态加载JavaScript代码是否就能证明鸿蒙也能动态加载了呢很遗憾答案是否定的因为鸿蒙的绘制不是依靠的Document树无法使用像Web端动态把js代码加载到Document中所以JavaScript该方法实现鸿蒙热更新方式排除。 经过继续查找发现还有另外两种方式即使用eval函数或者new Funtion()的方式使用代码如下
1eval函数使用eval函数可以动态加载js代码
var code console.log(Hello World!);; // 要执行的代码存储在变量code中
eval(code); // 执行代码
上面的代码在js中运行有效但是在鸿蒙系统中运行报错 提示不支持eval函数经过鸿蒙官网查询文档也有别人遇到类似的问题给出的答案是鸿蒙目前不支持eval函数 故eval函数的方式只能作罢。 2new Function方式的实现在Function的括号中传入js代码即可实现动态加载
var codeString function sayHi(){ console.log(Hi!); }; // 定义了一个名为sayHi的函数
var func new Function(codeString); // 创建动态函数
func(); // 经过运行也是报错 报错信息也是报的不支持eval函数我们也可以推断new Function的方式最终也是调用的eval函数动态解释js代码了估计是鸿蒙开发者觉得热更新风险较大故屏蔽了eval函数的支持。
2.TypeScript和ArkTs是否支持鸿蒙热更新探索。 经过一番查找发现TypeScript和ArkTs均无特别支持动态加载代码的相关方法所以想要动态加载代码实现热更新估计的等鸿蒙官方支持了。
3.总结
鸿蒙由于使用的是ArkTs语言它和TypeScript语言和JavaScript语言渊源很深他们三种语言中虽然JavaScript有多少方式支持动态加载但是均不适合鸿蒙系统或者是鸿蒙系统开发者有意不放开动态加载功能故很遗憾鸿蒙系统暂时不支持热更新后续如果鸿蒙放开eval函数或新增了相关Api后续再更新文章感谢各位看官原创不易欢迎点赞关注谢谢