有没有HarmonyOS鸿蒙Next工程师大佬指点一下:后端一般用什么开发?需要用服务器吗?

有没有HarmonyOS鸿蒙Next工程师大佬指点一下:后端一般用什么开发?需要用服务器吗? 我想开发类似微博或者百度‘发现’功能的页面,里面有很多图片和文字数据,上拉刷新页面数据,点击进入其详情页面,需要通过后端调用接口获取数据吗?对这方面暂时还未接触,有没有大佬说一下过程思路? 示例页面代码:

class MyDataSource implements IDataSource {
  public dataArray: Find[] = [];
  private listener: DataChangeListener[] = []

  registerDataChangeListener(listener: DataChangeListener): void {
  }

  unregisterDataChangeListener(listener: DataChangeListener): void {
  }

  public totalCount(): number {
    return this.dataArray.length;
  }

  public getData(index: number): Find {
    return this.dataArray[index];
  }

  public pushData(data: Find[]): void {
    this.dataArray = data;
    this.notifyDataAdd(this.dataArray.length - 1)
  }

  notifyDataAdd(index: number) {
    this.listener.forEach(listener => {
      listener.onDataAdd(index)
    })
  }
}

interface Find {
  content: string
  image: ResourceStr
}

export const FindData: Find[] = [
  { content: '第1', image: $r('app.media.startIcon') },
  { content: '第2', image: $r('app.media.startIcon') },
  { content: '第3', image: $r('app.media.startIcon') },
  { content: '第4', image: $r('app.media.startIcon') },
  { content: '第5', image: $r('app.media.startIcon') },
  { content: '第6', image: $r('app.media.startIcon') },
  { content: '第7', image: $r('app.media.startIcon') },
  { content: '第8', image: $r('app.media.startIcon') },
]

@Component
export struct PopularRecommendPage {
  @Provide('pageStack') pageStack: NavPathStack = new NavPathStack();
  scroller: Scroller = new Scroller()
  private data: MyDataSource = new MyDataSource();

  aboutToAppear(): void {
    this.data.pushData(FindData);
  }

  build() {
    Navigation(this.pageStack) {
      Column() {
        WaterFlow({ scroller: this.scroller }) {
          LazyForEach(this.data, (item: Find) => {
            FlowItem() {
              Column() {
                Image(item.image)
                  .height('80%')
                Text(item.content)
              }
              .height('100%')
            }
            .borderWidth(1)
            .borderRadius('20lpx')
            .width("300lpx")
            .height("400lpx")
          })
        }
        .columnsTemplate("1fr 1fr")
        .rowsGap("30lpx")
        .columnsGap("30lpx")
        .padding("40lpx")
      }
      .width('100%')
    }
    .backgroundColor('#F1F3F5')
    .hideTitleBar(true)
  }
}

更多关于有没有HarmonyOS鸿蒙Next工程师大佬指点一下:后端一般用什么开发?需要用服务器吗?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

需要后台提供接口返回数据列表,用户点击列表的某一项之后,APP请求详情页的数据再展示给用户。

后台服务器流行的开发语言是Java、PHP、Python 都能满足你的需求~~

更多关于有没有HarmonyOS鸿蒙Next工程师大佬指点一下:后端一般用什么开发?需要用服务器吗?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我想实现的是,后端提供一些数据,上拉刷新后,随机选一部分展示,下滑展示更多

鸿蒙Next后端开发主要使用ArkTS语言。需要服务器支持,可通过分布式能力调用云端服务或部署独立服务器。

后端技术选型与开发思路

对于你提到的类似微博或百度“发现”功能的应用,后端开发是必须的。以下是针对HarmonyOS应用的后端开发思路:

1. 后端技术选型

  • 语言选择:推荐使用Java、Go、Python或Node.js等主流后端语言,这些语言生态成熟,社区支持完善。
  • 框架推荐
    • Java:Spring Boot(企业级首选)
    • Go:Gin或Beego(高性能并发场景)
    • Python:Django或FastAPI(快速开发)
    • Node.js:Express或NestJS(全栈JavaScript开发)
  • 数据库:根据数据关系选择:
    • 关系型数据:MySQL、PostgreSQL
    • 非关系型数据:MongoDB(适合动态内容)、Redis(缓存热点数据)

2. 服务器与部署

  • 需要服务器:是的,后端服务必须部署在服务器上。可选择:
    • 云服务器:华为云ECS、阿里云、腾讯云等
    • 容器化部署:Docker + Kubernetes(适合微服务架构)
    • 无服务器架构:华为云FunctionGraph(事件驱动,按需执行)

3. 数据交互流程

  • 前端(HarmonyOS应用):通过HTTP/HTTPS请求调用后端API接口
  • 后端服务:接收请求 → 处理业务逻辑 → 读写数据库 → 返回JSON格式数据
  • 数据格式:建议使用RESTful API设计,返回标准JSON结构,例如:
    {
      "code": 200,
      "data": [
        {
          "id": 1,
          "content": "动态内容",
          "imageUrl": "https://example.com/image.jpg"
        }
      ],
      "page": 1
    }
    

4. 针对你提供的代码改进建议

  • 将硬编码的FindData改为从后端API动态获取:
    // 在aboutToAppear中发起网络请求
    aboutToAppear(): void {
      // 调用HTTP接口获取数据
      let httpRequest = http.createHttp();
      httpRequest.request('https://api.example.com/feed', {
        method: http.RequestMethod.GET
      }).then((response) => {
        let data = JSON.parse(response.result as string).data;
        this.data.pushData(data);
      });
    }
    
  • 实现分页加载:在WaterFlow的滚动事件中监听触底,加载下一页数据
  • 图片处理:建议后端返回图片URL,前端使用Image组件加载网络图片

5. 关键注意事项

  • 接口安全:使用Token鉴权(如JWT)保护API
  • 性能优化
    • 图片使用CDN加速
    • 接口数据分页(每页20-30条)
    • 后端添加Redis缓存层
  • 网络兼容性:处理HarmonyOS设备的网络状态变化

总结:你需要独立开发后端服务(或使用现有BaaS服务),提供数据接口供HarmonyOS应用调用。建议先从简单的Spring Boot + MySQL开始,实现基础的增删改查接口,再逐步扩展功能。

回到顶部