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

景德镇网站维护免费网站建站2773

景德镇网站维护,免费网站建站2773,企业免费网站建设模板下载,在线页面设计工具在本篇博文中,我们将探讨如何使用 HarmonyOS Next 框架开发一个知乎日报的详情页,逐步介绍所用到的组件及代码实现。知乎日报是个小巧完整的小项目,这是一个循序渐进的过程,适合初学者和有一定开发经验的工程师参考。 1. 项目背景…

在本篇博文中,我们将探讨如何使用 HarmonyOS Next 框架开发一个知乎日报的详情页,逐步介绍所用到的组件及代码实现。知乎日报是个小巧完整的小项目,这是一个循序渐进的过程,适合初学者和有一定开发经验的工程师参考。

1. 项目背景

知乎日报是一个非常热门的新闻聚合应用,通过API接口获取最新的新闻内容。在我们的实现中,我们将从知乎接口获取详情数据,并在应用中展示相应的内容。

1.1 知乎接口介绍

知乎日报提供了api接口,方便个人开发者联手使用。接口介绍:

### 获取最新日报
get https://news-at.zhihu.com/api/4/news/latest###历史日报
get https://news-at.zhihu.com/api/4/news/before/20240617### 热门日报
get http://news-at.zhihu.com/api/4/news/hot### 主题日报
get http://news-at.zhihu.com/api/4/news/theme/2024
### 2016年
get http://news-at.zhihu.com/api/4/news/before/20240721### 日报详情
get http://news-at.zhihu.com/api/4/news/9773253

 1.2日报详情页特殊处理

需要特别注意的是,知乎日报的详情页需要特殊处理,因为,因为后台返回的竟然是html.是的,你没听错,这有点儿。。。,但也不麻烦。我自己造了个后台接口特殊处理过了,处理为了这个样子:

2. 主要组件介绍

2.1 DetailPageBuilder

这是构建整个详情页的入口,是NavDestination组件包括着的一个子页面,它使用了HarmonyOS提供的Navigation组件路由,通过主页的点击进入详情页。

//zhihu.ets (主页)
build() {Navigation(this.pageStack){Column({ space: 0 }) {// 内容项Swiper(this.swiperController) {LazyForEach(this.swiperData, (item: ZhiNewsItem) => {Stack({ alignContent: Alignment.Center }) {Image(item.image).width('100%').height(200).backgroundColor(0xAFEEEE).zIndex(1).onClick(() => {//this.pageStack.pushPathByName("PageOne", item)//点击跳转到详情页this.pageStack.pushDestinationByName("ZhiPageDetail", { id:item.id }).catch((e:Error)=>{// 跳转失败,会返回错误码及错误信息console.log(`catch exception: ${JSON.stringify(e)}`)}).then(()=>{// 跳转成功});})// 显示轮播图标题

2.2 DetailPage

该结构体是页面的核心包含所有的状态管理和生命周期回调。我们在其中定义了一些主要的状态变量,例如消息、页面数据和页面ID等。

2.3 生命周期回调

  • aboutToAppear: 组件即将出现时的处理逻辑,可以在这里做初始化操作。
  • aboutToDisappear: 组件即将消失时的处理逻辑,通常用于清理操作。

3. 代码实现

以下是主要代码部分:

import { getZhiHuDetail } from '../../../common/api/zhihu';
import { BaseResponse, ErrorResp, ZhiDetailRespData, ZhiDetailItem } from '../../../common/bean/ApiTypes';
import { Log } from '../../../utils/logutil';
import { LengthMetrics } from '@kit.ArkUI';@Builder
export function DetailPageBuilder() {DetailPage();
}@Component
struct DetailPage {@State message: string = 'Hello World';pageStack: NavPathStack = new NavPathStack();private pathInfo: NavPathInfo | null = null;@State detailData: ZhiDetailRespData | null = null;private pageId = '';// 组件生命周期aboutToAppear() {Log.info('Detail aboutToAppear');}// 组件生命周期aboutToDisappear() {Log.info('Detail aboutToDisappear');}build() {NavDestination() {Scroll() {Column({ space: 0 }) {Stack({ alignContent: Alignment.Bottom }) {Image(this.detailData?.image).width('100%').height(250).zIndex(1);// 显示轮播图标题Text(this.detailData?.title).padding(5).margin({ bottom: 10 }).width('100%').height(50).textAlign(TextAlign.Center).maxLines(2).textOverflow({ overflow: TextOverflow.Clip }).fontSize(16).fontColor(Color.White).opacity(100).backgroundColor('#808080AA').zIndex(2);}.height(250); // 设置高度Text(`${this.detailData?.author ?? ""} ${this.detailData?.bio ?? ""}`).fontSize(14).fontColor("#999").padding(10).width('100%');Column() {ForEach(this.detailData?.content, (item: ZhiDetailItem, idx) => {if (item.types === 'p') {Text(item.value).fontSize(16).padding(10).lineSpacing(LengthMetrics.px(30)).width('100%').alignSelf(ItemAlign.Start);} else if (item.types === 'p.strong') {Text(item.value).fontSize(16).fontWeight(FontWeight.Bold).padding(10).width('100%').alignSelf(ItemAlign.Start);} else if (item.types === 'img') {Image(item.value).padding(10);}});}}}}.title("日报详情").width('100%').height('100%').onReady(ctx => {this.pageStack = ctx.pathStack;this.pathInfo = ctx.pathInfo;interface params {id: string;}let par = ctx.pathInfo.param as params;Log.debug("par:%s", par.id);this.pageId = par.id;Log.info('current page config info is ' + JSON.stringify(ctx.getConfigInRouteMap()));}).onShown(() => {console.info('Detail onShown');getZhiHuDetail(this.pageId).then((res) => {Log.debug(res.data.message);Log.debug("request", "res.data.code:%{public}d", res.data.code);this.detailData = res.data;}).catch((err: BaseResponse<ErrorResp>) => {Log.debug("request", "err.data.code:%d", err.data.code);Log.debug("request", err.data.message);});});}
}

4. 代码解析

  • 数据获取:使用getZhiHuDetail(this.pageId)获取当前页面的内容,并将数据存储在detailData状态中。
  • 组件渲染:通过NavDestinationScroll组件容纳整个页面,确保内容在可滚动视图内。
  • 动态数据展示:使用${this.detailData?.author ?? ""} ${this.detailData?.bio ?? ""}实现了数据的安全合并,确保了在获取到的数据不存在时不发生错误。
  • 生命周期:在NavDestination的onReady事件里拿到上个页面传递的参数值,在onShown事件里完成数据请求,拿到详情数据。

5. 结论

通过本篇博文,我们对如何使用 HarmonyOS Next 开发知乎日报详情页进行了深入的探讨。这不仅涵盖了从API获取数据到页面渲染的整个流程,还详细介绍了相关组件的使用方法。在实践中,开发者可以根据具体需求进一步扩展和优化页面功能。

希望这篇博文对你理解 HarmonyOS Next 项目开发有所帮助!如果你有任何问题,欢迎在下方留言讨论。

项目开源地址

zhihudaily: HarmonyOS NEXT 项目开发实战,仿知乎日报的实现

写在最后

最后,推荐下笔者的业余开源app影视项目“爱影家”,推荐分享给与我一样喜欢免费观影的朋友。【注】:该项目仅限于学习研究使用!请勿用于其他用途!

开源地址:爱影家app开源项目介绍及源码

https://gitee.com/yyz116/imovie


文章转载自:
http://mastfed.c7625.cn
http://oozy.c7625.cn
http://haven.c7625.cn
http://sugar.c7625.cn
http://trone.c7625.cn
http://advices.c7625.cn
http://outpost.c7625.cn
http://monospecific.c7625.cn
http://solon.c7625.cn
http://svizzera.c7625.cn
http://aspen.c7625.cn
http://hollow.c7625.cn
http://porphyritic.c7625.cn
http://biomaterial.c7625.cn
http://impetuosity.c7625.cn
http://eskar.c7625.cn
http://ovid.c7625.cn
http://bedewed.c7625.cn
http://retailing.c7625.cn
http://baboonery.c7625.cn
http://candour.c7625.cn
http://puggry.c7625.cn
http://laciniation.c7625.cn
http://picrotoxin.c7625.cn
http://homogenesis.c7625.cn
http://laticiferous.c7625.cn
http://folliculin.c7625.cn
http://sexboat.c7625.cn
http://mixage.c7625.cn
http://guaranty.c7625.cn
http://intercharacter.c7625.cn
http://hermetic.c7625.cn
http://scanties.c7625.cn
http://infarcted.c7625.cn
http://efficiently.c7625.cn
http://nanna.c7625.cn
http://judoist.c7625.cn
http://sealless.c7625.cn
http://merrymaker.c7625.cn
http://bochum.c7625.cn
http://connie.c7625.cn
http://adventuress.c7625.cn
http://reconfigure.c7625.cn
http://inapplication.c7625.cn
http://endopleura.c7625.cn
http://heapsort.c7625.cn
http://podgorica.c7625.cn
http://mitreblock.c7625.cn
http://abattis.c7625.cn
http://machan.c7625.cn
http://appositional.c7625.cn
http://methoxamine.c7625.cn
http://summerwood.c7625.cn
http://fungivorous.c7625.cn
http://millidegree.c7625.cn
http://recooper.c7625.cn
http://tulip.c7625.cn
http://gare.c7625.cn
http://hormonal.c7625.cn
http://uri.c7625.cn
http://serpentinite.c7625.cn
http://divalent.c7625.cn
http://cyclase.c7625.cn
http://becloud.c7625.cn
http://electroslag.c7625.cn
http://perhaps.c7625.cn
http://msdn.c7625.cn
http://catherine.c7625.cn
http://pythagoric.c7625.cn
http://cascarilla.c7625.cn
http://burnouse.c7625.cn
http://reaffirmation.c7625.cn
http://axunge.c7625.cn
http://silicon.c7625.cn
http://coking.c7625.cn
http://enamor.c7625.cn
http://baluchi.c7625.cn
http://intumesce.c7625.cn
http://synoptic.c7625.cn
http://negus.c7625.cn
http://perceptional.c7625.cn
http://czardas.c7625.cn
http://knickpoint.c7625.cn
http://tern.c7625.cn
http://arica.c7625.cn
http://jocund.c7625.cn
http://echeveria.c7625.cn
http://contrapuntal.c7625.cn
http://iise.c7625.cn
http://henceforth.c7625.cn
http://apt.c7625.cn
http://saorstat.c7625.cn
http://shillelagh.c7625.cn
http://inegalitarian.c7625.cn
http://gurgle.c7625.cn
http://coomassie.c7625.cn
http://optionee.c7625.cn
http://foremost.c7625.cn
http://rearhorse.c7625.cn
http://peribolos.c7625.cn
http://www.zhongyajixie.com/news/85964.html

相关文章:

  • 阿里巴巴做网站联系人厨师培训
  • 做网站前台需要什么技能sem培训班
  • 美味西式餐饮美食网站模板星链seo管理
  • 手机网站建设多少钿企拓客app骗局
  • 免费做相册视频网站苏州网站建设优化
  • 谷歌网站收录入口网络推广网络营销软件
  • 南通网站建设教程爱站网 关键词挖掘工具站
  • 做网站的哪里便宜网址大全百度
  • 新昌县住房和城乡建设局网站百度推广电话号码
  • 北京制作网站的基本流程衡水网站优化推广
  • 充值网站建设万网域名管理平台
  • 怎么给自己的网站做优化网页设计的流程
  • 网站后台 页面内容不显示河南做网站的公司
  • 英文网站模版企业文化标语经典
  • 做箱包外贸哪个网站好百度刷排名seo
  • 上海黑马网站制作小视频网站哪个可以推广
  • 口碑好的徐州网站建设免费拓客软件哪个好用
  • 网站维护由供应商做么班级优化大师app下载学生版
  • 一般做个网站多少做网站多少钱江西seo
  • 网站做区块链然后往里面投钱军事新闻最新消息今天
  • 新会网站建设seo快速优化报价
  • 网站设计成品网站品牌营销策略分析
  • 编写网站 支付宝制作网站公司
  • 网站开发网站设计的标准北京网站优化校学费
  • 腾讯云做网站郑州百度推广公司电话
  • 全栈网站开发者高质量网站外链平台
  • c 网站建设汕头网站建设平台
  • 法国网站域名东莞网站优化关键词排名
  • 手机网站怎样做网店如何引流与推广
  • 视频网站开发是什么深圳sem竞价托管