天天看點

Vue開發React Native應用詳解

概述

自從2015年4月React Native 釋出以來後,關于移動跨平台的話題就層出不窮,不管是大公司還是小公司都在開始使用React Native 來開發跨平台App。不過,也有公司對React Native 并不看好,如Airbnb在去年就開始宣布棄用React Native ,不管如何,React Native 的跨平台的目的是很誘惑的。

緊接着google釋出了跨平台架構Flutter,對于這個颠覆式的架構,可以說受到大多數開發者和公司的青睐,因為它是google開發的,目前活躍度明顯超過了React Native。

自從Flutter誕生後,React Native已經感受到了壓力,是以加快了優化的進度。去年底公布了優化方案,目前正在重構js引擎,最大提升js的性能問題。畢竟React Native低層還是基于原生的系統去做的,目前來看有一定的優勢,而且社群龐大,短期使用者量還是有的。Flutter雖然流暢,UI層獨立,但是很多插件還是要基于原生系統架構,不能完全獨立。

但是,不管是React Native還是Flutter,它們都不能脫離原生系統,除非android和iOS系統被另外一個系統取代。是以,不管未來如何,對于前端同學來說,React Native還是很有誘惑力的,它讓前端同學有能力開發媲美原生應用的能力。

在前端架構中,作為僅次于React 的架構,Vue在國内的趨勢可以說已經超過React,更是受到廣大程式員的喜愛。正是基于此,一家名叫GeekyAnts 的印度公司開發了 Vue Native,病用它來開發基于 React Native 的跨平台應用。

Vue Native

安裝

安裝Vue Native可以使用vue-native-cli腳手架方式,安裝的指令如下:

npm install -g vue-native-cli      

建立項目

安裝vue-native-cli工具後,接下來就可以使用vue-native-cli的指令行來建立Vue Native應用。

vue-native init <projectName>
cd <projectName>      

安裝依賴包

建立項目後,還需要安裝以下一些依賴包:

npm install vue-native-core vue-native-helper —save
npm install vue-native-script —save-dev      

Hello Word

例如,下面是一個使用Vue編寫的React Native程式,運作效果如下圖:

Vue開發React Native應用詳解

和 React Native使用React一樣,Vue Native使用的是Vue文法,開發者可以直接使用Vue文法來開發跨平台應用,對于熟悉Vue的開發者來說,使用Vue來開發移動應用可謂得心應手。

和React Native一樣,使用vue-native-cli初始化一個新的 app時,app的入口檔案為App.vue。并且,開發者可以使用很多.vue檔案來組合一個新的.vue檔案,在app編譯時系統會将所有的vue 檔案翻譯成以.js 字尾的 React Native 元件,最後調用原生元件進行渲染。

指令

在 Vue 中,指令是可以說是一種特殊的屬性,他們都以v-作為字首。

v-if 和 v-else

v-if和v-else用來編寫條件語句。例如:

<template>
    <view class="container">
        <view class="btn-container">
            <button title="show A" :on-press="() => handleBtnClick('A')" />
            <button title="show B" :on-press="() => handleBtnClick('B')" />
            <button title="show C" :on-press="() => handleBtnClick('C')" />
        </view>
        <view>
            <text v-if="type === 'A'">
                A
            </text>
            <text v-else-if="type === 'B'">
                B
            </text>
            <text v-else-if="type === 'C'">
                C
            </text>
            <text v-else>
                Not A/B/C
            </text>
        </view>
    </view>
</template>      

運作效果如下:

Vue開發React Native應用詳解

v-for

當然,還使用v-for指令來寫循環,和 JavaScript 的 map 類似。例如:

<template>
 <view class="container">
   <text
       class="text-container"
       v-for="todo in todos"
       :key="todo.text"
   >
     {{ todo.text }}
   </text>
 </view>
</template>
<script>
export default {
 data: function() {
   return {
     todos: [
       { text: "Learn JavaScript" },
       { text: "Learn Vue" },
       { text: "Build something awesome" }
     ]
   };
 }
};
</script>      

運作效果如下:

Vue開發React Native應用詳解

示例

KitchenSink

KitchenSink是一個使用Vue 重寫的Vue Native應用,源碼位址為:​​https://github.com/GeekyAnts/KitchenSink-Vue-Native,可以下載下傳源碼并進行二次開發。​​

Todo

除了KitchenSink外,你也可以下載下傳ToDo 應用,它是GeekyAnts 的進階軟體工程師Ankit Singhania使用 Vue Native 編寫的Vue Native應用,下載下傳位址為:​​https://github.com/ankitsinghania94/vue-native-todo-app​​

其他

Vue Native 使用vue-router來實作導航邏輯,我們來看看下面的實作:

Vue開發React Native應用詳解

繼續閱讀