當前位置:編程學習大全網 - 源碼下載 - Cordova VS React Native 誰是未來

Cordova VS React Native 誰是未來

[code]public class MainActivity extends CordovaActivity

{

@Override

public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

// Set by <content src="index.html" /> in config.xml

loadUrl(launchUrl);

}

}

初始化壹個WebView

[code] protected void init() {

appView = makeWebView();

createViews();

if (!appView.isInitialized()) {

appView.init(cordovaInterface, pluginEntries, preferences);

}

cordovaInterface.onCordovaInit(appView.getPluginManager());

// Wire the hardware volume controls to control media if desired.

String volumePref = preferences.getString("DefaultVolumeStream", "");

if ("media".equals(volumePref.toLowerCase(Locale.ENGLISH))) {

setVolumeControlStream(AudioManager.STREAM_MUSIC);

}

}

其實很簡單,就是我們平常使用的H5+webView這種開發模式。webview 的好與不好我就不說了。

Cordova與native通過phone Gap Bridge(CordovaLib)來通信,也就是說phoneGap提供了豐富的插件庫來與native通信。沒有接觸插件開發的工程師們可以看看我寫的這篇 自定義Cordova插件—SweetAlertDialogPlugin

很多時候Cordova提供的插件是滿足不了我們開發需要的,因此都是我們自定義插件開發。

所以我們看到了phoneGap還是停留在web層。對於用戶體驗,依然差的要死。對於前端已經沒有激情了。呵呵。

2、React native

Facebook 在 React.js Conf 2015 大會上推出了基於 JavaScript 的開源框架 React Native,本中文教程翻譯自 React Native 官方文檔。

React

Native 結合了 Web 應用和 Native 應用的優勢,可以使用 JavaScript 來開發 iOS 和 Android

原生應用。在 JavaScript 中用 React 抽象操作系統原生的 UI 組件,代替 DOM 元素來渲染等。

React

Native 使妳能夠使用基於 JavaScript 和 React 壹致的開發體驗在本地平臺上構建世界壹流的應用程序體驗。React

Native 把重點放在所有開發人員關心的平臺的開發效率上——開發者只需學習壹種語言就能輕易為任何平臺高效地編寫代碼。Facebook

在多個應用程序產品中使用了 React Native,並將繼續為 React Native 投資。

官方是這麽介紹的,大家真正關心的恐怕不是這個,而是js如何跟原生組件搭上關系的呢。舉個例子。我們熟悉的Toast.

JS代碼,前端攻城獅們,是不是很同意看的懂啊。

[code]'use strict';

var RCTToastAndroid = require('NativeModules').ToastAndroid;

/**

* This exposes the native ToastAndroid module as a JS module. This has a function 'show'

* which takes the following parameters:

*

* 1. String message: A string with the text to toast

* 2. int duration: The duration of the toast. May be ToastAndroid.SHORT or ToastAndroid.LONG

*/

var ToastAndroid = {

SHORT: RCTToastAndroid.SHORT,

LONG: RCTToastAndroid.LONG,

show: function (

message: string,

duration: number

): void {

RCTToastAndroid.show(message, duration);

},

};

module.exports = ToastAndroid;

native代碼:

[code]package com.facebook.react.modules.toast;

import android.widget.Toast;

import com.facebook.react.bridge.NativeModule;

import com.facebook.react.bridge.ReactApplicationContext;

import com.facebook.react.bridge.ReactContext;

import com.facebook.react.bridge.ReactContextBaseJavaModule;

import com.facebook.react.bridge.ReactMethod;

import com.facebook.react.common.MapBuilder;

import java.util.Map;

/**

* {@link NativeModule} that allows JS to show an Android Toast.

*/

public class ToastModule extends ReactContextBaseJavaModule {

private static final String DURATION_SHORT_KEY = "SHORT";

private static final String DURATION_LONG_KEY = "LONG";

public ToastModule(ReactApplicationContext reactContext) {

super(reactContext);

}

@Override

public String getName() {

return "ToastAndroid";

}

@Override

public Map<String, Object> getConstants() {

final Map<String, Object> constants = MapBuilder.newHashMap();

constants.put(DURATION_SHORT_KEY, Toast.LENGTH_SHORT);

constants.put(DURATION_LONG_KEY, Toast.LENGTH_LONG);

return constants;

}

@ReactMethod

public void show(String message, int duration) {

Toast.makeText(getReactApplicationContext(), message, duration).show();

}

}

通過getName這個方法拿到JS傳過來的名字ToastAndroid,來調用Toast。手法跟Cordova差不多。更多組件的封裝可以去ReactAndroid的源碼。覺得寫的還是非常不錯的。

React與Cordova不同,React通過封裝原生組件來供js來調,這在壹定程度上提升了用戶體驗。而且性能上要好太多。

  • 上一篇:插畫ai教程-如何用ai做插畫
  • 下一篇:大數據分析BI工具有哪些?
  • copyright 2024編程學習大全網