自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)App新選擇:使用Vue Native構建移動應用

開發(fā) 前端
Vue Native 是一個 JavaScript 框架,旨在使用 JavaScript 構建可以在 Android 和 iOS 上運行的跨平臺移動應用程序。通過封裝 React Native,開發(fā)人員可以使用 Vue Native 使用 Vue.js 構建移動應用程序。

[[417301]]

Vue Native 是一個 JavaScript 框架,旨在使用 JavaScript 構建可以在 Android 和 iOS 上運行的跨平臺移動應用程序。通過封裝 React Native,開發(fā)人員可以使用 Vue Native 使用 Vue.js 構建移動應用程序。

正因為如此,所有可以在 React Native 中完成的事情都可以在 Vue Native 中完成,并且代碼被編譯為 React Native。通過這種方式,開發(fā)人員可以從 Vue 和 React Native 生態(tài)系統(tǒng)提供的內容中受益。

在這篇文章中,我們將討論 Vue Native 的特性以及如何使用 Vue Native 創(chuàng)建移動應用程序。

Vue Native 的特性

在決定使用 Vue.js 構建移動應用程序時,Vue Native 有許多有用的特性需要考慮。

聲明式渲染

Vue Native使用聲明式編程范式。這意味著我們只需聲明我們希望我們的組件和狀態(tài)如何渲染以獲得我們想要的結果。

雙向綁定

在我們的Vue Native應用中,我們可以在我們的組件類和其模板之間共享數(shù)據(jù)。如果我們改變了狀態(tài)中的數(shù)據(jù),它就會自動反映在用戶界面中。

我們仍然必須訪問 v-model 進行雙向數(shù)據(jù)綁定。這意味著我們可以使用 v-model 將一個 input 元素的值綁定到我們組件的數(shù)據(jù)屬性中。

Vue.js 生態(tài)系統(tǒng)的豐富性

Vue 生態(tài)系統(tǒng)是 JavaScript 領域最大、發(fā)展最快的生態(tài)系統(tǒng)之一。使用 Vue Native 構建應用程序提供了更大的 Vue 生態(tài)系統(tǒng)的好處。

這意味著我們可以使用諸如 v-if 用于條件渲染,v-model 用于雙向數(shù)據(jù)綁定,v-for 用于列表渲染,以及Vuex用于狀態(tài)管理等功能。

編譯為 React Native

因為 Vue Native 依賴于 React Native,所以熟悉 React Native 生態(tài)系統(tǒng)的開發(fā)者更容易上手。

我們還可以在 Vue Native 中渲染 React Native 組件,而無需編寫一行額外的配置,以便輕松集成并提高生產(chǎn)力。

設置開發(fā)環(huán)境

開始使用 Vue Native 的最快和最簡單的方法是使用 Vue Native CLI[1] 引導移動應用程序。此 CLI 使用 Expo CLI[2] 或 React Native CLI[3] 生成一個簡單的單頁應用程序。

這意味著我們必須安裝任一CLI,根據(jù)我們應用程序的需要,來使用Vue Native CLI。

要開始,我們必須安裝一些依賴項。首先,運行下面的命令來全局安裝Vue Native CLI。

  1. $ npm install --g vue-native-cli 

接下來,全局安裝 Expo CLI,盡管這可以與 React Native CLI 互換:

  1. $  npm install --g expo-cli 

創(chuàng)建一個Vue Native項目

現(xiàn)在 Vue Native 和 Expo CLI 都已全局安裝,讓我們使用以下命令創(chuàng)建一個 Vue Native 項目: 

  1. vue-native init <yourProjectName> 

通過在項目的根目錄下導航并運行這個命令,啟動一個開發(fā)服務器:

  1. $ cd <yourProjectName> 
  2. $ npm start 

Metro Bundler 在 React Native 中編譯 JavaScript 代碼,從 http://localhost:19002/ 運行。通過在 Web 瀏覽器中訪問 http://localhost:8080/,將出現(xiàn)以下頁面:

若要在物理設備上查看Vue Native應用,請掃描瀏覽器中的二維碼,并在Android或iOS的Expo Go中打開鏈接。

我們也可以通過點擊瀏覽器中顯示的鏈接,在安卓模擬器或iOS模擬器上打開應用程序,但并不是所有在Expo Go中可用的API都可以在模擬器上使用。

作為選擇,我們可以克隆Vue Native核心團隊準備的Kitchen Sink演示應用程序。

Vue Native UI組件

Vue Native提供了一些開箱即用的UI組件來構建應用界面,讓我們來看看其中最重要的一些組件。

視圖組件

view 組件就像我們普通HTML中的 div 標簽一樣工作。這個組件是在Vue Native中創(chuàng)建用戶界面的基本構建模塊,就像在React Native中一樣。

我們可以在一個 view 組件中擁有多個子組件,比如下面的代碼。

  1. <template> 
  2.   <view class="container"
  3.     <text>My Awesome Vue Native App</text> 
  4.   </view
  5. </template> 

Text組件

要在我們的移動應用程序中輸出文本,我們不能使用常規(guī)的HTML標簽,如 h1 或 p。相反,我們必須使用 ... 組件。使用這個組件是非常直接的。

  1. <template> 
  2.   <text>Hello World</text> 
  3. </template> 

Image組件

Image 組件渲染靜態(tài)圖像、網(wǎng)絡圖像和來自用戶設備的圖像。

與普通的 img 標簽中使用 src 屬性不同,這里我們在 image 組件中綁定了 source 屬性來動態(tài)加載我們的圖片。這使得webpack在構建過程中可以捆綁我們的圖片資產(chǎn)。

通過添加以下內容,我們可以將圖像加載到Vue Native應用中:

  1. <template> 
  2.     <!-- Network image --> 
  3.   <image 
  4.      :style="{ width: 300, height: 150 }" 
  5.      :source="{ 
  6.          uri:'https://images.unsplash.com/photo-1621570074981-ee6a0145c8b5?ixid=MnwxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=750&q=80'
  7.       }" 
  8.    /> 
  9.  
  10.   <!-- Static image --> 
  11.   <image 
  12.      :style="{ width: 300, height: 150 }" 
  13.      :source="require('./assets/photo.jpg')" 
  14.   /> 
  15.  
  16.   <!-- Local disk image -->  
  17.   <image 
  18.      :style="{width: 66, height: 58}" 
  19.      :source="{uri: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADMAAAAzCAYAAAA6oTAqAAAAEXRFWHRTb2Z0d2FyZQBwbmdjcnVzaEB1SfMAAABQSURBVGje7dSxCQBACARB+2/ab8BEeQNhFi6WSYzYLYudDQYGBgYGBgYGBgYGBgYGBgZmcvDqYGBgmhivGQYGBgYGBgYGBgYGBgYGBgbmQw+P/eMrC5UTVAAAAABJRU5ErkJggg=='}" 
  20.    /> 
  21. </template> 

TextInput組件

TextInput 組件通過用戶的鍵盤將文本輸入到應用程序中。我們可以使用 v-model 將我們狀態(tài)中的數(shù)據(jù)綁定到 TextInput 組件。這允許我們無縫獲取和設置 TextInput 的值:

  1. <template> 
  2.   <view class="container">  
  3.     <text-input 
  4.       :style="{ 
  5.         height: 30, 
  6.         width: 250, 
  7.         borderColor: '#511281'
  8.         borderWidth: 1, 
  9.       }" 
  10.       v-model="text" 
  11.     /> 
  12.   </view
  13. </template> 
  14.  
  15. <script> 
  16. export default { 
  17.   data() { 
  18.     return { 
  19.       text: ""
  20.     }; 
  21.   }, 
  22. }; 
  23. </script> 

然后,上面的代碼在Vue Native應用中輸出如下屏幕:

NativeBase UI 組件

要建立一個可以投入生產(chǎn)的移動應用,僅僅使用內置的Vue Native組件可能是不夠的。幸運的是,Vue Native帶來了React Native和Vue.js兩個生態(tài)系統(tǒng)的優(yōu)點,所以我們可以使用NativeBase UI組件。

NativeBase是由GeekyAnts創(chuàng)建的,他們是Vue Native背后的同一個團隊。這個UI組件給了我們一個真正原生的外觀和感覺,在我們的移動應用中,通過相同的JavaScript代碼庫,為Android和iOS提供了特定平臺的設計。

雙向數(shù)據(jù)綁定

使用 v-model 在我們的 Vue 組件模板和 Vue Native 中的 Vue 狀態(tài)之間共享數(shù)據(jù)是輕而易舉的。我們可以使用 v-model 指令探索雙向數(shù)據(jù)綁定,如下所示:

  1. <template> 
  2.   <view class="container">  
  3.     <text-input 
  4.       :style="{ 
  5.         height: 30, 
  6.         width: 250, 
  7.         borderColor: '#511281'
  8.         borderWidth: 1, 
  9.       }" 
  10.       v-model="text" 
  11.     /> 
  12.   </view
  13. </template> 
  14.  
  15. <script> 
  16. export default { 
  17.   data() { 
  18.     return { 
  19.       text: ""
  20.     }; 
  21.   }, 
  22. }; 
  23. </script> 

通過將一個帶有數(shù)據(jù)綁定的輸入字段從我們的狀態(tài)輸出到輸入字段和一個文本組件,我們可以看到以下內容:

導航和路由

Vue Native應用中的導航和路由是通過Vue Native Router[4]庫來處理的。在底層,這個庫使用了流行的React Navigation[5]包。Vue Native Router和React Navigation都有類似的api,因此安裝也類似。

該庫沒有預裝,所以為了在我們的應用程序中開始使用導航,我們必須用以下方式安裝它。

  1. npm i vue-native-router 

請注意,我們需要安裝以下軟件包才能使 Vue Native Router 正常工作:

  • react-native-reanimated[6]
  • react-native-gesture-handler[7]
  • react-native-paper[8]

在項目根目錄下運行以下命令來安裝這些包:

  1. npm i react-native-reanimated react-native-gesture-handler react-native-paper 

Vue Native Router 提供了 StackNavigator 和 DrawerNavigator 來注冊用于導航的屏幕:

  1. <script> 
  2. import { 
  3.   createAppContainer, 
  4.   createStackNavigator, 
  5. from "vue-native-router"
  6.  
  7. import SettingsScreen from "./screens/SettingsScreen.vue"
  8. import HomeScreen from "./screens/HomeScreen.vue"
  9.  
  10. const StackNavigator = createStackNavigator( 
  11.   { 
  12.     Settings: SettingsScreen, 
  13.     Home: HomeScreen, 
  14.   }, 
  15.   { 
  16.     initialRouteName: 'Home'
  17.   } 
  18. ); 
  19.  
  20. const AppNavigator = createAppContainer(StackNavigator); 
  21.  
  22. export default { 
  23.   components: { AppNavigator }, 
  24. </script> 

要在屏幕之間導航,請調用 navigation 對象上的 navigate 方法,該方法作為props傳遞如下:

  1. <script> 
  2. export default { 
  3.   // navigation is declared as a prop 
  4.   props: { 
  5.     navigation: { 
  6.       type: Object 
  7.     } 
  8.   }, 
  9.   methods: { 
  10.     navigateToScreen() { 
  11.       this.navigation.navigate("Profile"); 
  12.     } 
  13.   } 
  14. </script> 

狀態(tài)管理

對于Vue Native應用程序中的集中狀態(tài)管理模式,我們可以使用Vue的官方狀態(tài)管理庫Vuex。

集成Vuex非常簡單。首先,使用以下命令之一安裝Vuex:

  1. npm i vuex 
  2. //or 
  3. yarn add vuex 

創(chuàng)建一個中央存儲文件,并根據(jù)應用程序的需要添加 state、getter、mutations 或 actions。為了簡單起見,在這里使用 state 對象:

  1. // store/index.js 
  2.  
  3. import Vue from 'vue-native-core'
  4. import Vuex from 'vuex'
  5. Vue.use(Vuex); 
  6. const store = new Vuex.Store({ 
  7.   state: { 
  8.     name'Ejiro Asiuwhu'
  9.   }, 
  10. }); 
  11. export default store; 

在我們的store中使用數(shù)據(jù)和方法與傳統(tǒng)的Vue應用程序有很大不同,這里是如何導入和使用我們store中的數(shù)據(jù):

  1. <script> 
  2. import store from "./store"
  3. export default { 
  4.   computed: { 
  5.     name() { 
  6.       return store.state.name
  7.     }, 
  8.   }, 
  9. }; 
  10. </script> 

請注意,我們沒有像通常在 Vue 和 Vuex 應用程序設置中那樣使用 this.$store。

訪問設備 API

由于React Native豐富的生態(tài)系統(tǒng),在我們的Vue Native應用中訪問本地設備的API是可能的。例如,要在我們的應用程序中訪問用戶的設備地理定位API,我們可以像這樣使用expo-location[9]。

  1. <template> 
  2.   <view class="container"
  3.  <button 
  4.       :on-press="getLocation" 
  5.       title="Get Location" 
  6.       color="#184d47" 
  7.       accessibility-label="Get access to users' location" 
  8.     > 
  9.     <text>Location Details:</text> 
  10.     <text>{{ location }}</text> 
  11.     <text>Latitude: {{ latitude }}</text> 
  12.     <text>Longitude: {{ longitude }}</text> 
  13.     <text class="text-error">{{ errorMessage }}</text> 
  14.   </view
  15. </template> 
  16.  
  17. <script> 
  18. import * as Location from "expo-location"
  19.  
  20. export default { 
  21.   data() { 
  22.     return { 
  23.       location: ""
  24.       latitude: ""
  25.       longitude: ""
  26.       errorMessage: ""
  27.       text: ""
  28.       user: { 
  29.         country: ""
  30.       }, 
  31.     }; 
  32.   }, 
  33.   methods: { 
  34.     async getLocation() { 
  35.       try { 
  36.         let { status } = await Location.requestForegroundPermissionsAsync(); 
  37.         if (status !== "granted") { 
  38.           this.errorMessage = "Permission to access location was denied"
  39.           return
  40.         } 
  41.         let location = await Location.getCurrentPositionAsync({}); 
  42.         this.location = location; 
  43.         this.latitude = location.coords.latitude; 
  44.         this.longitude = location.coords.longitude; 
  45.         this.errorMessage = ""
  46.       } catch (error) { 
  47.         this.errorMessage = error; 
  48.       } 
  49.     }, 
  50.   }, 
  51. </script> 

通過使用 Expo 包,不需要額外的配置或設置,這使得使用 Vue Native 構建移動應用程序變得輕而易舉。

總結

使用 Vue Native 構建移動應用程序為使用 JavaScript 構建跨平臺移動應用程序開辟了許多可能性。

通過訪問 Vue 和 React Native 生態(tài)系統(tǒng)的豐富性和優(yōu)勢,開發(fā)人員可以編寫 .vue 組件并將 Expo 和 React Native 包集成到應用程序中,幾乎不需要額外的配置。

本教程中使用的完整代碼可在GitHub上找到。

本教程源碼:https://github.com/ejirocodes/Vue-Native-Demo

原文:https://blog.logrocket.com/building-mobile-apps-with-vue-native/

作者:Ejiro Asiuwhu

本文轉載自微信公眾號「前端全棧開發(fā)者」,可以通過以下二維碼關注。轉載本文請聯(lián)系前端全棧開發(fā)者公眾號。

 

責任編輯:武曉燕 來源: 前端全棧開發(fā)者
相關推薦

2013-12-16 15:07:59

NativeHybrid開發(fā)移動

2014-12-17 10:29:59

混合應用Hybrid App開發(fā)實戰(zhàn)

2013-07-12 09:44:48

超級App移動開發(fā)平臺化

2013-09-04 15:17:38

2013-01-28 11:32:01

2013-06-03 10:43:41

移動應用安全web應用開發(fā)數(shù)據(jù)存儲

2013-04-16 12:58:18

移動營銷

2011-01-12 10:50:23

jqueryhtmlNosql

2016-07-29 13:47:05

RethinkDBWeb

2013-10-09 09:10:28

移動應用開發(fā)NativeHybrid

2015-01-17 13:28:59

線下公開課51CTO沙龍MDSA

2013-09-04 15:07:06

移動應用設計

2011-02-22 10:23:43

2013-01-23 09:15:58

SaaS移動開發(fā)平臺

2011-12-28 15:24:21

2012-03-30 15:54:43

ibmdw

2023-09-07 15:43:58

2021-07-25 21:36:24

Windows操作系統(tǒng)功能

2013-09-30 10:19:46

SAP

2011-09-02 16:42:51

Sencha ToucWeb應用
點贊
收藏

51CTO技術棧公眾號