NativeScript - Aplikasi Sudut
Mari kita buat aplikasi tulang telanjang sederhana untuk memahami alur kerja aplikasi NativeScript.
Membuat Aplikasi
Mari kita pelajari cara membuat aplikasi sederhana menggunakan NativeScript CLI, tns. tns menyediakan perintah buat yang digunakan untuk membuat proyek baru di NativeScript.
Sintaks dasar untuk membuat aplikasi baru adalah sebagai berikut -
tns create <projectname> --template <template_name>
Dimana,
Projectname adalah Nama proyek.
template_nameadalah Template proyek. NativeScript menyediakan banyak template startup untuk membuat berbagai jenis aplikasi. Gunakan template berbasis Angular.
Mari kita buat direktori baru bernama NativeScriptSamples untuk mengerjakan aplikasi baru kita. Sekarang, buka terminal baru lalu pindah ke direktori kami dan ketik perintah di bawah ini -
tns create BlankNgApp --template tns-template-blank-ng
Dimana, tns-template-blank-ng merujuk aplikasi seluler kosong berdasarkan AngularJS.
Keluaran
.....
.....
.....
Project BlankNgApp was successfully created.
Now you can navigate to your project with $ cd BlankNgApp
After that you can preview it on device by executing $ tns preview
Sekarang, aplikasi seluler pertama kami, BlankNgApp dibuat.
Struktur Aplikasi
Mari kita pahami struktur aplikasi NativeScript dengan menganalisis aplikasi BlankNgApp pertama kita di bab ini. Aplikasi NativeScript diatur menjadi beberapa bagian dan itu adalah sebagai berikut -
Bagian konfigurasi
Modul node
Sumber Android
Sumber iOS
Kode sumber aplikasi
Struktur umum aplikasi adalah sebagai berikut -
│ angular.json
│ LICENSE
│ nsconfig.json
│ package-lock.json
│ package.json
│ tsconfig.json
│ tsconfig.tns.json
│ tsfmt.json
│ webpack.config.js
│
├───App_Resources
│ ├───Android
│ │
│ └───iOS
│
├───hooks
│
├───node_modules
|
└───src
│ app.css
│ main.ts
│ package.json
│
└───app
│ app-routing.module.ts
│ app.component.html
│ app.component.ts
│ app.module.ts
│
└───home
home-routing.module.ts
home.component.html
home.component.ts
home.module.ts
Mari kita pahami setiap bagian aplikasi dan bagaimana hal itu membantu kita membuat aplikasi kita.
Bagian konfigurasi
Semua file di root aplikasi adalah file konfigurasi. Format file konfigurasi dalam format JSON, yang membantu pengembang untuk memahami detail konfigurasi dengan mudah. Aplikasi NativeScript mengandalkan file-file ini untuk mendapatkan semua informasi konfigurasi yang tersedia. Mari kita lihat semua file konfigurasi di bagian ini.
package.json
File package.json menetapkan identitas (id) aplikasi dan semua modul tempat aplikasi bergantung untuk bekerja dengan benar. Di bawah ini adalah package.json kami -
{
"nativescript": {
"id": "org.nativescript.BlankNgApp",
"tns-android": {
"version": "6.3.1"
}, "tns-ios": {
"version": "6.3.0"
}
}, "description": "NativeScript Application",
"license": "SEE LICENSE IN <your-license-filename>",
"repository": "<fill-your-repository-here>",
"dependencies": {
"@angular/animations": "~8.2.0",
"@angular/common": "~8.2.0",
"@angular/compiler": "~8.2.0",
"@angular/core": "~8.2.0",
"@angular/forms": "~8.2.0",
"@angular/platform-browser": "~8.2.0",
"@angular/platform-browser-dynamic": "~8.2.0",
"@angular/router": "~8.2.0",
"@nativescript/theme": "~2.2.1",
"nativescript-angular": "~8.20.3",
"reflect-metadata": "~0.1.12",
"rxjs": "^6.4.0",
"tns-core-modules": "~6.3.0",
"zone.js": "~0.9.1"
},
"devDependencies": {
"@angular/compiler-cli": "~8.2.0",
"@ngtools/webpack": "~8.2.0",
"nativescript-dev-webpack": "~1.4.0",
"typescript": "~3.5.3"
},
"gitHead": "fa98f785df3fba482e5e2a0c76f4be1fa6dc7a14",
"readme": "NativeScript Application"
}
Sini,
Identity of the application (nativescript/id)- Menetapkan id aplikasi sebagai org.nativescript.BlankNgApp. Id ini digunakan untuk mempublikasikan aplikasi kita ke Play Store atau iTunes. Id ini akan menjadi Pengenal Aplikasi atau Nama Paket kami.
Dependencies (dependencies)- Menentukan semua modul node dependen kami. Karena, implementasi NativeScript default bergantung pada Angular Framework, modul Angular disertakan.
Development dependencies- Menentukan semua alat yang bergantung pada aplikasi. Karena, kami mengembangkan aplikasi kami di TypeScript, ini menyertakan skrip ketikan sebagai salah satu modul dependen.
angular.json - Informasi konfigurasi kerangka sudut.
nsconfig.json - Informasi konfigurasi kerangka kerja NativeScript.
tsconfig.json, tsfmt.json & tsconfig.tns.json - Informasi konfigurasi bahasa TypeScript
webpack.config.js - Konfigurasi WebPack ditulis dalam JavaScript.
Modul node
Karena proyek NativeScript adalah proyek berbasis node, ia menyimpan semua dependensinya di folder node_modules. Kita dapat menggunakan npm (npm install) atau tns untuk mendownload dan menginstal semua ketergantungan aplikasi ke node_moduels.
Kode sumber Android
NativeScript secara otomatis menghasilkan kode sumber android dan menempatkannya di folder App_Resources \ Android. Ini akan digunakan untuk membuat aplikasi android menggunakan Android SDK
Kode sumber iOS
NativeScript secara otomatis menghasilkan kode sumber iOS dan menempatkannya di folder App_Resources \ iOS. Ini akan digunakan untuk membuat aplikasi iOS menggunakan iOS SDK dan XCode
Kode sumber aplikasi
Kode aplikasi sebenarnya ditempatkan di folder src. Aplikasi kami memiliki file di bawah ini di folder src.
└───src
│ app.css
│ main.ts
│ package.json
│
└───app
│ app-routing.module.ts
│ app.component.html
│ app.component.ts
│ app.module.ts
│
└───home
home-routing.module.ts
home.component.html
home.component.ts
home.module.ts
Mari kita pahami tujuan dari semua file dan bagaimana mereka diatur di bagian ini -
Langkah 1
main.ts - Titik masuk aplikasi.
// this import should be first in order to load some required settings (like globals and reflect-metadata)
import { platformNativeScriptDynamic } from "nativescript-angular/platform";
import { AppModule } from "./app/app.module";
platformNativeScriptDynamic().bootstrapModule(AppModule);
Di sini, kami telah menetapkan AppModule sebagai modul bootstrap aplikasi.
Langkah 2
app.css - Style sheet utama aplikasi adalah seperti yang ditunjukkan di bawah ini -
@import "~@nativescript/theme/css/core.css";
@import "~@nativescript/theme/css/brown.css";
/* Place any CSS rules you want to apply on both iOS and Android here.
This is where the vast majority of your CSS code goes. */
Sini,
app.css mengimpor lembar gaya inti dan lembar gaya tema warna coklat dari kerangka NativeScript.
LANGKAH 3
app \ app.module.ts - Modul root aplikasi.
import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptModule } from "nativescript-angular/nativescript.module";
import { AppRoutingModule } from "./app-routing.module";
import { AppComponent } from "./app.component";
@NgModule(
{
bootstrap: [
AppComponent
],
imports: [
NativeScriptModule,
AppRoutingModule
],
declarations: [
AppComponent
], schemas: [
NO_ERRORS_SCHEMA
]
}
)
export class AppModule { }
Sini,
AppModule dibuat berdasarkan NgModule dan mengatur komponen dan modul aplikasi. Ini mengimpor dua modul NativeScriptModule dan AppRoutingModule dan sebuah komponen, AppComponent. Ini juga mengatur AppComponent sebagai komponen root aplikasi.
LANGKAH 4
app.component.ts - Komponen root aplikasi.
import { Component } from "@angular/core";
@Component(
{
selector: "ns-app",
templateUrl: "app.component.html"
}
)
export class AppComponent { }
Sini,
AppComponent menyetel template dan style sheet dari komponen. Template dirancang dalam HMTL biasa menggunakan komponen UI NativeScript.
LANGKAH 5
app-routing.module.ts - Modul perutean untuk AppModule
import { NgModule } from "@angular/core";
import { Routes } from "@angular/router";
import { NativeScriptRouterModule } from "nativescript-angular/router";
const routes: Routes = [
{ path: "", redirectTo: "/home", pathMatch: "full" },
{ path: "home", loadChildren: () =>
import("~/app/home/home.module").then((m) => m.HomeModule) }
];
@NgModule(
{
imports: [NativeScriptRouterModule.forRoot(routes)],
exports: [NativeScriptRouterModule]
}
)
export class AppRoutingModule { }
Sini,
AppRoutingModule menggunakan NativeScriptRouterModule dan menetapkan rute AppModule. Ini pada dasarnya mengarahkan ulang jalur kosong ke / home dan mengarahkan / home ke HomeModule.
LANGKAH 6
app \ home \ home.module.ts - Mendefinisikan modul baru, HomeModule.
import { NgModule, NO_ERRORS_SCHEMA } from "@angular/core";
import { NativeScriptCommonModule } from "nativescript-angular/common";
import { HomeRoutingModule } from "./home-routing.module";
import { HomeComponent } from "./home.component";
@NgModule(
{
imports: [
NativeScriptCommonModule,
HomeRoutingModule
],
declarations: [
HomeComponent
],
schemas: [
NO_ERRORS_SCHEMA
]
}
)
export class HomeModule { }
Sini,
HomeModule mengimpor dua modul, HomeRoutingModule dan NativeScriptCommonModule serta satu komponen HomeComponent
LANGKAH 7
app \ home \ home.component.ts - Mendefinisikan komponen Home dan digunakan sebagai halaman muka aplikasi.
import { Component, OnInit } from "@angular/core";
@Component(
{
selector: "Home", templateUrl: "./home.component.html"
}
)
export class HomeComponent implements OnInit {
constructor() {
// Use the component constructor to inject providers.
}
ngOnInit(): void {
// Init your component properties here.
}
}
Sini,
HomeComponent menyetel template dan pemilih komponen rumah.
LANGKAH 8
app \ home \ home-routing.module.ts - Modul perutean untuk HomeModule dan digunakan untuk menentukan perutean untuk modul rumah.
import { NgModule } from "@angular/core";
import { Routes } from "@angular/router";
import { NativeScriptRouterModule } from "nativescript-angular/router";
import { HomeComponent } from "./home.component";
const routes: Routes = [
{ path: "", component: HomeComponent }
];
@NgModule(
{
imports: [NativeScriptRouterModule.forChild(routes)],
exports: [NativeScriptRouterModule]
}
)
export class HomeRoutingModule { }
Sini,
HomeRoutingModule menyetel jalur kosong ke HomeComponent.
LANGKAH 9
app.component.html dan home.component.html - Mereka digunakan untuk mendesain UI aplikasi menggunakan komponen UI NativeScript.
Jalankan aplikasi Anda
Jika Anda ingin menjalankan aplikasi Anda tanpa menggunakan perangkat apa pun, ketikkan perintah di bawah ini -
tns preview
Setelah menjalankan perintah ini, ini akan menghasilkan kode QR untuk dipindai dan dihubungkan dengan perangkat Anda.
Keluaran
QRCode
Sekarang kode QR dibuat dan terhubung ke PlayGround di langkah berikutnya.
PlayGround NativeScript
Buka aplikasi NativeScript PlayGround di ponsel iOS atau Android Anda, lalu pilih opsi Pindai kode QR . Ini akan membuka kamera. Fokuskan kode QR yang ditampilkan di konsol. Ini akan memindai Kode QR. Memindai Kode QR akan memicu pembuatan aplikasi dan kemudian menyinkronkan aplikasi ke perangkat seperti yang diberikan di bawah ini -
Copying template files...
Platform android successfully added. v6.3.1
Preparing project...
File change detected. Starting incremental webpack compilation...
webpack is watching the files…
Hash: 1f38aaf6fcda4e082b88
Version: webpack 4.27.1
Time: 9333ms
Built at: 01/04/2020 4:22:31 PM
Asset Size Chunks Chunk Names
0.js 8.32 KiB 0 [emitted]
bundle.js 22.9 KiB bundle [emitted] bundle
package.json 112 bytes [emitted]
runtime.js 73 KiB runtime [emitted] runtime
tns-java-classes.js 0 bytes [emitted]
vendor.js 345 KiB vendor [emitted] vendor
Entrypoint bundle = runtime.js vendor.js bundle.js
[../$$_lazy_route_resource lazy recursive] ../$$_lazy_route_resource lazy
namespace object 160 bytes {bundle} [built] [./app.css] 1.18 KiB {bundle} [built] [./app/app-routing.module.ts] 688 bytes {bundle} [built]
[./app/app.component.html] 62 bytes {bundle} [built]
[./app/app.component.ts] 354 bytes {bundle} [built]
[./app/app.module.ts] 3.22 KiB {bundle} [built]
[./app/home/home.module.ts] 710 bytes {0} [built]
[./main.ts] 1.84 KiB {bundle} [built]
[@angular/core] external "@angular/core" 42 bytes {bundle} [built] [nativescript-angular/nativescript.module] external "nativescript-
angular/nativescript.module" 42 bytes {bundle} [built]
[nativescript-angular/platform] external "nativescript-angular/platform" 42
bytes {bundle} [built] [tns-core-modules/application] external "tns-core-
modules/application" 42 bytes {bundle} [built]
[tns-core-modules/bundle-entry-points] external "tns-core-modules/bundle-entry-points" 42
bytes {bundle} [built]
[tns-core-modules/ui/frame] external "tns-core-
modules/ui/frame" 42 bytes {bundle} [built]
[tns-core-modules/ui/frame/activity] external "tns-core-
modules/ui/frame/activity" 42 bytes {bundle} [built]
+ 15 hidden modules Webpack compilation complete. Watching for file changes.
Webpack build done!
Project successfully prepared (android)
Start sending initial files for device Bala Honor Holly (ff5e8622-7a01-4f9c-
b02f-3dc6d4ee0e1f).
Successfully sent initial files for device Bala Honor Holly (ff5e8622-7a01-4f9c-b02f-3dc6d4ee0e1f).
LOG from device Bala Honor Holly: HMR: Hot Module Replacement Enabled. Waiting for signal.
LOG from device Bala Honor Holly: Angular is running in the development mode.
Call enableProdMode() to enable the production mode.
Keluaran
Setelah memindai, Anda akan melihat BlankNgApp di perangkat Anda. Itu ditunjukkan di bawah ini -
Jalankan aplikasi Anda di perangkat
Jika Anda ingin menguji perangkat yang terhubung dalam aplikasi Anda, Anda dapat memverifikasinya menggunakan sintaks di bawah ini -
'tns device <Platform> --available-devices'
Setelah itu, Anda dapat menjalankan aplikasi Anda menggunakan perintah di bawah ini -
tns run
Perintah di atas digunakan untuk membangun aplikasi Anda secara lokal dan menginstal di perangkat Android atau iOS. Jika Anda ingin menjalankan aplikasi Anda di simulator Android, ketikkan perintah di bawah ini -
tns run android
Untuk perangkat iOS, Anda dapat mengikuti perintah di bawah ini -
tns run ios
Ini akan menginisialisasi aplikasi di perangkat Android / iOS. Kami akan membahas ini lebih detail di bab-bab selanjutnya.
LiveSync
NativeScript menyediakan sinkronisasi perubahan waktu nyata dalam aplikasi ke aplikasi pratinjau. Biarkan kami membuka proyek menggunakan editor favorit Anda (Visual Studio Code akan menjadi pilihan ideal untuk visualisasi yang lebih baik). Mari kita tambahkan beberapa perubahan dalam kode kita dan lihat bagaimana itu akan dideteksi di LiveSync.
Sekarang buka file app.css dan itu akan memiliki konten di bawah ini -
@import "~@nativescript/theme/css/core.css";
@import "~@nativescript/theme/css/blue.css";
/* Place any CSS rules you want to apply on both iOS and Android here.
This is where the vast majority of your CSS code goes. */
Di sini, pernyataan import memberi tahu skema warna aplikasi kita. Mari kita ubah skema warna biru menjadibrown skema warna seperti yang ditentukan di bawah ini -
@import "~@nativescript/theme/css/core.css";
@import "~@nativescript/theme/css/brown.css";
/* Place any CSS rules you want to apply on both iOS and Android here.
This is where the vast majority of your CSS code goes. */
Aplikasi di perangkat kami menyegarkan dan Anda akan melihat ActionBar warna coklat seperti yang ditunjukkan di bawah ini -
Keluaran
Di bawah ini adalah Halaman Beranda BlankNgApp - Tema Coklat.