# Taro 开发鸿蒙版每日资讯应用实战指南

 

## 一、项目简介

 

本项目基于 Taro 跨端开发框架,实现鸿蒙(HarmonyOS)平台的每日资讯应用,通过调用 [阿拉API每日资讯接口](https://v3.alapi.cn/api/zaobao) 获取新闻数据,支持展示日期、新闻列表、微语及配图。

 

![image-20250525163225275](https://nutpi-e41b.obs.cn-north-4.myhuaweicloud.com/image-20250525163225275.png)

 

## 二、环境准备

 

### 1. 开发工具

 

- **Node.js**:v18+(推荐v18 LTS)

- **Taro CLI**:全局安装 `npm install -g @tarojs/cli`

- **HarmonyOS 开发环境**:安装 [DevEco Studio](https://developer.harmonyos.com/cn/develop/deveco-studio)(需配置鸿蒙 SDK)

 

### 2. 接口申请

 

访问 [阿拉API控制台](https://v3.alapi.cn/) 注册账号,获取 `token`(示例值:`你的token`)。

 

## 三、项目创建与配置

 

### 1. 初始化 Taro 项目

 

```bash

# 创建鸿蒙项目

taro init taro-ohos-demo

cd taro-ohos-demo

# 安装插件

npm i @tarojs/plugin-platform-harmony-cpp

```

 

### 2. 配置鸿蒙平台

 

修改 `project.config.json`,添加鸿蒙平台支持:

 

```json

import os from 'os'

import path from 'path'

 

const config = {

// ...

plugins: [

['@tarojs/plugin-platform-harmony-cpp', {

 

}]

],

harmony: {

// compiler: 'vite',

projectPath: path.join(os.homedir(), '/Desktop/test/tarooh'),

hapName: 'entry',

},

// ...

}

```

 

## 四、核心功能开发

 

### 1. 数据请求与状态管理

 

在 `src/pages/index/index.tsx` 中实现核心数据逻辑,具体步骤如下:

 

#### 1.1 接口调用与数据获取

 

使用 `Taro.request` 发起HTTP请求调用阿拉API每日资讯接口,关键参数说明:

 

- `url`:接口地址 `https://v3.alapi.cn/api/zaobao`(需替换为实际申请的API地址)

- `method`:采用GET请求方式获取数据

- `data`:携带 `token`(从阿拉API控制台获取的认证凭证)和 `format=json`(指定返回数据格式)

 

```tsx

// src/pages/index/index.tsx

import Taro from '@tarojs/taro'

import { useState } from 'react'

import './index.scss'

 

// 定义新闻数据接口(匹配实际接口返回结构)

interface NewsData {

date: string

news: string[]

weiyu: string

image: string

head_image: string

}


 

export default function Index() {

// 初始化状态:newsData存储新闻数据(类型为NewsData或null),loading控制加载状态

const [newsData, setNewsData] = useState<NewsData | null>(null)

const [loading, setLoading] = useState(true)

 

// 使用useLoad生命周期钩子在页面加载时触发请求

useLoad(() => {

Taro.request({

url: 'https://v3.alapi.cn/api/zaobao',

method: 'GET',

data: {

token: 'ycd0krwbhl5v2w6iafblj94y5vzqdj', // 替换为实际token

format: 'json'

}

}).then(res => {

// 接口返回格式:res.data = { success: boolean, data: NewsData }

if (res.data.success) {

setNewsData(res.data.data) // 更新新闻数据

}

setLoading(false) // 无论成功或失败,结束加载状态

}).catch(error => {

console.error('请求失败:', error)

setLoading(false) // 异常时同样结束加载

})

})

 

// 渲染逻辑...

}

```

 

#### 1.2 状态管理与兜底逻辑

 

- **加载状态**:通过 `loading` 状态控制页面显示:

- 加载中:显示「正在加载...」提示

- 加载完成:根据 `newsData` 是否存在渲染内容或错误提示

- **数据验证**:通过TypeScript定义 `NewsData` 接口,确保数据结构正确性,避免「类型 'never' 上不存在属性」等类型错误

- **错误处理**:使用 `catch` 捕获网络请求异常,控制台输出错误信息并更新加载状态

 

### 2. 页面布局与样式优化

 

在 `src/pages/index/index.scss` 中通过CSS实现视觉优化,具体调整如下:

 

#### 2.1 容器布局调整

 

- **顶部间距优化**:将 `.index` 容器的顶部内边距从默认 `10px` 减少为 `5px`,同时设置 `height: 100vh` 使容器占满整个视口高度,避免内容区域被顶部导航栏遮挡

 

```scss

.index {

padding: 5px 10px 10px; /* 上:5px 左右:10px 下:10px */

height: 100vh; /* 占满视口高度 */

box-sizing: border-box; /* 包含内边距计算总高度 */

}

```

 

#### 2.2 新闻列表滚动实现

 

- **动态高度计算**:使用 `calc(100% - 200px)` 计算 `.news-list` 高度(`100%` 继承父容器 `.index` 高度,`200px` 为顶部标题、日期等固定元素的高度),适配不同屏幕尺寸

 

- **滚动条优化**:添加 `overflow-y: auto` 实现内容超出时自动显示滚动条,同时通过 `-webkit-overflow-scrolling: touch` 优化移动端滚动流畅度

 

```scss

.news-list {

height: calc(100% - 200px); /* 动态高度 */

overflow-y: auto; /* 内容溢出时显示滚动条 */

-webkit-overflow-scrolling: touch; /* 优化移动端滚动 */

padding: 0 8px; /* 列表内边距 */

}

```

 

#### 2.3 文本样式增强

 

- **字体大小调整**:将 `.news-item` 字体从 `16px` 增大至 `18px`,提升阅读体验;同时设置 `line-height: 1.6` 增加行间距,避免文字拥挤

 

```scss

.news-item {

font-size: 18px; /* 主要新闻字体 */

line-height: 1.6; /* 行间距 */

color: #333; /* 深灰色文字 */

margin-bottom: 12px; /* 新闻项底部间距 */

}

```

 

#### 2.4 额外样式补充

 

- 为加载中的提示文字添加居中显示和灰色样式:

 

```scss

.loading-tip {

text-align: center;

color: #666;

font-size: 16px;

margin-top: 50px;

}

```

 

- 为加载失败的提示添加红色警告样式:

 

```scss

.error-tip {

text-align: center;

color: #ff4d4f;

font-size: 16px;

margin-top: 50px;

}

```

 

## 五、编译与运行

 

### 1. 编译为鸿蒙工程

 

```bash

# 编译为鸿蒙 HAP 文件

taro build --type harmony_cpp

```

 

### 2. 在 DevEco Studio 运行

 

1. 打开编译生成的 `dist/ohos` 目录

2. 连接鸿蒙设备或启动模拟器

3. 点击 DevEco Studio 的「运行」按钮

 

## 六、常见问题解决

 

- **接口请求失败**:检查 `token` 是否过期,或网络请求权限是否开启(`config/index.ts` 配置 `networkTimeout`)。

- **样式不生效**:确认类名与组件 `className` 一致,或通过 DevEco Studio 的「布局预览」调试。

- **滚动不流畅**:尝试添加 `-webkit-overflow-scrolling: touch` 优化移动端滚动体验。

 

## 七、项目总结

 

通过本项目,你可以学习到:

 

- Taro 跨端开发框架的使用

- 鸿蒙平台开发环境配置

- 接口调用与数据处理

- 页面布局与样式优化

希望本项目能帮助你快速搭建鸿蒙版每日资讯应用,提升开发效率。

 

## 八、项目地址

 

项目源码:https://gitcode.com/nutpi/taro-ohos-demo



 

## 九、鸿蒙侧注意事项

 

1.网络权限需要手动添加

 

```

"requestPermissions": [

{

"name": "ohos.permission.INTERNET"

}

],

```

 

extensionAbilities需要注释

 

```

"extensionAbilities": []

```

 

完毕

 

## 坚果派社区

 

坚果派社区由坚果、小波、狼哥等人创建,团队成员包括数位华为 HDE 及 1000+ HarmonyOS 开发者,以及三十余位万粉博主/UP 主,专注于分享 HarmonyOS/OpenHarmony、仓颉、ArkUI-X、元服务、AI、BlueOS 操作系统等技术。团队成员主要分布在北京、上海、南京、深圳、广州、苏州、长沙、宁夏等地,已为华为、vivo、腾讯、亚马逊等提供开发咨询服务 100+ 次,累计粉丝 100w+,孵化开发者 10w+,覆盖高校 20+、企业 10+。自研应用 40 款,三方库 80 个,鸿蒙原生应用课程 500+,持续助力鸿蒙仓颉等生态繁荣发展。欢迎大家加入。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐