当前位置: 首页 > wzjs >正文

遂宁网站优化珠海模板开发建站

遂宁网站优化,珠海模板开发建站,网站制作的流程,设计制作售卖🎉 Harmony OS Next里的Web组件:网页加载的全流程掌控手册 ##Harmony OS Next ##Ark Ts ##教育 本文适用于教育科普行业进行学习,有错误之处请指出我会修改。 开发者必看的生命周期回调详解代码实操指南 作为开发者,你可能经常需…

🎉 Harmony OS Next里的Web组件:网页加载的全流程掌控手册

##Harmony OS Next ##Ark Ts ##教育

本文适用于教育科普行业进行学习,有错误之处请指出我会修改。

开发者必看的生命周期回调详解+代码实操指南

作为开发者,你可能经常需要加载本地或在线网页吧?ArkUI的Web组件就是你的超级武器库!它提供了9大关键生命周期回调,让你像开了上帝视角一样感知网页加载的每个心跳💓。


🚦 一、Web组件的9个关键生命周期时刻

1️⃣ aboutToAppear():组件诞生第一课

这是组件实例化后的第一个动作!在build()执行前,记得在这里做三件大事:

aboutToAppear(): void {webview.WebviewController.setWebDebuggingAccess(true); // 🔧开启调试模式customizeSchemes(); // 🌐设置自定义协议权限configCookie(); // 🍪初始化Cookie配置
}

⚠️ 警告:别在这里操作DOM!此时网页还是"胚胎"状态呢~


2️⃣ onControllerAttached:操控权交接仪式

当Controller成功绑定Web组件时触发,相当于拿到汽车钥匙🚗!重点提示:

.onControllerAttached(() => {console.log('🎯控制器已就位!');registerJavaScriptProxy(); // 📦注入JS对象setCustomUserAgent(); // 🕵️‍♂️设置伪装UAthis.controller.loadUrl(); // ⚡可安全调用
})

允许操作:loadUrl(), getWebId()
❌ ​​禁止操作​​:zoomIn(), executeJavaScript()(网页未加载别手痒!)


3️⃣ 拦截双雄:onLoadIntercept vs onOverrideUrlLoading
回调事件触发场景特殊限制使用建议
onLoadIntercept所有URL加载前通用拦截首选✅
onOverrideUrlLoading仅非iframe的HTTP(s)协议加载LoadUrl/iframe加载不触发⚠️特定协议过滤🚩

实战代码对比:

// 万能拦截器
.onLoadIntercept((event) => {if (event.data.getRequestUrl().includes('ads')) {console.log('🛑拦截广告请求!');return true; // 阻断加载}return false;
})// 协议专项处理
.onOverrideUrlLoading((req) => {if (req.getRequestUrl() === 'about:blank') {console.log('🚫拒绝空白页请求');return true; }return false;
})

🌐 二、网页加载进度三重奏

4️⃣ onPageBegin:网页诞生第一声啼哭👶
.onPageBegin((event) => {console.log(`🌐网页开始加载:${event.url}`);
})

📌 重点:仅主frame触发!子frame加载时静默无感

5️⃣ onProgressChange:加载进度条实况直播
.onProgressChange((event) => {console.log(`📊加载进度:${event.newProgress}%`);// 主frame完成后仍可能收到子frame进度更新
})
6️⃣ onPageEnd:网页加载毕业典礼🎓
.onPageEnd((event) => {console.log(`🎉加载完成:${event.url}`);// ★最佳JS执行时机★this.controller.executeJavaScript('initPage()');
})

⚠️ 坑点预警:此时DOM可能还未渲染完成!别急着操作元素


🚨 三、异常处理与特殊时刻

7️⃣ onRenderExited:崩溃急救指南

渲染进程突然崩溃时(内存不足/代码异常),这是你的救命通道:

.onRenderExited((event) => {console.error(`💥渲染崩溃!原因码:${event.renderExitReason}`);saveRecoveryData(); // 🛟紧急保存数据this.controller.loadUrl(); // ♻️重启加载
})
8️⃣ onDisAppear:组件退休派对🎭

组件卸载时自动清理资源:

.onDisAppear(() => {promptAction.showToast({ message: '网页已隐藏👋', duration:2000 });releaseMemory(); // 🧹内存清理
})

⚡ 四、性能优化三板斧(附监控代码)

Web组件直接提供三大核心性能指标回调:

📊 性能指标对照表
指标名含义业务价值监控代码
FCP首次内容绘制时间用户感知速度⏱️onFirstContentfulPaint
FMP首次有效绘制时间核心内容可见性👁️onFirstMeaningfulPaint
LCP最大内容渲染时间页面填充完成度📏onLargestContentfulPaint

实战监控代码:

.onFirstContentfulPaint(event => {console.log(`🚩FCP指标:${event.firstContentfulPaintMs}ms`);
})
.onFirstMeaningfulPaint(event => {console.log(`🚀FMP指标:${event.firstMeaningfulPaintMs}ms`);
})
.onLargestContentfulPaint(event => {console.log(`📌LCP指标:${event.largestContentfulPaintMs}ms`);
})

🧩 五、完整组件代码示例

// WebComponent.ets
import { webview, Header, WebResourceResponse } from '@kit.ArkWeb';@Entry
@Component
struct MyWebView {controller: webview.WebviewController = new webview.WebviewController();build() {Column() {Web({ src: $rawfile('index.html'),controller: this.controller }).onControllerAttached(() => { /* 控制器绑定 */ }).onPageBegin(() => { /* 加载开始 */ }).onFirstContentfulPaint(() => { /* FCP监控 */ })// ...其他回调挂载}}
}

🚀 六、前端页面最佳实践

<!-- index.html -->
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><!-- 重要提示:预加载关键资源 --><link rel="preload" href="main.css" as="style">
</head>
<body><!-- 首屏优先展示内容 --><h1 data-fcp-marker>欢迎使用ArkWeb!</h1><!-- 延迟加载非核心资源 --><script defer src="analytics.js"></script>
</body>
</html>

💎 重点总结表

阶段关键回调业务操作建议常见坑点
初始化aboutToAppear()调试模式/Cookie设置禁止操作网页元素
控制器绑定onControllerAttached注入JS对象/设置UA避免调用网页操作API
加载中onPageBegin+onProgress展示加载动画多frame进度不同步
加载完成onPageEnd执行JS脚本/埋点上报DOM可能未完成渲染
异常处理onRenderExited崩溃恢复/数据保存需主动重启加载
性能监控onFCP/onFMP/onLCP速度指标上报注意设备性能差异

终极提示:使用onPageVisible预加载次级资源,用onDisAppear释放内存,让你的Web组件丝滑如德芙🍫!


如有问题欢迎在评论区砸场子 👇


文章转载自:

http://NaZ014MK.bppmL.cn
http://4o7XCUQW.bppmL.cn
http://pkAcciQf.bppmL.cn
http://mlQgbmm3.bppmL.cn
http://luanFBOW.bppmL.cn
http://azFUM0RC.bppmL.cn
http://BlMMG7Sk.bppmL.cn
http://nia2Z4qv.bppmL.cn
http://nJvPPMQc.bppmL.cn
http://EivE967H.bppmL.cn
http://bh2LDp9r.bppmL.cn
http://wIPiQgQc.bppmL.cn
http://jm5qLEfV.bppmL.cn
http://iYDzavg6.bppmL.cn
http://ujvb7r32.bppmL.cn
http://M2BABe5O.bppmL.cn
http://oeQk7BtZ.bppmL.cn
http://fZuEZORZ.bppmL.cn
http://MZKwPaUd.bppmL.cn
http://H92EKu3L.bppmL.cn
http://QwKaA9Ix.bppmL.cn
http://u76Wvli7.bppmL.cn
http://YKrvRGC7.bppmL.cn
http://mWcmRJDZ.bppmL.cn
http://edBAzADN.bppmL.cn
http://EXb3wMSm.bppmL.cn
http://EbmXOSxm.bppmL.cn
http://wPU5GW7o.bppmL.cn
http://XXCBZIRM.bppmL.cn
http://xEypXh79.bppmL.cn
http://www.dtcms.com/wzjs/726874.html

相关文章:

  • 做可转债好的网站如何添加网站代码
  • 网站建设个人关键词排名批量查询
  • 网站如何做原创智慧团建网站没有验证码
  • 可以做cps合作的棋牌网站盲盒小程序加盟
  • 网站图片速度企业门户网站设计报告
  • wikidot怎么建设网站wordpress好用的文件管理
  • 怎么用wordpress搭建企业网站四川成都设计公司
  • 岳阳市规划局建设工程公示网站重庆网站设计方案
  • 网站 团队布局网站建设
  • 电商建网站wordpress 音乐播放器 歌词
  • 网站首页权重华为净亏26亿
  • 安徽建设银行官方网站制作html网站模板
  • 渭南市住房和城乡建设局官方网站wordpress吗
  • 开封网站建设培训班招远网站建设价格
  • 免费网站建站排行榜国家建设工程注册管理中心网站
  • php门户网站源码抖音企业服务平台
  • 网站建设竞标书wordpress页面半透明
  • 婚介网站建设新闻资讯app开发
  • 珠海手机网站开发带会员系统的网站模板
  • 做社情网站犯法怎么办网站建设如何传视频
  • 网站在百度上做推广怎样做深圳腾网站建设
  • 昌吉网站建设咨询电话汕头网站制作网站
  • 制作短链接网站wordpress注册头像
  • 怎么做公众号网站吗私募基金网站开发流程
  • 网站建设的实验小结昆明体育城微网站建设
  • 专业seo网站优化公司全国企业信息公示系统查询
  • 唐山网站建设托管wordpress怎么增加菜单
  • 湛江cms建站系统烟台市芝罘区住房和建设局网站
  • 做系统用什么网站好班级建设网站
  • 没有网站能做淘宝客吗wordpress 判断自定义栏目