詳解Vue Native

小編推薦: Fundebug提供JS、微信小程序瓶籽、微信小游戲匠童,Node.js和Java錯誤監(jiān)控。真的是一個很好用的錯誤監(jiān)控服務(wù)塑顺,眾多大佬公司都在使用汤求。

譯者按: 一家叫GeekyAnts的印度公司開發(fā)了Vue Native,基于React Native實(shí)現(xiàn)。

為了保證可讀性首昔,本文采用意譯而非直譯寡喝。另外,本文版權(quán)歸原作者所有勒奇,翻譯僅用于學(xué)習(xí)。

盡管整個JavaScript社區(qū)對Vue的情感是比較微妙的(不懂為啥)巧骚,但也不能阻止我嘗試用Vue Native來開發(fā)移動App赊颠。

Hello World

這是一個很簡單的例子,僅僅將“Hello World”在頁面上展示出來劈彪。

動機(jī)

作為一個前端開發(fā)竣蹦,我很喜歡HTML的簡潔。直接編寫代碼沧奴,輔以CSS來定制樣式痘括。Vue的.vue文件提供了類似的體驗(yàn)。

Vue有豐富的功能:支持模板化滔吠、樣式定義纲菌、基于Vuex的狀態(tài)管理和路由。這使得它不失為一個完美的選擇疮绷。

使用Vue Native翰舌,我們在開發(fā)中也有著類似的體驗(yàn)。

初次嘗試

在網(wǎng)上簡單的搜索冬骚,就可以發(fā)現(xiàn)SmallComfort開發(fā)的react-vue項(xiàng)目椅贱。react-vue將Vue文件翻譯到React和React Native組件。感謝react-vue的作者解決了很多問題只冻。 Vue Native是同樣的庇麦。

Vue Native編譯到React Native

Vue Native依賴React Native。當(dāng)你使用vue-native-cli初始化一個新的app喜德,入口文件是App.vue山橄。

就像.js文件一樣,你可以用很多.vue文件來組合一個.vue文件住诸。實(shí)際上驾胆,所有的.vue文件到翻譯到以.js后綴的React Native組件。如果想了解更多贱呐,請參考此處丧诺。

雙向綁定的例子

Vue Native同樣支持使用v-model來做數(shù)據(jù)雙向綁定。

<template>
   <text-input v-model=”name” />
</template>
<script>
export default {
 data: function() {
   return {
     name: "John Doe"
   };
 }
};
</script>

循環(huán)

你可以使用v-for指令來寫循環(huán)奄薇,和JavaScript的map類似驳阎。

<template>
   <view>
    <text v-for=”name in names” v-bind:key="name">{{name}}</text>
   </view>
</template>
<script>
export default {
 data: function() {
   return {
     names: [“Gaurav”, “Neeraj”, “Sanket”, “Neeraj”]
   };
 }
};
</script>

App示例

KitchenSink應(yīng)用

我們使用Vue Native重寫了KitchenSink應(yīng)用,你可以去這里下載源碼:GeekyAnts/KitchenSink-Vue-Native

Todo應(yīng)用

我們GeekyAnts的高級軟件工程師Ankit Singhania使用Vue Native寫了一個簡單的ToDo應(yīng)用呵晚。

如何開始

為了使用Vue Native眉枕,你首先需要安裝React Native。根據(jù)這里的步驟來安裝责循。

下一步歌粥,使用npm安裝Vue Native CLI。

npm install -g vue-native-cli

之后金矛,你就可以初始化一個Vue-Native項(xiàng)目了:

vue-native init <projectName>
cd <projectName>

你可以直接使用npm run來在IOS/Andriod模擬器上運(yùn)行這個Vue Native應(yīng)用了芯急。

指令

在Vue中,指令是可以說是一種特殊的屬性驶俊,他們都以v-作為前綴娶耍。下面是幾個常用的指令。

v-if和v-else

v-ifv-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>

執(zhí)行結(jié)果如下:

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>

執(zhí)行結(jié)果如下:

v-model

v-model指令用來創(chuàng)建一個雙向綁定的元素,可以基于一個input元素或則一個組件故俐。它內(nèi)部是將value和onChangeText綁定到React Native的TextInput想鹰。

<template>
 <view class="container">
     <text-input
       class="text-input-container"
       placeholder="Type here"
       v-model="textContent"
     />
     <text
       class="text-container"
     >
       {{textContent}}
     </text>
 </view>
</template>
<script>
export default {
 data: function() {
   return {
     textContent: ""
   };
 }
};
</script>

上面的代碼對textContent做了雙向綁定,如果在text-input輸入內(nèi)容购披,它會被存儲到textContent中杖挣,然后會直接顯示到text-input的下方。

執(zhí)行結(jié)果如下:

Vue Native路由

Vue Native使用vue-router來實(shí)現(xiàn)導(dǎo)航邏輯刚陡。我們來看看下面的實(shí)現(xiàn):

使用Vuex做狀態(tài)管理

你可以使用Vuex來管理狀態(tài)惩妇,詳情查看:Vuex

局限性和已知問題

  • 有時候?qū)τ谝粋€組件筐乳,你需要創(chuàng)建一個返回JSX代碼的函數(shù)歌殃;比如在FlatList中的renderItem函數(shù)就必須返回JSX。
  • 報錯是在React Native層面的蝙云,并沒有映射到Vue Native代碼氓皱。我們正在優(yōu)化這個問題。

可以用在生產(chǎn)環(huán)境嗎勃刨?

我們已經(jīng)使用Vue Native將整個KitchenSink重寫波材,你可以在生產(chǎn)環(huán)境使用它。不過你要記得它有局限性身隐。

Vue-Native是完全開源的廷区,可以在Github找到源代碼:vue-native-core

關(guān)于Fundebug

Fundebug專注于JavaScript贾铝、微信小程序隙轻、微信小游戲埠帕、支付寶小程序、React Native玖绿、Node.js和Java線上應(yīng)用實(shí)時BUG監(jiān)控敛瓷。 自從2016年雙十一正式上線,F(xiàn)undebug累計處理了10億+錯誤事件斑匪,付費(fèi)客戶有Google呐籽、360、金山軟件秤标、百姓網(wǎng)等眾多品牌企業(yè)绝淡。歡迎大家免費(fèi)試用

版權(quán)聲明

轉(zhuǎn)載時請注明作者Fundebug以及本文地址:
https://blog.fundebug.com/2018/07/23/vue-native/

您可能感興趣的

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市撑瞧,隨后出現(xiàn)的幾起案子棵譬,更是在濱河造成了極大的恐慌,老刑警劉巖预伺,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件订咸,死亡現(xiàn)場離奇詭異,居然都是意外死亡酬诀,警方通過查閱死者的電腦和手機(jī)脏嚷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來父叙,“玉大人,你說我怎么就攤上這事肴裙≈撼” “怎么了蜻懦?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵带欢,是天一觀的道長渡贾。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么囤屹? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任诲泌,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘羹幸。我一直安慰自己,他們只是感情好巾钉,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般斯稳。 火紅的嫁衣襯著肌膚如雪挣惰。 梳的紋絲不亂的頭發(fā)上锤岸,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天竖幔,我揣著相機(jī)與錄音,去河邊找鬼是偷。 笑死拳氢,一個胖子當(dāng)著我的面吹牛募逞,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播馋评,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼放接,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了栗恩?” 一聲冷哼從身側(cè)響起透乾,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎磕秤,沒想到半個月后乳乌,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡市咆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年汉操,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蒙兰。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡磷瘤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搜变,到底是詐尸還是另有隱情采缚,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布挠他,位于F島的核電站扳抽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏殖侵。R本人自食惡果不足惜贸呢,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望拢军。 院中可真熱鬧楞陷,春花似錦、人聲如沸茉唉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赌渣。三九已至魏铅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間坚芜,已是汗流浹背览芳。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留鸿竖,地道東北人沧竟。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓铸敏,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悟泵。 傳聞我的和親對象是個殘疾皇子杈笔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容

  • vue概述 在官方文檔中,有一句話對Vue的定位說的很明確:Vue.js 的核心是一個允許采用簡潔的模板語法來聲明...
    li4065閱讀 7,191評論 0 25
  • Foreword: 首先那要說明下糕非,以下是我看到的一篇文章蒙具,但是原文是英文的,我只是做一個搬運(yùn)工把他搬過來~主要也...
    Howie126313閱讀 10,809評論 4 41
  • Vue也已經(jīng)升級到2.0版本了朽肥,到現(xiàn)在為止(2016/11/19)比較流行的MVVM框架有AngularJS(也有...
    彬_仔閱讀 27,206評論 12 114
  • UI組件 element- 餓了么出品的Vue2的web UI工具套件 Vux- 基于Vue和WeUI的組件庫 m...
    小姜先森o0O閱讀 9,397評論 0 72
  • 這一夜很靜輾轉(zhuǎn)反側(cè)我祈求時光再慢些您慢些老去我慢些長大我愛您勝過愛自己勝過一切 這一夜靜的啊仿佛又回到孩提時無知而...
    看晚霞的人閱讀 155評論 0 0