文章目錄
- HarmonyOS應用開發-入門
-
- 01-HarmonyOS介紹
- 02-DevEco IDE安裝
- 03-建立HarmonyOS應用
- 04-項目結構介紹
- 05-預覽JSUI界面
- 06-極客園首頁搭建
- 07-完成tab切換内容
- 08-擷取文章清單
- 09-文章詳情界面
- 10-實作路由跳轉
- 11-總結&下期展望
HarmonyOS應用開發-入門
- 個人介紹
- 周老師,曾從事Java開發,Android開發,前端開發。現傳智教育總部前端研院–研究員。
- 前置知識
- 隻要你需要一些前端基礎知識HTML CSS JavaScript 你就可以上手開發 HarmonyOS應用
01-HarmonyOS介紹
講述一下關于HarmonyOS的特點和前景
摘自鴻蒙開發者學院:
- HarmonyOS是華為開發的一款面向未來的全場景分布式智慧作業系統,将逐漸覆寫1+8+N全場景終端裝置。
- 從不同的角度來看待這款系統:
- 對于消費者而言,HarmonyOS用一個“統一的軟體系統 ”,從根本上解決消費者面對大量智能終端體驗割裂的問題,為消費者帶來統一、便利、安全的智慧化全場景體驗。
- 對應開發者而言,HarmonyOS 通過多種分布式技術整合不同終端硬體能力,形成一個虛拟的“超級終端”,應用開發者可以基于“超級終端”開發應用,聚焦上層業務邏輯無需關注硬體差異,裝置開發者可以按需調用其他終端的能力,帶來基于“超級終端”的創新服務體驗。
- HarmonyOS作為一款面向未來的嶄新作業系統,必将在萬物互聯、萬物智能的全連接配接世界中,發揮至關重要的作用。
前端開發工程師思考:
- 會不會是下一個風口?
2021年06月2日HarmonyOS2.0釋出,一周後媒體爆料華為HarmonyOS2.0更新使用者已經突破1000萬 ;根據華為規劃,今年将實作超過3億台裝置更新鴻蒙,其中包含1億台第三方裝置;到明年上半年,将實作上百款華為自有品牌機型更新;同時,華為希望今年能有120萬開發者加入鴻蒙生态。
- 轉鴻蒙應用開發難嗎?
類小程式開發,超級小程式開發, HarmonyOS提供了Java UI和JS UI兩種UI架構:Java UI提供了細粒度的UI程式設計接口,使應用開發更加靈活;JS UI提供了相對高層的UI描述,使應用開發更加簡單。
總結:這麼優秀的系統,這麼完善的硬體生态,數以萬計的開發者基礎,現在上車也不晚。
體驗: https://playground.harmonyos.com/#/cn/onlineDemo 線上體驗位址,大家可以自己去試試。
02-DevEco IDE安裝
介紹下開發鴻蒙應用的編輯器 DevEco 安裝使用
- 安裝步驟
- 注冊華為帳号和實名認證
https://id1.cloud.huawei.com/CAS/portal/userRegister/regbyphone.html
- 下載下傳安裝NodeJs位址
http://nodejs.cn/download/
- 下載下傳安裝DevEco Studio位址
https://developer.harmonyos.com/cn/develop/deveco-studio#download
- 注冊華為帳号和實名認證
華為官方安裝教程
-
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/software_install-0000001053582415
03-建立HarmonyOS應用
使用ability(JS)模版建立一個HarmonyOS項目
我們的目标是:開發極客園首頁(文章清單)+檔案詳情 頁面。
大緻步驟:
- 建立項目
- 第一次進來:點選 Create HarmonyOS Project
- 有項目進來:File---->New---->New Project
- 選擇項目模版
- 項目資訊
總結:我們基于JS空模版建立一個項目。
04-項目結構介紹
了解項目的工作目錄,檔案作用等等
總結:
- entry—>src---->main 是項目的工作目錄,寫代碼的地方。
- js—>default---->common 是公共資源目錄(圖檔,元件)
- i18n 國際化
- pages 頁面
- app.js 入口檔案
- resources 應用資源
- config.json 應用配置
05-預覽JSUI界面
預覽界面,多終端預覽,實時預覽,模拟器預覽。
大緻步驟:
- 示範本地預覽
- 示範遠端預覽
具體内容:
- 本地預覽
選中需要預覽的頁面
點選Preview進行預覽
支援多裝置同時預覽
- 遠端預覽
打開遠端虛拟裝置
登入華為帳号(登入後再次打開無此步驟)
運作裝置
在這裡插入圖檔描述
運作項目
[外鍊圖檔轉存失敗,源站可能有防盜鍊機制,建議将圖檔儲存下來直接上傳(img-7JTNLu3w-1624521554169)(docs/media/1623687734840.png)]
06-極客園首頁搭建
搭建首頁界面,布局代碼講解
大緻步驟:
- 準備資源圖檔
- 準備模版代碼
- 準備初始資料
- 準備樣式代碼
- 講解模版結構
落地代碼:
- 準備圖檔資源
拷貝進入
common/images
檔案夾
- 準備初始資料
pages/index/index.js
export default {
data () {
return {
activeIndex: 0,
tabs: [
{value:'首頁',icon:'common/images/btn_home.png',activeIcon:'common/images/btn_home_sel.png'},
{value:'問答',icon:'common/images/btn_qa.png',activeIcon:'common/images/btn_qa_sel.png'},
{value:'視訊',icon:'common/images/btn_video.png',activeIcon:'common/images/btn_video_sel.png'},
{value:'我的',icon:'common/images/btn_mine.png',activeIcon:'common/images/btn_mine_sel.png'}
]
}
},
clickBar (index) {
this.activeIndex = index
}
}
- 準備模版代碼
pages/index/index.hml
<div class="container">
<toolbar class="toolbar">
<toolbar-item
@click="clickBar($idx)"
for="item in tabs"
value="{{ item.value }}"
class="item"
icon="{{activeIndex===$idx?item.activeIcon:item.icon }}"
>
</toolbar-item>
</toolbar>
</div>
- 準備樣式代碼
.container {
flex-direction: column;
justify-content: flex-start;
align-items: center;
}
.toolbar {
width: 100%;
position: fixed;
bottom: 0px;
background-color: #F7F8FA;
}
@media screen and (device-type: tablet) and (orientation: landscape) {
}
@media screen and (device-type: wearable) {
}
@media screen and (device-type: tv) {
}
@media screen and (device-type: phone) and (orientation: landscape) {
}
總結:
-
css
js
是一個頁面的配套檔案,分别是寫 樣式,邏輯,模版。hml
07-完成tab切換内容
在點選tab的時候可以切換元件,如何定義和使用元件。
大緻步驟:
- 準備 首頁,問答,視訊 元件
- 完成 首頁元件的基礎布局,界面渲染。
- 最後 入口頁面導入元件,根據目前激活tab進行渲染
落的代碼:
- 準備元件
下面是首頁的關鍵代碼,問答和視訊有基本基本結構即可。components/home/
<div class="home">
<swiper class="swiper">
<image for="img in images" src="{{img}}"></image>
</swiper>
<div class="article-item" for="item in articles">
<div class="article-left">
<text class="title">{{item.title}}</text>
<text class="desc">
<span>{{item.authorName}}·</span>
<span>{{item.publicTime}}</span>
</text>
</div>
<div class="article-right">
<image src="{{item.cover}}"></image>
</div>
</div>
</div>
import router from '@system.router';
export default {
data () {
return {
articles: [],
images: [
'https://www.itcast.cn/images/newslide/homepageandphone/20214920094945907.jpg',
'https://www.itcast.cn/images/newslide/homepageandphone/20204726104753530.jpg',
'https://www.itcast.cn/images/newslide/homepageandphone/20203729153726314.jpg',
'http://www.itcast.cn/images/newslide/homepageandphone/20214402114448890.jpg',
]
}
},
onInit () {
// https://v2.sohu.com/integration-api/mix/region/101
for (var i = 0; i < 10 ; i++) {
this.articles.push({
id: i,
title: '使用了VUE3.0技術棧建構,自己封裝的UI元件庫,接入了QQ登入,支付寶支付業務,以及前端SKU解決方案,本地線上購物車解決方案',
cover: 'https://pip.itcast.cn/uploads/3411f946f3af4d918833fa0abb3642b7.png',
authorName: '極客園科技',
publicTime: '2小時前'
})
}
}
}
.home {
margin-bottom: 56px;
flex-direction: column;
display: flex;
}
.swiper {
indicator-selected-color:#FC6627;
indicator-color: #fff;
height: 200px;
width: 100%;
}
.article-item {
display: flex;
padding: 12px;
border-bottom: .5px solid #eee;
}
.article-left {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
padding-right: 6px;
}
.title {
font-size: 18px;
max-lines: 2;
text-overflow: ellipsis;
}
.desc {
font-size: 14px;
padding-top: 10px;
color: #999;
}
.article-right {
width: 140px;
height: 80px;
}
- 使用元件
pages/index/index.hml
<element name="home-page" src="../../components/home/home.hml"></element>
<element name="question-page" src="../../components/question/question.hml"></element>
<element name="video-page" src="../../components/video/video.hml"></element>
<home-page if="activeIndex===0"></home-page>
<question-page if="activeIndex===1"></question-page>
<video-page if="activeIndex===2"></video-page>
總結:可以封裝元件。
08-擷取文章清單
請求接口,使用@system.fetch在HarmonyOS應用發起網絡請求
大緻步驟:
- 配置請求權限,支援https請求
- 如果是http請求,需要額外配置信任域名
- 使用
子產品發起請求@system.fetch
- 需要 在遠端裝置 測試請求,preview模式下請求失效
落的代碼:
- 請求權限配置
config.json
在 module 選項下配置如下代碼
"reqPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
- 信任域名配置
config.json
參考配置,如果是http的接口伺服器
"deviceConfig": {
"default": {
"network": {
"cleartextTraffic": true,
"securityConfig": {
"domainSettings": {
"cleartextPermitted": true,
"domains": [
{"name": "mock.boxuegu.com","subdomains": true}
]
}
}
}
}
},
- 使用
子產品發起請求@system.fetch
components/home/home.js
http.fetch({
method: 'GET',
url: `https://mock.boxuegu.com/mock/1532/artciles`,
success:(res) => {
try {
const data = JSON.parse(res.data)
this.articles = data.result
} catch (e) {
console.log(e.message)
}
}
})
- 最後在遠端裝置看結果
09-文章詳情界面
搭建文章詳情界面,布局代碼講解
大緻步驟:
- 準備 article 目錄,編寫文章請求
- 需要在 config.json 中配置頁面
落地代碼:
- 模版結構
pages/article/article.hml
<div class="article">
<div class="navbar">
<image @click="back()" class="angle-left" src="../../common/images/angle-left.png"></image>
</div>
<text class="title">遠光 | 騰訊連投5輪、6年融資過百億,每日優鮮沖刺“生鮮電商第一股</text>
<div class="author">
<image class="author-img" src="../../common/images/geek.png"></image>
<div class="author-info">
<text style="font-size: 16px;margin-bottom: 2px;">極客園科技</text>
<text style="font-size: 14px;color: #999;">原創:2021-06-15</text>
</div>
<button class="author-follow">關注</button>
</div>
<div class="content">
<text class="section">每日優鮮計劃以“MF”(英文名MissFresh的縮寫)為證券代碼,在納斯達克挂牌上市,暫定最高籌資額為1億美元,向“生鮮電商第一股”發起沖擊。</text>
<text class="section">如今,“賣菜”生意競争進入白熱化,美團優選、橙心優選(滴滴旗下)、多多買菜(拼多多旗下)等網際網路巨頭進軍社群團購,同時又有來自叮咚買菜、美團買菜等同為“前置倉+配送模式”的對手正在快速發展。熬過了生鮮電商倒閉潮,賽道又重新火熱了起來,對于每日優鮮來說,這是好事,但也具挑戰。</text>
<text class="section">在成本控制上,每日優鮮的毛利率從2018年的8.6%增加到2020年的19.4%。具體來看,在營收基本持平的情況下,每日優鮮的營業成本有了近10%左右的下降,商品直采或許是造成成本下降的主要原因。去年,每日優鮮副總裁、商品中心負責人劉智丹曾介紹稱,商品直采比例已接近目标中的80%,而直采也可以進一步降低成本,相比地采可減少10%以上。</text>
</div>
<div class="footer">
</div>
</div>
- 模版樣式
pages/article/article.css
.article {
display: flex;
flex-direction: column;
justify-content: flex-start;
color: #333;
}
.navbar {
height: 56px;
border-bottom: 0.5px solid #ccc;
display: flex;
align-items: center;
padding: 0px 12px;
}
.angle-left {
width: 24px;
height: 24px;
}
.title {
font-size: 24px;
padding: 12px;
}
.author {
padding: 12px;
align-items: center;
}
.author-img {
width: 50px;
height: 50px;
border-radius: 50px;
}
.author-info {
flex: 1;
flex-direction: column;
justify-content: center;
padding: 0px 10px;
}
.author-follow {
background-color: #FC6627;
width: 54px;
height: 32px;
font-size: 14px;
}
.content {
padding: 12px;
flex-direction: column;
}
.section {
font-size: 18px;
color: #444;
line-height: 28px;
margin-bottom: 10px;
}
10-實作路由跳轉
使用@system.router子產品在HarmonyOS應用實作路由切換
大緻步驟:
- 文章清單跳轉文章詳情
- 文章詳情傳回文章清單
落的代碼:
- 文章清單跳轉文章詳情
components/home/home.hml
+ <div @click="toArticlePage(item.id)" class="article-item" for="item in articles">
components/home/home.js
toArticlePage(id) {
router.push({
uri: 'pages/article/article',
params: { id }
})
}
- 文章詳情傳回文章清單
pages/article/article.hml
<div class="navbar">
+ <image @click="back()" class="angle-left" src="../../common/images/angle-left.png"></image>
</div>
pages/article/article.js
import router from '@system.router';
export default {
back () {
router.back()
}
}
11-總結&下期展望
總結今日内容,和下期内容的展望,體驗分布式應用開發的樂趣。
本期總結:
- 知道鴻蒙OS是啥,搭建開發環境。
- 建構極客園應用,知道如何通過JS UI 建構頁面。
- 知道如何發請求,如何配置路由。
下期展望:
- JS FA 調用 PA 實作調試列印日志
- 應用部署,手表和手機
- 應用同步,手表和手機
- 應用流轉,手表和手機
- 卡片開發