天天看點

後端開發是如何搞定APP開發的--《前端那些事》

讨論範圍

2010年以前,前端開發一般指的是網站端将頁面翻譯成JavaScript,并對多種浏覽器比如IE、Firefox、Opera、世界之窗等做相容;随着Chrome的崛起以及移動網際網路的普及,跨端的前端架構如雨後春筍般出現,從Facebook的reactjs到Google的flutter(立意點是一處寫多端用提升效率降低成本,并盡可能減小相比于原生開發語言帶來的性能影響),再到各個應用程式的小程式,近十年,相比于其他的開發者,前端開發者的世界可謂是轟轟烈烈。

是以當下的前端,它不再僅僅指代以往的前端開發(将頁面通過JavaScript實作出來),它還包括終端開發(包括Android、IOS以及其他的一些端)、跨端開發、小程式開發、視覺UI設計等。标準的軟體開發流程大緻如下:

使用者調研  ->  産品原型  ->  視覺設計  ->  前端開發  ->  後端開發  ->  測試上線

可以看到,從使用者調研完成開始到後端開發之前,其實都是前端開發的範疇,有些公司會分類為前台、中台、背景。

而本文,我們讨論的範圍是作為一名後端開發,如何獨立實作APP的開發上線。

技術選型

目前,APP主要分為Android和IOS兩個系統平台,其中Android開發語言為Kotlin、Java(Google在2019正式宣布kotlin代替Java成為Android開發的首選語言),IOS的開發語言為Swift、Objective-C。

一個人同時掌握多套終端開發技能是不難的,然而作為一名有追求的程式員,最大的特質是懶,即同樣的邏輯是不太願意重複實作的,另外也比較浪費時間;另外,IOS開發需要向蘋果公司購買證書,個人開發者每年99美元,我們隻是先自己折騰一下,短期内考慮隻推出Android平台的app就好。

基于以上,我決定選擇一種跨端的架構來實作。

上手試試

開發工具:

Android studio Google官方提供的IDE,我這裡用于跑Android模拟器

HBuilderX UNIAPP官方提供的IDE,用于開發app頁面邏輯

uniapp項目正常的目錄結構及解釋如下:(注:App.vue和main.js的注釋寫反了)

後端開發是如何搞定APP開發的--《前端那些事》

以簡單的使用者資訊頁面為例,模闆代碼如下:

<template>
    <view class="user-info-root">
        <view class="user-info-item user-info-item-avatar" >
            <view class="user-info-item-title">
                頭像
            </view>
            <view class="user-info-item-value">
                <image class="user-info-item-value-avatar" :src="userInfo.avatarUrl" mode="aspectFill"></image>
            </view>
            <!-- <view class="user-info-item-go-to">
            </view> -->
        </view>

        <view class="user-info-item" @click="goToUpdateName">
            <view class="user-info-item-title">
                昵稱
            </view>
            <view class="user-info-item-value">
                {{userInfo.nick}}
            </view>
            <view class="user-info-item-go-to">
            </view>
        </view>

        <view class="user-info-item" @click="goToUpdateGender">
            <view class="user-info-item-title">
                性别
            </view>
            <view class="user-info-item-value">
                {{userInfo.gender === 1 ? '男' : '女'}}
            </view>
            <view class="user-info-item-go-to">
            </view>
        </view>

        <navigator class="user-info-item" url="/pages/cityList/cityList">
            <view class="user-info-item-title">
                地區
            </view>
            <view class="user-info-item-value">
                {{userInfo.province}} {{userInfo.city}}
            </view>
            <view class="user-info-item-go-to">
            </view>
        </navigator>

        <view class="user-info-item" @click="goToUpdateDescription">
            <view class="user-info-item-title">
                個人描述
            </view>
            <view class="user-info-item-value">
                {{userInfo.description}}
            </view>
            <view class="user-info-item-go-to">
            </view>
        </view>
    </view>
</template>      

擷取資料的邏輯如下:

async loadUserInfo() {
  uni.showLoading({
    title: '資料加載中...'
  });
  let [userInfoData] = await httpUtils.postJson("/api/user/info", {});
  this.userInfo = userInfoData.data;
  uni.hideLoading();
},      

虛拟機展示效果:

後端開發是如何搞定APP開發的--《前端那些事》

涉及後端的表結構設計、HTTP接口的提供這裡就不展開了。

至此,在模拟器上我們可以順利的建立頁面、編寫邏輯、渲染頁面了。

經過兩個多月的開發,APP已基本成型,頁面端向大家分享一下:

後端開發是如何搞定APP開發的--《前端那些事》
後端開發是如何搞定APP開發的--《前端那些事》
後端開發是如何搞定APP開發的--《前端那些事》

總結

随着移動網際網路的發展,前端領域發展的尤為迅速,當下我們可以借助許多成熟的跨端架構,通過自己擅長的開發方式進行多端應用的實作,提升效率的同時,也讓更多個體開發者可以友善快捷的實作自己的想法,在此向這些開源的跨端架構緻敬。

通過兩個多月的開發,整體體驗下來對架構由陌生到熟悉,中間遇到了非常多的坑,也走到了幾個死胡同,學到很多,而這些不親身實踐是很難想到的和體會到的。

而這兩個多月裡,整體的創意設計、架構設計、APP邏輯開發、後端開發的占用實踐比例大緻是1:1:3:1,相信如果重頭再來開發的話,APP邏輯開發的耗時占比将于後端開發差不多。

感謝跨端架構,助力我實作APP自由。

過程中如果有更多需要交流的,歡迎留言評論或者發郵件給我,我的郵箱[email protected]