NativeScript - API Native Menggunakan JavaScript

Bagian ini menjelaskan tentang ikhtisar mengakses Native API menggunakan JavaScript.

Marshalling

Waktu Proses NativeScript menyediakan konversi tipe implisit untuk platform Android dan iOS. Konsep ini dikenal sebagai marshalling. Misalnya, NativeScript- iOS paltform secara implisit dapat mengonversi tipe data JavaScript dan Objective-C dengan cara yang sama, Java / Kotlin dapat dengan mudah dipetakan ke tipe dan nilai proyek JavaScript. Mari kita pahami cara melakukan marshalling di setiap jenis satu per satu secara singkat.

Nilai Numerik

Kita dapat dengan mudah mengubah tipe data numerik iOS dan android menjadi nomor JavaScript. Konversi numerik sederhana untuk iOS ke JavaScript didefinisikan di bawah ini -

console.log(`max(7,9) = ${max(7,9)}`);

Sini,

Fungsi native max () diubah menjadi nomor JavaScript.

Lingkungan Android

Java mendukung tipe numerik yang berbeda seperti byte, short, int, float, double dan long. JavaScript hanya memiliki tipe angka.

Pertimbangkan kelas Java sederhana yang ditunjukkan di bawah ini -

class Demo extends java.lang.Object {
   public int maxMethod(int a,int b) {
      if(a>b) {
         return a;
      } else {
         return b;
      }
   }
}

Sini,

Kode di atas berisi dua argumen integer. Kita dapat memanggil objek kode di atas menggunakan JavaScript seperti yang ditunjukkan di bawah ini -

//Create an instance for Demo class 
var obj = new Demo(); 

//implicit integer conversion for calling the above method 
obj.maxMethod(7,9);

String

String Android ditentukan di java.lang.string dan string iOS ditentukan di NSSring. Mari kita lihat bagaimana melakukan marshalling di kedua platform.

Android

String tidak dapat diubah tetapi buffer String mendukung string yang dapat berubah.

Kode di bawah ini adalah contoh untuk pemetaan sederhana -

//Create android label widget 
var label = new android.widget.Label(); 

//Create JavaScript string 
var str = "Label1";  

//Convert JavaScript string into java label.setText(str); 
// text is converted to java.lang.String

Kelas Boolean didefinisikan dalam java.lang.Boolean. Kelas ini membungkus nilai boolean dalam sebuah objek. Kita dapat dengan mudah mengubah boolean menjadi String dan sebaliknya. Contoh sederhana didefinisikan seperti yang diberikan di bawah ini -

//create java string 
let data = new java.lang.String('NativeScript'); 

//map java String to JavaScript string, 
let result = data.startsWith('N'); 

//return result 
console.log(result);// true

Lingkungan iOS

Kelas NSString tidak dapat diubah tetapi subkelasnya NSMutableString tidak dapat diubah. Kelas ini berisi kumpulan metode untuk bekerja dengan string. Itu dideklarasikan seperti di bawah ini -

class NSString : NSObject

Pertimbangkan deklarasi obyektif-c sederhana seperti yang ditunjukkan di bawah ini -

NSString *str = @"nativescript"; 
//convert the string to uppercase
NSString *str1; 
str1 = [str uppercaseString]; 
NSLog(@"Uppercase String : %@\n", str1 );

NSString dapat dengan mudah dipetakan ke string JavaScript.

Himpunan

Bagian ini menjelaskan tentang cara melakukan marshalling dalam array. Mari kita ambil contoh lingkungan iOS terlebih dahulu.

Deklarasi Array

class NSArray : NSObject

Sini,

NSArray digunakan untuk mengelola kumpulan objek yang dipesan yang disebut array. Ini digunakan untuk membuat array statis. Sub kelasnyaNSMutableArray digunakan untuk membuat array dinamis.

Pertimbangkan objek NSArray dapat dibuat menggunakan literal array seperti yang ditunjukkan di bawah ini -

let array: NSArray = ["React","Vue","TypeScript"]

Sekarang, kita dapat memetakan array ini ke dalam JavaScript seperti yang ditunjukkan di bawah ini -

//create native array 
let nsArr = NSArray.arrayWithArray("React","Vue","TypeScript"]); 

//create simple javascript array 
let jsArr = ["Hello,World","NativeScript"]; 

//Now compare the two arrays, 
let compare = nsArr.isEqual(jsArr); 
console.log(comapre);

Ini akan mengembalikan keluaran sebagai false.

Deklarasi array Android

Array Java didefinisikan dalam java.util.Arrays. Kelas ini berisi berbagai metode untuk memanipulasi array. Contohnya ditunjukkan di bawah ini -

//javascript array 
let data = [12,45,23,56,34,78,50]; 

//create java array 
let result = ns.example.Math.maxElement(data);
console.log(result);

Kelas dan Objek

Kelas dan Objek adalah konsep dasar Pemrograman Berorientasi Objek. Kelas adalah prototipe yang ditentukan pengguna. Objek adalah turunan dari kelas. Kelas mewakili sekumpulan properti atau metode yang umum untuk semua objek dari satu jenis. Mari kita pahami kelas dan objek asli untuk kedua lingkungan pengembangan seluler.

Lingkungan Android

Kelas Java dan Kotlin memiliki pengenal unik yang dilambangkan dengan nama paket lengkap.

Sebagai contoh,

android.view.View- Ini adalah kelas antarmuka pengguna dasar untuk tata letak layar dan interaksi dengan pengguna. Kita dapat mengakses kelas ini dalam JavaScript seperti yang ditunjukkan di bawah ini -

const View = android.view.View;

Pertama, kami mengimpor kelas menggunakan pernyataan di bawah ini -

import android.view.View;

Selanjutnya buat kelas seperti yang diberikan di bawah ini -

public class MyClass {
   public static void staticMethod(context) {
      //create view instance
      android.view.View myview = new android.view.View(context);
   }
}

Di kelas yang sama di atas, kita dapat mengakses fungsi JavaScript menggunakan kode di bawah ini -

const myview = new android.view.View(context);

Demikian pula, kita dapat mengakses antarmuka, konstanta, dan enumerasi dalam paket java.lang.

Lingkungan iOS

Kelas Objective-C didefinisikan dalam dua bagian @interface dan @implementation. Definisi kelas dimulai dengan kata kunci@interface diikuti oleh interface(class)nama. Di Objective-C, semua kelas diturunkan dari kelas dasar yang disebut NSObject.

Ini adalah superclass dari semua kelas Objective-C. Kelas Lingkaran Sederhana didefinisikan seperti yang ditunjukkan di bawah ini -

@interface Circle:NSObject {
   //Instance variable
   int radius;
}
@end

Pertimbangkan kelas dengan satu metode seperti yang ditunjukkan di bawah ini -

@interface MyClass : NSObject 
+ (void)baseStaticMethod; 
@end

Kelas ini dapat diubah menjadi javascript menggunakan kode di bawah ini -

function MyClass() { /* native call */ }; 
Object.setPrototypeOf(MyClass, NSObject); 
BaseClass.baseStaticMethod = function () { /* native call */ };

JavaScript instanceofoperator digunakan untuk memverifikasi, jika suatu objek mewarisi dari kelas tertentu. Ini dapat didefinisikan sebagai -

var obj = MyClass.alloc().init(); // object creation 
console.log(obj instanceof NSObject); //return true

Sini,

Instans Objective-C dibuat menggunakan metode alokasi, init, atau baru. Pada contoh di atas, kita dapat dengan mudah membuat inisialisasi objek menggunakan metode baru seperti di bawah ini -

var obj = MyClass.new();

Demikian pula, Anda dapat mengakses metode dan properti statis.