日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

你必须了解的UniAPP入门知识整理(计算机系统基础知识)

發(fā)布時(shí)間:2023/12/15 综合教程 55 生活家
生活随笔 收集整理的這篇文章主要介紹了 你必须了解的UniAPP入门知识整理(计算机系统基础知识) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本篇文章給大家?guī)砹岁P(guān)于UniAPP快速入門的相關(guān)知識整理,希望對大家有幫助。

前言 - 課程介紹

一、課程背景

大前端時(shí)代背景下,前端開發(fā)人員掌握單一的 Web 端開發(fā)能力已經(jīng)遠(yuǎn)遠(yuǎn)不夠了,微信小程序、安卓 APP、IOS APP,甚至是 Windows 桌面端,還有最近出的鴻蒙系統(tǒng)開發(fā),都成了我們成長需要掌握的技能。所以呢,市面上各種「跨平臺」開發(fā)解決方案層出不窮,比較有代表性的就是: UniAPP 、 Flutter、 React Native、Taro、Weex 等等。

UniAPP 是基于「 Vue + 微信小程序 」語言體系,開發(fā)人員學(xué)習(xí)成本低上手快,同時(shí)隨著如今 UniAPP 生態(tài)也逐步趨于成熟。所以,基于 UniAPP 開發(fā)多端項(xiàng)目,已經(jīng)是很多中小型企業(yè)常用的技術(shù)解決方案。

那么,今天呢,我們就從 UniAPP 基礎(chǔ)開始,對照企業(yè)級實(shí)踐標(biāo)準(zhǔn),從零到一,一步一步打造一個(gè) 多端(微信小程序 + H5 + 安卓 APP + IOS APP)的社區(qū)論壇類項(xiàng)目。

二、學(xué)前須知

學(xué)前須知:

  1. 掌握 HTML、CSS、JS基礎(chǔ),能夠構(gòu)建靜態(tài)頁面
  2. 掌握 Vue 基礎(chǔ),能夠使用腳手架構(gòu)建應(yīng)用
  3. 掌握微信小程序基礎(chǔ),對微信小程序組件、API服務(wù)有一定的了解

三、課程大綱

課程簡介:

  1. 課程大綱介紹
  2. 實(shí)戰(zhàn)項(xiàng)目介紹

UniAPP 快速入門學(xué)習(xí)

一、UniAPP 介紹

(1)什么是 UniAPP ?

uni-app 是一個(gè)使用 Vue.js 開發(fā)所有前端應(yīng)用的框架,開發(fā)者編寫一套代碼,可發(fā)布到 iOS、Android、H5,以及各種小程序(微信/支付寶/百度/頭條/ QQ /釘釘)等多個(gè)平臺,方便開發(fā)者快速交付,不需要轉(zhuǎn)換開發(fā)思維,不需要更改開發(fā)習(xí)慣。

(2)為什么要選擇 UniAPP ?

  1. 開發(fā)者/案例數(shù)量更多

幾十萬應(yīng)用、uni 統(tǒng)計(jì)月活12億、70+ 微信 / QQ群

  1. 平臺能力不受限

在跨端的同時(shí),通過條件編譯 + 平臺特有 API 調(diào)用,可以優(yōu)雅的為某平臺寫個(gè)性化代碼,調(diào)用專有能力而不影響其他平臺

  1. 性能體驗(yàn)優(yōu)秀

加載新頁面速度更快、自動(dòng) diff 更新數(shù)據(jù),App 端支持原生渲染支撐更流暢的用戶體驗(yàn),小程序端的性能優(yōu)于市場其他框架

  1. 周邊生態(tài)豐富

插件市場數(shù)千款插件,支持 NPM、支持小程序組件和SDK,微信生態(tài)的各種 sdk 可直接用于跨平臺 APP

  1. 學(xué)習(xí)成本低

基于通用的前端技術(shù)棧,采用 vue 語法+微信小程序 api,無額外學(xué)習(xí)成本

(3)UniAPP 功能框架

(4)UniAPP 開發(fā)環(huán)境搭建

  1. 下載開發(fā)工具 HBuilderX

HBuilderX 是通用的前端開發(fā)工具,但為uni-app做了特別強(qiáng)化。

下載 App 開發(fā)版,可開箱即用;如下載標(biāo)準(zhǔn)版,在運(yùn)行或發(fā)行uni-app時(shí),會(huì)提示安裝uni-app插件,插件下載完成后方可使用

  1. 創(chuàng)建 uni-app 項(xiàng)目

選擇uni-app類型,輸入工程名,選擇模板,點(diǎn)擊創(chuàng)建,即可成功創(chuàng)建。

uni-app自帶的模板有 Hello uni-app ,是官方的組件和API示例。

還有一個(gè)重要模板是 uni ui項(xiàng)目模板,日常開發(fā)推薦使用該模板,已內(nèi)置大量常用組件。

  1. 運(yùn)行 uni-app

主要包括:瀏覽器運(yùn)行、真機(jī)運(yùn)行、小程序運(yùn)行等

  1. 發(fā)布 uni-app

主要包括:云端原生 APP 、離線原生 APP、H5、各種小程序

二、UniAPP 初始化相關(guān)配置

(1)工程目錄結(jié)構(gòu)

┌─components            uni-app組件目錄
│  └─comp-a.vue        可復(fù)用的a組件
├─hybrid                存放本地網(wǎng)頁的目錄(自建)
├─platforms             存放各平臺專用頁面的目錄(自建)
├─pages                 業(yè)務(wù)頁面文件存放的目錄
│  ├─index
│  │  └─index.vue      index頁面
│  └─list
│     └─list.vue        list頁面
├─static                存放應(yīng)用引用靜態(tài)資源(如圖片、視頻等)的目錄,注意:靜態(tài)資源只能存放于此
├─wxcomponents          存放小程序組件的目錄(自建)
├─common                公共資源(自建)
├─api                   請求封裝(自建)
├─store                 狀態(tài)管理(自建)
├─main.js               Vue初始化入口文件
├─App.vue               應(yīng)用配置,用來配置App全局樣式以及監(jiān)聽 應(yīng)用生命周期
├─manifest.json         配置應(yīng)用名稱、appid、logo、版本等打包信息
└─pages.json            配置頁面路由、導(dǎo)航條、選項(xiàng)卡等頁面類信息

登錄后復(fù)制

提示

  • static下目錄的 js 文件不會(huì)被 webpack 編譯,里面如果有 es6 的代碼,不經(jīng)過轉(zhuǎn)換直接運(yùn)行,在手機(jī)設(shè)備上會(huì)報(bào)錯(cuò)。
  • 所以less、scss等資源同樣不要放在 static目錄下,建議這些公共的資源放在common目錄下

(2)應(yīng)用配置 manifest.json

manifest.json 文件是應(yīng)用的配置文件,用于指定應(yīng)用的名稱、圖標(biāo)、權(quán)限等,我們也可以在這里為 Vue 為H5 設(shè)置跨域攔截處理器

(3)編譯配置 vue.config.js

vue.config.js 是一個(gè)可選的配置文件,如果項(xiàng)目的根目錄中存在這個(gè)文件,那么它會(huì)被自動(dòng)加載,一般用于配置 webpack 等編譯選項(xiàng)。官方文檔

(4)全局配置 page.json

pages.json 文件用來對 uni-app 進(jìn)行全局配置,決定頁面文件的路徑、窗口樣式、原生的導(dǎo)航欄、底部的原生tabbar 等。它類似微信小程序中app.json頁面管理部分。

官方文檔

屬性 類型 必填 描述
globalStyle Object 設(shè)置默認(rèn)頁面的窗口表現(xiàn)
pages Object Array 設(shè)置頁面路徑及窗口表現(xiàn)
easycom Object 組件自動(dòng)引入規(guī)則
tabBar Object 設(shè)置底部 tab 的表現(xiàn)
condition Object 啟動(dòng)模式配置
subPackages Object Array 分包加載配置
preloadRule Object 分包預(yù)下載規(guī)則

(5)全局樣式 uni.scss

uni.scss文件的用途是為了方便整體控制應(yīng)用的風(fēng)格。比如按鈕顏色、邊框風(fēng)格,uni.scss文件里預(yù)置了一批scss變量預(yù)置。官方文檔

uni-app 官方擴(kuò)展插件(uni ui)及 插件市場 上很多三方插件均使用了這些樣式變量,如果你是插件開發(fā)者,建議你使用 scss 預(yù)處理,并在插件代碼中直接使用這些變量(無需 import 這個(gè)文件),方便用戶通過搭積木的方式開發(fā)整體風(fēng)格一致的App。

uni.scss是一個(gè)特殊文件,在代碼中無需 import 這個(gè)文件即可在scss代碼中使用這里的樣式變量。uni-app的編譯器在webpack配置中特殊處理了這個(gè) uni.scss,使得每個(gè) scss 文件都被注入這個(gè)uni.scss,達(dá)到全局可用的效果。如果開發(fā)者想要less、stylus的全局使用,需要在vue.config.js中自行配置webpack策略。

(6)主組件 App.vue

App.vue是uni-app的主組件,所有頁面都是在App.vue下進(jìn)行切換的,是頁面入口文件。但App.vue本身不是頁面,這里不能編寫視圖元素。

這個(gè)文件的作用包括:調(diào)用應(yīng)用生命周期函數(shù)、配置全局樣式、配置全局的存儲globalData

應(yīng)用生命周期僅可在App.vue中監(jiān)聽,在頁面監(jiān)聽無效。

(7)入口文件 main.js

main.js是uni-app的入口文件,主要作用是初始化vue實(shí)例、定義全局組件、使用需要的插件如vuex。

官方文檔

(8)UniAPP 開發(fā)規(guī)范及資源路徑

  1. 開發(fā)規(guī)范約定
  • 頁面文件向?qū)?Vue單文件組件(SFC)規(guī)范
  • 組件標(biāo)簽靠近小程序規(guī)范,詳見 uni-app 組件規(guī)范
  • 互連能力(JS API)靠近微信小程序規(guī)范,但需要將替換替換 wx 為 uni ,詳見uni-app接口規(guī)范
  • 數(shù)據(jù)綁定及事件處理同 Vue.js 規(guī)范,同時(shí)補(bǔ)充了 App 和頁面的生命周期
  • 為兼容多端運(yùn)行,建議使用 flex 布局進(jìn)行開發(fā)
  1. 資源路徑說明

template 內(nèi)約會(huì)靜態(tài)資源,如 image,video 等標(biāo)簽的 src 屬性時(shí),可以使用相對路徑或絕對路徑,形式如下:

<!-- 絕對路徑,/static指根目錄下的static目錄,在cli項(xiàng)目中/static指src目錄下的static目錄 -->
<image class="logo" src="/static/logo.png"></image>
<image class="logo" src="@/static/logo.png"></image>
<!-- 相對路徑 -->
<image class="logo" src="../../static/logo.png"></image>

登錄后復(fù)制

注意

  • @ 初始的絕對路徑以及相對路徑會(huì)通過 base64 轉(zhuǎn)換規(guī)則校驗(yàn)
  • 約會(huì)的靜態(tài)資源在非 h5 平臺,均不轉(zhuǎn)為 base64
  • H5平臺,小于4kb的資源會(huì)被轉(zhuǎn)換成base64,其余不轉(zhuǎn)

js 文件或 script 標(biāo)簽內(nèi),可以使用相對路徑和絕對路徑,形式如下:

// 絕對路徑,@指向項(xiàng)目根目錄,在cli項(xiàng)目中@指向src目錄
import add from '@/common/add.js'
// 相對路徑
import add from '../../common/add.js'

登錄后復(fù)制

css 文件或 style 標(biāo)簽內(nèi),可以使用相對路徑和絕對路徑,形式如下:

/* 絕對路徑 */
@import url('/common/uni.css');
@import url('@/common/uni.css');
/* 相對路徑 */
@import url('../../common/uni.css');

登錄后復(fù)制

css 文件或 style 標(biāo)簽內(nèi)引用的圖片路徑,可以使用相對路徑也可以使用絕對路徑,形式如下:

/* 絕對路徑 */
background-image: url(/static/logo.png);
background-image: url(@/static/logo.png);
/* 相對路徑 */
background-image: url(../../static/logo.png);

登錄后復(fù)制

三、UniAPP 生命周期

學(xué)習(xí)一個(gè)工具的目的核心是什么?是為了解決核心業(yè)務(wù)邏輯問題,業(yè)務(wù)邏輯很多時(shí)候簡單的解釋一句話:“在合適的時(shí)機(jī)干合適的事情”,OK!什么是合適的時(shí)機(jī)呢?簡單的說,頁面運(yùn)行過程中,各個(gè)階段的回調(diào)函數(shù)就是頁面中的時(shí)機(jī),我們也叫這個(gè)為“生命周期鉤子函數(shù)”,當(dāng)然,業(yè)務(wù)中我們也會(huì)寫到很多「回調(diào)」的邏輯,這些回調(diào)其實(shí)也是咱們自定義的時(shí)機(jī),UniAPP 的生命周期鉤子函數(shù)回調(diào)函數(shù)有哪些呢?我們來理解一下!

uni-app 完整支持 Vue 實(shí)例的生命周期,同時(shí)還新增 應(yīng)用生命周期 及 頁面生命周期。

(1)應(yīng)用生命周期

函數(shù)名 說明
onLaunch 當(dāng)uni-app 初始化完成時(shí)觸發(fā)(全局只觸發(fā)一次)
onShow 當(dāng) uni-app 啟動(dòng),或從后臺進(jìn)入前臺顯示
onHide 當(dāng) uni-app 從前臺進(jìn)入后臺
onError 當(dāng) uni-app 報(bào)錯(cuò)時(shí)觸發(fā)
onUniNViewMessage nvue 頁面發(fā)送的數(shù)據(jù)進(jìn)行監(jiān)聽,可參考 nvue 向 vue 通訊
onUnhandledRejection 對未處理的 Promise 拒絕事件監(jiān)聽函數(shù)(2.8.1+)
onPageNotFound 頁面不存在監(jiān)聽函數(shù)
onThemeChange 監(jiān)聽系統(tǒng)主題變化

(2)頁面生命周期

函數(shù)名 說明
onLoad 監(jiān)聽頁面加載,其參數(shù)為上個(gè)頁面?zhèn)鬟f的數(shù)據(jù),參數(shù)類型為Object(用于頁面?zhèn)鲄ⅲ瑓⒖际纠?/td>
onShow 監(jiān)聽頁面顯示。頁面每次出現(xiàn)在屏幕上都觸發(fā),包括從下級頁面點(diǎn)返回露出當(dāng)前頁面
onReady 監(jiān)聽頁面初次渲染完成。注意如果渲染速度快,會(huì)在頁面進(jìn)入動(dòng)畫完成前觸發(fā)
onHide 監(jiān)聽頁面隱藏
onUnload 監(jiān)聽頁面卸載
onResize 監(jiān)聽窗口尺寸變化
onPullDownRefresh 監(jiān)聽用戶下拉動(dòng)作,一般用于下拉刷新,參考示例
onReachBottom 頁面滾動(dòng)到底部的事件(不是scroll-view滾到底),常用于下拉下一頁數(shù)據(jù)。具體見下方注意事項(xiàng)
onTabItemTap 點(diǎn)擊 tab 時(shí)觸發(fā),參數(shù)為Object,具體見下方注意事項(xiàng)
onShareAppMessage 用戶點(diǎn)擊右上角分享
onPageScroll 監(jiān)聽頁面滾動(dòng),參數(shù)為Object
onNavigationBarButtonTap 監(jiān)聽原生標(biāo)題欄按鈕點(diǎn)擊事件,參數(shù)為Object
onBackPress 監(jiān)聽頁面返回
onNavigationBarSearchInputChanged 監(jiān)聽原生標(biāo)題欄搜索輸入框輸入內(nèi)容變化事件
onNavigationBarSearchInputConfirmed 監(jiān)聽原生標(biāo)題欄搜索輸入框搜索事件,用戶點(diǎn)擊軟鍵盤上的“搜索”按鈕時(shí)觸發(fā)。
onNavigationBarSearchInputClicked 監(jiān)聽原生標(biāo)題欄搜索輸入框點(diǎn)擊事件
onShareTimeline 監(jiān)聽用戶點(diǎn)擊右上角轉(zhuǎn)發(fā)到朋友圈
onAddToFavorites 監(jiān)聽用戶點(diǎn)擊右上角收藏

四、UniAPP 路由配置及頁面跳轉(zhuǎn)

(1)路由配置

uni-app 頁面路由全部交給框架統(tǒng)一管理,開發(fā)者需要在pages.json里配置每個(gè)路由頁面的路徑及頁面樣式(類似小程序在 app.json 中配置頁面路由)。

"pages": [
		{
			"path": "pages/index",
			"style": {
				"navigationBarTitleText": "路由配置",
				"navigationBarBackgroundColor": "#FFFFFF",
				"navigationBarTextStyle": "black",
				"backgroundColor": "#FFFFFF",
				"enablePullDownRefresh": true
			}
		},
		{
			"path": "pages/user",
			"style": {
				"navigationBarTitleText": "路由配置",
				"navigationBarBackgroundColor": "#FFFFFF",
				"navigationBarTextStyle": "black",
				"backgroundColor": "#FFFFFF",
				"enablePullDownRefresh": true
			}
		}]

登錄后復(fù)制

(2)路由跳轉(zhuǎn)

uni-app 有兩種頁面路由跳轉(zhuǎn)方式:使用navigator組件跳轉(zhuǎn)(標(biāo)簽式導(dǎo)航)、調(diào)用API跳轉(zhuǎn)(編程式導(dǎo)航)

框架以棧的形式管理當(dāng)前所有頁面, 當(dāng)發(fā)生路由切換的時(shí)候,頁面棧的表現(xiàn)如下:

路由方式 頁面棧表現(xiàn) 觸發(fā)時(shí)機(jī)
初始化 新頁面入棧 uni-app 打開的第一個(gè)頁面
打開新頁面 新頁面入棧 調(diào)用 API uni.navigateTo、
使用組件 <navigator open-type="navigate" />
頁面重定向 當(dāng)前頁面出棧,新頁面入棧 調(diào)用 API uni.redirectTo 、
使用組件
頁面返回 頁面不斷出棧,直到目標(biāo)返回頁 調(diào)用 API uni.navigateBack 、
使用組件 、
用戶按左上角返回按鈕、安卓用戶點(diǎn)擊物理back按鍵
Tab 切換 頁面全部出棧,只留下新的 Tab 頁面 調(diào)用 API uni.switchTab 、
使用組件 、
用戶切換 Tab
重加載 頁面全部出棧,只留下新的頁面 調(diào)用 API uni.reLaunch 、
使用組件

(3)獲取當(dāng)前頁面棧

getCurrentPages() 函數(shù)用于獲取當(dāng)前頁面棧的實(shí)例,以數(shù)組形式按棧的順序給出,第一個(gè)元素為首頁,最后一個(gè)元素為當(dāng)前頁面。

注意: getCurrentPages() 僅用于展示頁面棧的情況,請勿修改頁面棧,以免造成頁面狀態(tài)錯(cuò)誤。

(4)路由傳參與接收

說明:頁面生命周期的 onLoad()監(jiān)聽頁面加載,其參數(shù)為上個(gè)頁面?zhèn)鬟f的數(shù)據(jù),如:

//頁面跳轉(zhuǎn)并傳遞參數(shù)uni.navigateTo({
    url: 'page2?name=liy&message=Hello'});

登錄后復(fù)制

url為將要跳轉(zhuǎn)的頁面路徑 ,路徑后可以帶參數(shù)。參數(shù)與路徑之間使用?分隔,參數(shù)鍵與參數(shù)值用=相連,不同參數(shù)用&分隔。如 ‘path?key1=value2&key2=value2’,path為下一個(gè)頁面的路徑,下一個(gè)頁面的onLoad函數(shù)可得到傳遞的參數(shù)。

// 頁面 2 接收參數(shù)
onLoad: function (option) { //option為object類型,會(huì)序列化上個(gè)頁面?zhèn)鬟f的參數(shù)
	console.log(option.name); //打印出上個(gè)頁面?zhèn)鬟f的參數(shù)。
	console.log(option.message); //打印出上個(gè)頁面?zhèn)鬟f的參數(shù)。
}

登錄后復(fù)制

注意:url 有長度限制,太長的字符串會(huì)傳遞失敗,并且不規(guī)范的字符格式也可能導(dǎo)致傳遞失敗,所以對于復(fù)雜參數(shù)建議使用 encodeURI、decodeURI 進(jìn)行處理后傳遞

(5)小程序路由分包配置

因小程序有體積和資源加載限制,各家小程序平臺提供了分包方式,優(yōu)化小程序的下載和啟動(dòng)速度。

所謂的主包,即放置默認(rèn)啟動(dòng)頁面及 TabBar 頁面,而分包則是根據(jù) pages.json 的配置進(jìn)行劃分。

在小程序啟動(dòng)時(shí),默認(rèn)會(huì)下載主包并啟動(dòng)主包內(nèi)頁面,當(dāng)用戶進(jìn)入分包內(nèi)某個(gè)頁面時(shí),會(huì)把對應(yīng)分包自動(dòng)下載下來,下載完成后再進(jìn)行展示,此時(shí)終端界面會(huì)有等待提示。

"subPackages": [
  	{
			"root": "news",
			"pages": [{
					"path": "index",
					"style": {
						"navigationBarTitleText": "新聞中心",
						"navigationBarBackgroundColor": "#FFFFFF",
						"navigationBarTextStyle": "black",
						"backgroundColor": "#FFFFFF"
					}
				}
			]
		}
  	... ],// 預(yù)下載分包設(shè)置"preloadRule": {
		"pages/index": {
			"network": "all",
			"packages": ["activities"]
		}}

登錄后復(fù)制

五、UniAPP 常用組件簡介

uni-app 為開發(fā)者提供了一系列基礎(chǔ)組件,類似 HTML 里的基礎(chǔ)標(biāo)簽元素,但 uni-app 的組件與 HTML 不同,而是與小程序相同,更適合手機(jī)端使用。

雖然不推薦使用 HTML 標(biāo)簽,但實(shí)際上如果開發(fā)者寫了p等標(biāo)簽,在編譯到非H5平臺時(shí)也會(huì)被編譯器轉(zhuǎn)換為 view 標(biāo)簽,類似的還有 span 轉(zhuǎn) text、a 轉(zhuǎn)navigator等,包括 css 里的元素選擇器也會(huì)轉(zhuǎn),但為了管理方便、策略統(tǒng)一,新寫代碼時(shí)仍然建議使用view等組件。

開發(fā)者可以通過組合這些基礎(chǔ)組件進(jìn)行快速開發(fā), 基于內(nèi)置的基礎(chǔ)組件,可以開發(fā)各種擴(kuò)展組件,組件規(guī)范與vue組件相同。

案例:知心姐姐布局實(shí)現(xiàn)

六、UniAPP 常用 API 簡介

uni-app的 js 代碼,h5 端運(yùn)行于瀏覽器中,非 h5 端 Android 平臺運(yùn)行在 v8 引擎中,iOS 平臺運(yùn)行在 iOS 自帶的 jscore 引擎中。所以,uni-app的 jsAPI 由標(biāo)準(zhǔn) ECMAScript 的 js API 和 uni 擴(kuò)展 API 這兩部分組成。

ECMAScript 由 Ecma 國際管理,是基礎(chǔ) js 語法。瀏覽器基于標(biāo)準(zhǔn) js 擴(kuò)充了window、document 等 js API;Node.js 基于標(biāo)準(zhǔn) js 擴(kuò)充了 fs 等模塊;小程序也基于標(biāo)準(zhǔn) js 擴(kuò)展了各種 wx.xx、my.xx、swan.xx 的 API。

標(biāo)準(zhǔn) ecmascript 的 API 非常多,比如:console、settimeout等等。

非 H5 端,雖然不支持 window、document、navigator 等瀏覽器的 js API,但也支持標(biāo)準(zhǔn) ECMAScript。

開發(fā)者不要把瀏覽器里的 js 等價(jià)于標(biāo)準(zhǔn) js。

所以 uni-app 的非 H5 端,一樣支持標(biāo)準(zhǔn) js,支持 if、for 等語法,支持字符串、數(shù)組、時(shí)間等變量及各種處理方法,僅僅是不支持瀏覽器專用對象。

案例:知心姐姐聊天功能

七、UniAPP 自定義組件與通信

(1)自定義組件概念

組件是 vue 技術(shù)中非常重要的部分,組件使得與ui相關(guān)的輪子可以方便的制造和共享,進(jìn)而使得vue使用者的開發(fā)效率大幅提升,在項(xiàng)目的component目錄下存放組件,uni-app 只支持 vue 單文件組件(.vue 組件)

組件可以使用「全局注冊」和「頁面引入」兩種方式進(jìn)行使用,使用分為三步:

導(dǎo)入 import xxx from 'xxx'

注冊 Vue.use('xx',xx) components:{ xxx }

使用 <xx />

(2)父子組件通信

  1. 父組件通過自定義屬性向子組件傳遞數(shù)據(jù)

  2. 子組件通過 props 接收父組件傳遞的數(shù)據(jù)

  1. 父組件通過自定義事件標(biāo)簽向子組件傳遞事件
  2. 子組件通過觸發(fā)父組件定義事件方式修改父組件數(shù)據(jù)

(3)slot 數(shù)據(jù)分發(fā)與作用域插槽

  1. 父組件通過調(diào)用子組件內(nèi)部嵌套 html 內(nèi)容作為slot分發(fā)給子組件
  2. 子組件通過在 slot 標(biāo)簽上添加屬性,向父組件通信數(shù)據(jù),作用域插槽

(4)全局事件定義及通信

  1. 在整個(gè)應(yīng)用的任何地方均可以使用uni.$on創(chuàng)建一個(gè)全局事件
  2. 在整個(gè)應(yīng)用的任何地方也均可以使用 uni.$emit 來觸發(fā)全局事件,實(shí)現(xiàn)多組件見的數(shù)據(jù)通信

八、UniAPP Vuex 狀態(tài)管理

  1. 概念

Vuex 是一個(gè)專為 Vue.js 應(yīng)用程序開發(fā)的狀態(tài)管理模式。它采用集中式存儲管理應(yīng)用的所有組件的狀態(tài),并以相應(yīng)的規(guī)則保證狀態(tài)以一種可預(yù)測的方式發(fā)生變化。

  1. 應(yīng)用場景

Vue多個(gè)組件之間需要共享數(shù)據(jù)或狀態(tài)。

  1. 關(guān)鍵規(guī)則
  • State:存儲狀態(tài)數(shù)據(jù)
  • Getter:從狀態(tài)數(shù)據(jù)派生數(shù)據(jù),相當(dāng)于 State 的計(jì)算屬性
  • Mutation:存儲用于同步更改狀態(tài)數(shù)據(jù)的方法,默認(rèn)傳入的參數(shù)為 state
  • Action:存儲用于異步更改狀態(tài)數(shù)據(jù),但不是直接更改,而是通過觸發(fā) Mutation 方法實(shí)現(xiàn),默認(rèn)參數(shù)為context
  • Module:Vuex 模塊化
  1. 交互關(guān)系

  1. 使用方式

import {
		mapState,
		mapActions} from 'vuex'export default {
		computed: {
			...mapState(['loginState', 'userInfo'])
		},
		methods: {
			...mapActions(['userLoginAction', 'userLogoutAction']),
		}}

登錄后復(fù)制

  1. 體驗(yàn)案例:模擬用戶登陸邏輯實(shí)現(xiàn)

注意:配合使用 Storage 來實(shí)現(xiàn)刷新頁面后狀態(tài)持續(xù)保持的業(yè)務(wù)需求

九、運(yùn)行環(huán)境判斷與跨端兼容

(1)開發(fā)環(huán)境和生產(chǎn)環(huán)境

uni-app 可通過 process.env.NODE_ENV 判斷當(dāng)前環(huán)境是開發(fā)環(huán)境還是生產(chǎn)環(huán)境,一般用于連接測試服務(wù)器或生產(chǎn)服務(wù)器的動(dòng)態(tài)切換。

在HBuilderX 中,點(diǎn)擊「運(yùn)行」編譯出來的代碼是開發(fā)環(huán)境,點(diǎn)擊「發(fā)行」編譯出來的代碼是生產(chǎn)環(huán)境

if(process.env.NODE_ENV === 'development'){
    console.log('開發(fā)環(huán)境')}else{
    console.log('生產(chǎn)環(huán)境')}

登錄后復(fù)制

(2)判斷平臺

平臺判斷有2種場景,一種是在編譯期判斷,一種是在運(yùn)行期判斷。

編譯期判斷編譯期判斷,即條件編譯,不同平臺在編譯出包后已經(jīng)是不同的代碼,

// #ifdef H5
 alert("只有h5平臺才有alert方法")// #endif// 如上代碼只會(huì)編譯到H5的發(fā)行包里,其他平臺的包不會(huì)包含如上代碼。

登錄后復(fù)制

運(yùn)行期判斷 運(yùn)行期判斷是指代碼已經(jīng)打入包中,仍然需要在運(yùn)行期判斷平臺,此時(shí)可使用 uni.getSystemInfoSync().platform 判斷客戶端環(huán)境是 Android、iOS 還是小程序開發(fā)工具

switch(uni.getSystemInfoSync().platform){
   case 'android':
      console.log('運(yùn)行Android上')
      break;
   case 'ios':
      console.log('運(yùn)行iOS上')
      break;
   default:
      console.log('運(yùn)行在開發(fā)者工具上')
      break;}

登錄后復(fù)制

(3)跨端兼容

uni-app 已將常用的組件、JS API 封裝到框架中,開發(fā)者按照 uni-app 規(guī)范開發(fā)即可保證多平臺兼容,大部分業(yè)務(wù)均可直接滿足,但每個(gè)平臺有自己的一些特性,因此會(huì)存在一些無法跨平臺的情況。

  • 大量寫 if else,會(huì)造成代碼執(zhí)行性能低下和管理混亂。
  • 編譯到不同的工程后二次修改,會(huì)讓后續(xù)升級變的很麻煩。

在 C 語言中,通過 #ifdef、#ifndef 的方式,為 windows、mac 等不同 os 編譯不同的代碼。 uni-app 參考這個(gè)思路,為 uni-app 提供了條件編譯手段,在一個(gè)工程里優(yōu)雅的完成了平臺個(gè)性化實(shí)現(xiàn)。

條件編譯是用特殊的注釋作為標(biāo)記,在編譯時(shí)根據(jù)這些特殊的注釋,將注釋里面的代碼編譯到不同平臺。

**寫法:**以 #ifdef 或 #ifndef 加 %PLATFORM% 開頭,以 #endif 結(jié)尾。

  • \#ifdef:if defined 僅在某平臺存在
  • \#ifndef:if not defined 除了某平臺均存在
  • %PLATFORM%:平臺名稱

%PLATFORM% 可取值如下:

平臺
APP-PLUS App
APP-PLUS-NVUE App nvue
H5 H5
MP-WEIXIN 微信小程序
MP-ALIPAY 支付寶小程序
MP-BAIDU 百度小程序
MP-TOUTIAO 字節(jié)跳動(dòng)小程序
MP-QQ QQ小程序
MP-360 360小程序
MP 微信小程序/支付寶小程序/百度小程序/字節(jié)跳動(dòng)小程序/QQ小程序/360小程序
QUICKAPP-WEBVIEW 快應(yīng)用通用(包含聯(lián)盟、華為)
QUICKAPP-WEBVIEW-UNION 快應(yīng)用聯(lián)盟
QUICKAPP-WEBVIEW-HUAWEI 快應(yīng)用華為

推薦:《uniapp教程》

以上就是你必須了解的UniAPP入門知識整理的詳細(xì)內(nèi)容,更多請關(guān)注風(fēng)君子博客其它相關(guān)文章!

總結(jié)

以上是生活随笔為你收集整理的你必须了解的UniAPP入门知识整理(计算机系统基础知识)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。