你應該瞭解一下 Vue Native
譯者按: 一家叫GeekyAnts的印度公司開發了Vue Native,基於React Native實現。
儘管整個JavaScript社群對Vue的情感是比較微妙的(不懂為啥),但也不能阻止我嘗試用Vue Native來開發移動App。
Hello World
這是一個很簡單的例子,僅僅將“Hello World”在頁面上展示出來。
動機
作為一個前端開發,我很喜歡HTML的簡潔。直接編寫程式碼,輔以CSS來定製樣式。Vue的.vue檔案提供了類似的體驗。
Vue有豐富的功能:支援模板化、樣式定義、基於Vuex的狀態管理和路由。這使得它不失為一個完美的選擇。
使用Vue Native,我們在開發中也有著類似的體驗。
初次嘗試
在網上簡單的搜尋,就可以發現SmallComfort開發的react-vue專案。react-vue
將Vue檔案翻譯到React和React Native元件。感謝react-vue的作者解決了很多問題。 Vue Native是同樣的。
Vue Native編譯到React Native
Vue Native依賴React Native。當你使用vue-native-cli
初始化一個新的app,入口檔案是App.vue
。
就像.js
檔案一樣,你可以用很多.vue
檔案來組合一個.vue
檔案。實際上,所有的.vue檔案到翻譯到以.js字尾的React Native元件。如果想了解更多,請參考此處。
雙向繫結的例子
Vue Native同樣支援使用v-model
來做資料雙向繫結。
<template> <text-input v-model=”name” /> </template> <script> export default { data: function() { return { name: "John Doe" }; } }; </script>
迴圈
你可以使用v-for
指令來寫迴圈,和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應用
我們使用Vue Native重寫了KitchenSink應用,你可以去這裡下載原始碼:GeekyAnts/KitchenSink-Vue-Native。
Todo應用
我們GeekyAnts的高階軟體工程師Ankit Singhania使用Vue Native寫了一個簡單的ToDo應用。
如何開始
為了使用Vue Native,你首先需要安裝React Native。根據這裡的步驟來安裝。
下一步,使用npm安裝Vue Native CLI。
$ npm install -g vue-native-cli
之後,你就可以初始化一個Vue-Native專案了:
$ vue-native init <projectName> $ cd <projectName>
你可以直接使用npm run
來在IOS/Andriod模擬器上執行這個Vue 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>
執行結果如下:
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>
執行結果如下:
v-model
v-model
指令用來建立一個雙向繫結的元素,可以基於一個input元素或則一個元件。它內部是將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輸入內容,它會被儲存到textContent
中,然後會直接顯示到text-input
的下方。
執行結果如下:
Vue Native路由
Vue Native使用vue-router
來實現導航邏輯。我們來看看下面的實現:
使用Vuex做狀態管理
你可以使用Vuex來管理狀態,詳情檢視:Vuex。
侷限性和已知問題
- 有時候對於一個元件,你需要建立一個返回JSX程式碼的函式;比如在FlatList中的renderItem函式就必須返回JSX。
- 報錯是在React Native層面的,並沒有對映到Vue Native程式碼。我們正在優化這個問題。
可以用在生產環境嗎?
我們已經使用Vue Native將整個KitchenSink重寫,你可以在生產環境使用它。不過你要記得它有侷限性。
Vue-Native是完全開源的,可以在Github找到原始碼:vue-native-core。
- 原文: Inpoducing Vue Native
- 譯者: Fundebug
相關文章
- 除了FastJson,你也應該瞭解一下Jackson(二)ASTJSON
- 除了FastJson,你也應該瞭解一下Jackson(一)ASTJSON
- 【譯】你應該瞭解的 CORSCORS
- 你應該瞭解的 Java SPI 機制Java
- 你應該瞭解的MySQL鎖分類MySql
- NativeScript-Vue,瞭解一下?Vue
- 基坑圍護之“HUW工法”,這個工藝你應該瞭解一下了!
- [譯]關於NODE_ENV,哪些你應該瞭解
- Java8新特性,你應該瞭解這些!Java
- 應用層,瞭解一下
- 前端應該瞭解的PWA前端
- 這份Python標準異常表你應該瞭解!Python
- 需要介面管理的你瞭解一下?
- 8 個你應該瞭解的環保開源專案
- 前端你應該瞭解的資料結構與演算法前端資料結構演算法
- 你應該瞭解的流行圖資料庫查詢語言資料庫
- 關於JavaScript的作用域你應該瞭解的那點事!JavaScript
- 詳解Vue NativeVue
- 你該瞭解的HTTP協議(彙總)HTTP協議
- 你應該要知道的Vue.jsVue.js
- 【Camera專題】你應該瞭解的Camera HW-硬體知識
- 關於大資料你應該瞭解的五件事兒大資料
- Java 開發, volatile 你必須瞭解一下Java
- 您應該瞭解的三大LLM框架框架
- 建立索引,這些知識應該瞭解索引
- 瞭解一下Bootstrapboot
- CSS 瞭解一下CSS
- koa,瞭解一下?
- JSX,瞭解一下?JS
- 關於工業物聯網,你應該瞭解的3件事
- 前端人員不要只知道KFC,你應該瞭解 BFC、IFC、GFC 和 FFC前端
- 你還在尋找Navicat的破解版本?你應該瞭解開源免費的DBeaver
- 初識Python,我想你應該瞭解這些...Python
- 程式設計師都應該知道的URI,一文幫你全面瞭解程式設計師
- Swift GCD 瞭解一下SwiftGC
- table 元件瞭解一下?元件
- this.$toast() 瞭解一下?AST
- Android Camera瞭解一下Android