javascript interop pada aplikasi blazor – part 5

15
JavaScript Interop Pada Aplikasi Blazor Part 5 Junindar, ST, MCPD, MOS, MCT, MVP .NET JavaScript Interop Pada Aplikasi Blazor – Part 5 Junindar, ST, MCPD, MOS, MCT, MVP [email protected] http://junindar.blogspot.com Abstrak Blazor adalah Web Framework yang bersifat Open Source dimana aplikasi Web yang bersifat client-side interactive dapat dikembangkan dengan menggunakan .Net (C#) dan HTML. Pada saat ini C# biasa digunakan untuk melakukan proses back-end dari aplikasi web. Dengan menggunakan fitur baru dari ASP.NET Core yaitu Blazor, kita dapat membangun interactive WEB dengan menggunakan C# dan .NET . Code .Net berjalan pada WebAssembly, yang artinya kita dapat menjalankan “NET“ didalam browser (Client) tanpa harus menginstall plugin seperti Silverlight, Java mapun Flash. Lisensi Dokumen: Copyright © 2003 IlmuKomputer.Com Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang, kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.

Upload: others

Post on 31-Jan-2022

12 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

JavaScript Interop Pada Aplikasi

Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP

[email protected]

http://junindar.blogspot.com

Abstrak

Blazor adalah Web Framework yang bersifat Open Source dimana aplikasi Web yang

bersifat client-side interactive dapat dikembangkan dengan menggunakan .Net (C#) dan

HTML. Pada saat ini C# biasa digunakan untuk melakukan proses back-end dari aplikasi

web. Dengan menggunakan fitur baru dari ASP.NET Core yaitu Blazor, kita dapat

membangun interactive WEB dengan menggunakan C# dan .NET .

Code .Net berjalan pada WebAssembly, yang artinya kita dapat menjalankan “NET“

didalam browser (Client) tanpa harus menginstall plugin seperti Silverlight, Java mapun

Flash.

Lisensi Dokumen: Copyright © 2003 IlmuKomputer.Com

Seluruh dokumen di IlmuKomputer.Com dapat digunakan, dimodifikasi dan

disebarkan secara bebas untuk tujuan bukan komersial (nonprofit), dengan syarat

tidak menghapus atau merubah atribut penulis dan pernyataan copyright yang

disertakan dalam setiap dokumen. Tidak diperbolehkan melakukan penulisan ulang,

kecuali mendapatkan ijin terlebih dahulu dari IlmuKomputer.Com.

Page 2: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Pendahuluan

Untuk membuat aplikasi pada Blazor, kita menggunakan C# dan Razor. Razor

merupakan kombinasi dari HTML dan C#. Dan output dari blazor aplikasi di eksekusi

oleh .Net runtime.

Seperti kita ketahui, terdapat dua model hosting pada aplikasi blazor, yang pertama

WebAssembly dan yang kedua adalah Server.

Untuk WebAssembly aplikasi dan .Net runtime berjalan pada sisi client didalam web

browser. .Net runtime yang digunakan pada browser berdasarkan WebAssembly atau

yang biasa disebut WASM. WASM adalah instruksi berformat binary yang dieksekusi

Javascript runtime didalam browser. Jadi ini merupakan cara kerja dari Client Side

hosting model pada blazor.

Page 3: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Kita dapat juga menjalankan blazor tanpa menggunakan WebAssembly, yaitu dengan

menggunakan Server-Side hosting model. Yang artinya aplikasi blazor tidak dijalankan

didalam browser, tetapi oleh server. Untuk melakukan render user interface pada

browser, aplikasi berkomunikasi melalui SignalR dengan JavaScript runtime.

Browser juga memiliki browser API yang berbeda-beda, seperti Document Object Model

(DOM). Dengan menggunkan DOM kita dapat mengkases dan mengganti elemen HTML

pada aplikasi web. Browser API, seperti DOM ini dapat diakses dengan menggunakan

JavaScript Runtime. Yang perlu diketahui, tanpa JavaScript Interop kita hanya dapat

menggunakan fungsi yang hanya disediakan oleh Blazor Framework dan .Net. Lalu

bagaimana jika kita ingin mengakses browser API dari code yang tidak disediakan oleh

Blazor Framework? Untuk hal ini kita perlu memanggil code pada JavaScript yang akan

mengakses Browser Api.

Blazor mendukung JavaScript Interoperabality (JavaScript Interop), dimana kita dapat

mengakses code pada JavaScript. Dari sini dapat kita ketahui, kapan kita harus

menggunakan JavaScript pada aplikasi Blazor. Dimana jika aplikasi kita menggunakan

fungsi-fungsi Browser API seperti DOM, Local Storage, Online Status yang tidak

disediakan oleh Blazor Framework.

Page 4: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Pada artikel sebelumnya telah kita bahas bagaimana melakukan invoke baik dari .Net

maupun Javascript, dan dilanjutkan dengan menggunakan API pada browser. Semuanya

dilakukan didalam satu project. Pada pembahasan kali ini kita akan membuat Razor Class

Library dimana pada Class Library ini kita gunakan invoke pada .Net Method.

Sebelumnya pastikan untuk menyelesaikan latihan-latihan pada artikel sebelumnya (Part

1-4). Razor Class Library adalah ASP.NET Core Library yang berisi page, view, view

component dan fungsi-fungsi web application lainnya dengan kode nya masing-masing.

Seperti library pada umumnya, library tidak berjalan secara independen tetapi digunakan

oleh aplikasi lainya untuk memanfaatkan fungsi-fungsi pada library tersebut. Razor Class

Library memudahkan dalam berbagi funsgi code pada web aplikasi dengan element UI.

Selain itu manfaat dari Razor Class Library kita dapat menggunakannya pada multiple

project, tanpa harus membuat ulang fungsi-fungsinya (Reusable).

Pada artikel ini kita akan membuat sebuah komponen yang berfungsi untuk menampilkan

indikator apakah browser online atau offline, seperti pada gambar dibawah ini.

Page 5: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Ikuti langkah-langkah dibawah ini untuk memudahkan dalam memahami isi artikel.

- Tambahkan sebuah Razor Class Library dengan cara Add New Project pada solution.

Lalu pilih “Razor Class Library” pada project template

Ganti Project Name menjadi “Blazor.BrowserStatusLibrary”

Page 6: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Berikut merupakan file-file yang terdapat pada Razor Class Library. Disini kita akan

mengahapus file-file yang tidak digunakan. Seperti “ExampleJsInterop.cs”,

“Component1.razor”, “background.png”. Lalu ganti “exampleJsInterop.js” menjadi

“statusCheck.js” dan hapus seluruh sintaks yang ada pada file tersebut.

- Buka file “_Imports.razor” dan ketikkan sintaks seperti dibawah

@using Microsoft.JSInterop

Disini kita melakukan import “Microsoft.JSInterop”, sehingga kita tidak perlu lagi

melakukannya pada setiap razor component yang ada pada project ini.

- Tambahkan sebuah file css (styles.css) dan ketikkan sintaksnya seperti dibawah ini.

.isOnline { background-color: #23cfa7; color: white; position: absolute; width: 250px; padding: 2px 5px; } .isOffline { background-color: lightcoral; color: white; position: absolute; width: 250px; padding: 2px 5px; }

Disini kita buat dua buah css class (isOnline dan isOffline) sebagai indikator

online/offline, yang akan digunakan pada razor komponen sehingga halaman web

akan menjadi seperti pada gambar diatas.

Page 7: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

- Buka file javascript (statusCheck.js) dan ketikkan sintaks seperti dibawah.

window.browserCheckLib = { registerOnlineHandler: function (dotNetObjectRef) { function onlineHandler() { dotNetObjectRef.invokeMethodAsync("SetOnlineStatus", navigator.onLine); }; // Set up initial values onlineHandler(); // Register event handler window.addEventListener("online", onlineHandler); window.addEventListener("offline", onlineHandler); } };

Pada sintaks javascript diatas, kita telah membuat sebuah global property

(browserCheckLib) yang memiliki objek “registerOnlineHandler”. Didalam

“registerOnlineHandler” terdapat function onlineHandler yang berfungsi untuk

memanggil method pada .Net.. Pada onlineHandler function kita gunakan property

navigator.onLine sebagai paramater yang akan dikirimkan ke .Net method dimana

tipenya adalah boolean.

Untuk setup diawal kita panggil onlineHandler function, dan dilanjutkan dengan

melakukan register onlineHandler function pada event (online dan offline) javascript.

- Tambahkan sebuah razor component dengan nama “BrowserStatusIndicator.razor”.

Page 8: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

@using System.Threading.Tasks @inject IJSRuntime JSRuntime @if (_isOnline) { <div class="isOnline">Online</div> } else { <div class="isOffline">Offline</div> } @code { private bool _isOnline = true; protected override async Task OnAfterRenderAsync(bool firstRender) { if (firstRender) { var dotNetObjectReference = DotNetObjectReference.Create(this); await JSRuntime.InvokeVoidAsync("browserCheckLib.registerOnlineHandler", dotNetObjectReference); } } [JSInvokable] public void SetOnlineStatus(bool isOnline) { _isOnline = isOnline; StateHasChanged(); } }

Mari kita lihat sintaks didalam code block, disana terdapat sebuah field _isOnline

dengan default valuenya adalah true. isOnline field ini digunakan didalam statement

pada razor code. Jika true akan menampikan “div” dengan text “Online” dengan css

class “isOnline” dan jika false menampikan “div” dengan text “Offline” dan css class

“isOffline”.

SetOnlineStatus adalah method yang akan dipanggil dari javascript. Pada method ini

nilai dari field _isOnline akan diganti oleh nilai dari paramater isOnline. Lalu

dilanjutkan dengan memanngil method “StateHasChanged” untuk melakukan force

render pada component.

Setelah itu kita akan melakukan overwrite “OnAfterRenderAsync” method. Dimana

pada method ini kita panggil javascript function

(browserCheckLib.registerOnlineHandler) yang telah kita buat sebelumnya dengan

kondisi jika parameter firstRender adalah true.

Setelah mengikuti langkah-langkah diatas, maka kita telah selesai membuat sebuah

Razor Class Library yang akan digunakan pada project di artikel sebelumnya.

- Buka project pada artikel sebelumnya, lalu klik kanan pada project > Add > Project

Reference.

Page 9: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Lalu pada dialog Reference Manager, pilih class library yang telah kita buat diatas

(Blazor.BrowserStatusLibrary).

Buka file “_import.razor” dan import class library tersebut, seperti pada sintaks

dibawah.

@using Blazor.BrowserStatusLibrary

Pada Razor Class Library diatas, kita memiliki sebuah css dan javascript file. Oleh

karena itu kita perlu menambahkan reference untuk kedua file tersebut pada project

ini.

- Buka file “_Host.cshtml” dan tambahkan reference seperti dibawah.

CSS

<link href="_content/Blazor.BrowserStatusLibrary/styles.css" rel="stylesheet">

Javascript

<script src="_content/Blazor.BrowserStatusLibrary/statusCheck.js"></script>

- Dan yang terakhir adalah dengan menambahkan razor component pada Class Library

di dalam file “NavMenu.razor”.

<BrowserStatusIndicator></BrowserStatusIndicator>

Jalankan program untuk melihat hasilnya, untuk default srazor component akan

berwarna hijau dengan text Online. Lalu tekan F12 untuk membuka developer tools.

Selanjutnya pada tab Network ganti Network Throttling menjadi offline. Pastikan

status pada halaman web berubah juga menjadi offline.

Page 10: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Page 11: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Penutup

Sedangkan untuk memudahkan dalam memahami isi artikel, maka penulis juga

menyertakan dengan full source code project latihan ini, dan dapat di download disini

http://junindar.blogspot.com/2021/11/javascript-interop-pada-aplikasi-blazor_15.html

Page 12: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Referensi

https://play.google.com/store/books/details?id=G4tFDgAAQBAJ

https://play.google.com/store/books/details?id=VSLiDQAAQBAJ

Page 13: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

https://play.google.com/store/books/details/Junindar_Xamarin_Forms?id=6Wg-DwAAQBAJ

https://play.google.com/store/books/details/Junindar_C_dan_Dapper_Membangun_Aplikasi_POS_P

oint?id=6TErDwAAQBAJ

Page 14: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

https://play.google.com/store/books/details/Junindar_ASP_NET_MVC_Membangun_Aplikasi_Web_

Lebih?id=XLlyDwAAQBAJ

https://play.google.com/store/books/details/Junindar_ASP_NET_CORE_MVC?id=x

Ee5DwAAQBAJ

https://play.google.com/store/books/details/Junindar_ASP_NET_CORE?id=COUWEAA

AQBAJ

Page 15: JavaScript Interop Pada Aplikasi Blazor – Part 5

JavaScript Interop Pada Aplikasi Blazor – Part 5

Junindar, ST, MCPD, MOS, MCT, MVP .NET

Biografi Penulis.

Junindar Lahir di Tanjung Pinang, 21 Juni 1982. Menyelesaikan

Program S1 pada jurusan Teknik Inscreenatika di Sekolah Tinggi

Sains dan Teknologi Indonesia (ST-INTEN-Bandung). Junindar

mendapatkan Award Microsoft MVP VB pertanggal 1 oktober

2009 hingga saat ini. Senang mengutak-atik computer yang

berkaitan dengan bahasa pemrograman. Keahlian, sedikit mengerti

beberapa bahasa pemrograman seperti : VB.Net, C#, SharePoint,

ASP.NET, VBA. Reporting: Crystal Report dan Report Builder.

Database: MS Access, MY SQL dan SQL Server. Simulation /

Modeling Packages: Visio Enterprise, Rational Rose dan Power

Designer. Dan senang bermain gitar, karena untuk bisa menjadi

pemain gitar dan seorang programmer sama-sama membutuhkan

seni. Pada saat ini bekerja di salah satu Perusahaan Consulting

dan Project Management di Malaysia sebagai Senior Consultant.

Memiliki beberapa sertifikasi dari Microsoft yaitu Microsoft

Certified Professional Developer (MCPD – SharePoint 2010),

MOS (Microsoft Office Specialist) dan MCT (Microsoft Certified

Trainer) Mempunyai moto hidup: “Jauh lebih baik menjadi

Orang Bodoh yang giat belajar, dari pada orang Pintar yang

tidak pernah mengimplementasikan ilmunya”.