成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

用 Vue 來寫 React 和 ReactNative

maybe_009 / 643人閱讀

摘要:的響應(yīng)核心的響應(yīng)式系統(tǒng)是支撐整個框架運行的關(guān)鍵,也是的核心之一,官方對這個核心的分層設(shè)計得很好也是依靠其驅(qū)動原生視圖。我們?nèi)粘S玫降亩加珊诵奶峁?,對這個核心稍作修改,去掉和,意外的獲得了一個極小的響應(yīng)核心,可以運行于任何標(biāo)準(zhǔn)引擎下。

GitHub: react-vue

前言

react-vue 為兩大前端框架搭了一座橋,它主要有三種用法

使用 Vue 的響應(yīng)式系統(tǒng)驅(qū)動 React 渲染

使用 react-vue-loader 將 Vue 組件編譯成 React 組件

使用 react-vue-native-script 在 React Native 下運行 Vue 組件

這篇文章會向大家介紹 react-vue 的三種用法及一些實現(xiàn)細(xì)節(jié),它能做到什么程度,以及它帶來的一些可能性。需要提前知會的一點:如果你熟悉 React 和 Vue,在這里你不會接觸到任何新的概念。

Vue 的響應(yīng)核心

Vue 的響應(yīng)式系統(tǒng)是支撐整個 Vue 框架運行的關(guān)鍵,也是 Vue 的核心之一,官方對這個核心的分層設(shè)計得很好(Weex 也是依靠其驅(qū)動原生視圖)。若你有幸看過 Vue 的源碼,這個核心就在它的 core 目錄下。

我們?nèi)粘S玫降?data、computed、watch、methods、lifecyclerender 都由核心提供,對這個核心稍作修改,去掉 renderlifecycle,意外的獲得了一個極小的響應(yīng)核心(gzip 9kb),可以運行于任何標(biāo)準(zhǔn) JS 引擎下。這構(gòu)成了 react-vue 的核心。

響應(yīng)式的 React

react-vue 額外添加了一個 observer 函數(shù),用于觀察 react 組件,并與響應(yīng)核心建立聯(lián)系。

import React, { Component } from "react";
import Vue, { observer } from "react-vue";

const store = new Vue({
  data () {
    return {
      count: 0
    }
  },
  methods: {
    increase () {
      this.count ++;
    }
  }
});

@observer
export default class Demo extends Component {
  render () {
    return 

{store.count}

; } }

如上代碼實現(xiàn)了一個簡單的遞增計數(shù)器,如果你接觸過 mobx,對這種開發(fā)模式應(yīng)該會很熟悉。

使用 Vue 的響應(yīng)核心驅(qū)動 React,還能獲得另一個禮物 Vuex,這里有一個將 Vuex 與 React 結(jié)合的簡單 demo,如此,你便可以在 React 體系下使用 Vuex 構(gòu)建大型應(yīng)用。

React 下運行 Vue 組件

react-vue 支持將 Vue 組件編譯到 React,只需引入 react-vue-loader,這個 loader 基于 vue-loader 做了一些改造以適應(yīng) React 的運行環(huán)境。我們幾乎可以使用 vue-loader 提供的所有配置,詳細(xì)的文檔可以參考這里。如下是一個你可能會用到的 webpack 配置

module: {
  rules: [
    {
      test: /.vue$/,
      loader: "react-vue-loader"
    }
  ]
}

很簡單對吧,React 和 Vue 的混合開發(fā)模式會產(chǎn)生一些很有趣的事情,你寫的 React 組件,可以直接在 Vue 組件內(nèi)使用,反過來 Vue 組件也可以直接在 React 組件內(nèi)運行。

// One.js
import React, { Component } from "react";
import Two from "./Two";

export default class One extends Component {
  render() {
    return Hello Vue;
  }
}



// Three.js
import React, { Component } from "react";

export default class Three extends Component {
  render () {
    return {this.props.children}
  }
}

這種混合開發(fā)讓技術(shù)棧的切換成本變得很低,React 和 Vue 也不再是非此即彼,如果你的團隊在 React 下積累深厚,想嘗試一下 Vue 開發(fā)帶來的快感,引入一個 loader 就可以了;如果你的團隊在 Vue 下造詣頗深,想試試 React 帶來的思維淬煉,搭建一個 React 的運行環(huán)境,之前寫的 Vue 代碼也可在其上良好的運行。

react-vue 對組件庫的開發(fā)也提供了新的思路,你只需寫一套 Vue 組件,即可同時運行于 React 和 Vue。這里有一個項目對 vue-material 組件庫做了一個測試,通過 npm install --save vue-material 安裝組件庫,在 React 下可以運行其中 20/29 的組件。

react-vue 有其局限性,編譯過來的 Vue 組件依舊跑在 React 的運行時,所以你不能使用 Vue 提供的 render 函數(shù)(使用 template 代替),你也無法在 Vue 組件內(nèi)訪問 VNode??梢圆榭丛敿?xì)的 API 支持文檔。

React Native 下運行 Vue 組件

這可能是最有趣的一部分了,react-vue 的響應(yīng)核心是平臺無關(guān)的,它可以跑在 React 下,自然也能跑在 React Native 下。

React Native 使用了一個量身定制的打包工具,我們無法像 Web 那樣引入一個 loader 來實現(xiàn)無縫接合。你可以使用 react-vue-native-scripts,一個 npm 腳本,開啟一個輕量的 node 服務(wù)器,監(jiān)聽項目中 .vue 文件的變化,生成一份同名的 .js 文件。

是不是有點 Weex 的意思了,Native 不同于 Web,在 Web 下用慣了的標(biāo)簽,在 Native 下都是沒有的,React Native 官方提供的所有組件,都作為內(nèi)置組件預(yù)先引入了,你無需引用可直接使用。當(dāng)然,如果習(xí)慣了 Web 標(biāo)簽,可以這樣

import { View } from "react-native";
import { Vue } from "react-vue";

Vue.component("div", View);

export default Vue;

這里有一個 Hacker News 的 demo,使用 React Native 作為底層,上層使用 Vue 和 Vuex 構(gòu)建,效果還不錯,你可以看看。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/83672.html

相關(guān)文章

  • ReactNative&weex&DeviceOne對比

    摘要:平臺要求基本都是以上需擴展不支持已支持。性能重心比較多,目前性能關(guān)注不多。成立也比較晚,案例也有一些,基本都是近一年內(nèi)的案例。較晚,以公司自己人居多,成熟需一段時間。較晚,社區(qū)人相對少一些,內(nèi)容相對成熟。   React Native出來有一段時間了,國內(nèi)的weex和deviceone是近期發(fā)布的,我可以說從2011年就開始關(guān)注快速開發(fā)的跨平臺平臺技術(shù)了,接觸過phoneGap、數(shù)字天...

    helloworldcoding 評論0 收藏0
  • 你想要的全平臺全棧開源項目-VueReact、小程序、安卓、ReactNative、java后端

    摘要:無論你是前端后端移動端開發(fā)人員,或是設(shè)計師產(chǎn)品經(jīng)理,都可以在平臺上發(fā)布項目,與志同道合的小伙伴一起協(xié)作完成項目。 全平臺全棧開源項目 coderiver 今天終于開始前后端聯(lián)調(diào)了~ 首先感謝大家的支持,coderiver 在 GitHub 上開源兩周,獲得了 54 個 Star,9 個 Fork,5 個 Watch。 這些鼓勵和認(rèn)可也更加堅定了我繼續(xù)寫下去的決心~ 再次感謝各位大佬! ...

    Maxiye 評論0 收藏0
  • 2017-06-26 前端日報

    摘要:前端日報精選第期正則表達式回溯法原理入門教程眾成翻譯在中調(diào)試入門教程眾成翻譯框架之戰(zhàn)眾成翻譯中文技術(shù)周刊期知乎專欄新特性之命令掘金創(chuàng)建對象的七種方式中的惰性數(shù)組介紹眾成翻譯跟手轉(zhuǎn)動的羅盤指針掘金和簡介修仙之路仿音樂移 2017-06-26 前端日報 精選 【第977期】正則表達式回溯法原理npm 入門教程 - 眾成翻譯在 Chrome DevTools 中調(diào)試 JavaScript 入...

    LeviDing 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<