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.