


Bagaimanakah pelaksanaan uniapp menggunakan JSBridge untuk berinteraksi dengan asli
uniapp melaksanakan cara menggunakan JSBridge untuk berinteraksi dengan asli, yang memerlukan contoh kod khusus
1 Pengenalan latar belakang
Dalam pembangunan aplikasi mudah alih, kadangkala perlu berinteraksi dengan persekitaran asli, seperti memanggil beberapa fungsi asli. atau mendapatkan beberapa data asli. Sebagai rangka kerja pembangunan aplikasi mudah alih merentas platform, uniapp menyediakan cara yang mudah untuk berinteraksi dengan peranti asli, menggunakan JSBridge untuk berkomunikasi.
JSBridge ialah penyelesaian teknikal untuk bahagian hadapan untuk berinteraksi dengan hujung natif mudah alih Dengan melaksanakan jambatan pada bahagian hadapan dan hujung asli, bahagian hadapan boleh memanggil kaedah asli dan mendapatkan data asli masa yang sama, hujung asli juga boleh dihantar ke bahagian hadapan melalui maklumat jambatan.
2. Langkah-langkah pelaksanaan JSBridge
- Buat fail js baharu dalam projek uniapp dan namakannya JSBridge.js. Fail ini akan berfungsi sebagai jambatan antara interaksi bahagian hadapan dan asli.
- Tentukan objek global dalam fail JSBridge.js untuk menyimpan mesej dan fungsi panggil balik antara bahagian hadapan dan asli. Kod sampel adalah seperti berikut:
// JSBridge.js let messageHandlers = {}; // 存储前端和原生之间的消息和回调函数 // 注册消息处理函数,前端通过调用此函数来注册对应的回调函数 function registerHandler(name, handler) { messageHandlers[name] = handler; } // 发送消息到原生 function sendMessageToNative(name, data, callback) { let message = { name: name, data: data }; // 注册回调函数 if (callback) { let callbackId = 'cb_' + Date.now(); message.callbackId = callbackId; messageHandlers[callbackId] = callback; } // 向原生发送消息 window.webkit.messageHandlers[name].postMessage(message); } // 处理原生发送过来的消息 function handleMessageFromNative(message) { let handler = messageHandlers[message.name]; if (handler) { handler(message.data, function(response) { sendMessageToNative(message.callbackId, response); // 发送回调消息给原生 }); } } window.messageHandlers = messageHandlers; window.registerHandler = registerHandler; window.sendMessageToNative = sendMessageToNative; window.handleMessageFromNative = handleMessageFromNative;
- Perkenalkan JSBridge.js ke dalam fail
main.js
dalam projek uniapp dan daftarkan fungsi pemprosesan mesej Kod sampel adalah seperti berikut:main.js
文件中引入JSBridge.js,并注册消息处理函数,示例代码如下:
// main.js import JSBridge from './JSBridge.js'; // 注册消息处理函数,前端通过调用此函数来注册对应的回调函数 JSBridge.registerHandler('getUserInfo', function(data, callback) { console.log('前端收到getUserInfo消息:', data); // 假设需要获取用户信息,可以通过uniapp的API来实现 let userInfo = uni.getUserInfo(); // 返回获取到的用户信息给原生 callback(userInfo); }); // 假设页面上有一个按钮,点击按钮时调用原生的方法 document.getElementById('btn').addEventListener('click', function() { // 发送消息到原生 JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' }); });
- 在原生环境中实现与前端交互的功能和逻辑。示例代码如下:
// 在iOS原生代码中 import WebKit class ViewController: UIViewController { var webView: WKWebView! override func viewDidLoad() { super.viewDidLoad() // 创建WebView webView = WKWebView(frame: CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)) view.addSubview(webView) // 加载uniapp的HTML文件 if let url = Bundle.main.url(forResource: "uniapp", withExtension: "html") { webView.loadFileURL(url, allowingReadAccessTo: url) } // 注册JSBridge处理函数,用于处理前端发送来的消息 webView.configuration.userContentController.add(self, name: "getUserInfo") webView.configuration.userContentController.add(self, name: "showAlert") } } extension ViewController: WKScriptMessageHandler { func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { if let body = message.body as? [String: Any] { let name = message.name if name == "getUserInfo" { print("原生收到getUserInfo消息:", body) // TODO: 获取原生的用户信息 // 返回用户信息给前端 let userInfo = [ "name": "John", "age": 20 ] let response = [ "data": userInfo ] let javascript = "window.handleMessageFromNative((response))" webView.evaluateJavaScript(javascript, completionHandler: nil) } else if name == "showAlert" { print("原生收到showAlert消息:", body) // 假设实现一个弹窗功能 let title = body["title"] as? String ?? "" let message = body["message"] as? String ?? "" let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: nil)) present(alertController, animated: true, completion: nil) } } } }
三、使用JSBridge进行前端与原生交互
通过上述的步骤,我们已经实现了基本的JSBridge桥梁和消息处理函数。在前端代码中,我们可以调用JSBridge.sendMessageToNative()
方法向原生发送消息,同时也可以注册对应的消息处理函数,如示例中的JSBridge.registerHandler()
。在原生代码中,我们通过userContentController.add()
方法注册处理函数,用于接收前端发送的消息,并实现相应的功能。
在页面中,当点击按钮时,调用JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' })
方法发送消息到原生,原生接收到消息后,弹出一个带有标题和内容的弹窗。另外,当前端需要获取用户信息时,调用JSBridge.sendMessageToNative('getUserInfo')
Laksanakan fungsi dan logik berinteraksi dengan bahagian hadapan dalam persekitaran asli. Kod sampel adalah seperti berikut:
rrreee
3. Gunakan JSBridge untuk interaksi hadapan dan asli 🎜🎜Melalui langkah di atas, kami telah melaksanakan jambatan JSBridge asas dan fungsi pemprosesan mesej. Dalam kod bahagian hadapan, kami boleh memanggil kaedahJSBridge.sendMessageToNative()
untuk menghantar mesej secara asli, dan kami juga boleh mendaftarkan fungsi pemprosesan mesej yang sepadan, seperti JSBridge.registerHandler()
dalam contoh. Dalam kod asli, kami mendaftarkan fungsi pemprosesan melalui kaedah userContentController.add()
untuk menerima mesej yang dihantar oleh bahagian hadapan dan melaksanakan fungsi yang sepadan. 🎜🎜Dalam halaman, apabila butang diklik, panggil kaedah JSBridge.sendMessageToNative('showAlert', { title: 'Hello', message: 'World' })
untuk menghantar mesej kepada asli, dan orang asli akan menerimanya Selepas mesej, tetingkap pop timbul dengan tajuk dan kandungan muncul. Di samping itu, apabila bahagian hadapan perlu mendapatkan maklumat pengguna, ia memanggil kaedah JSBridge.sendMessageToNative('getUserInfo')
untuk menghantar mesej kepada orang asli Selepas orang asli mengembalikan maklumat pengguna, itu front-end mendapatkan data melalui fungsi panggil balik dan memprosesnya. 🎜🎜Ringkasnya, menggunakan JSBridge boleh merealisasikan interaksi antara uniapp dan persekitaran asli dengan mudah, dan boleh melaksanakan fungsi dan logiknya sendiri masing-masing di bahagian hadapan dan asli. Dengan mendaftarkan fungsi pemprosesan mesej, mesej boleh dihantar dan diproses secara fleksibel. 🎜🎜Di atas ialah pengenalan ringkas dan contoh kod tentang uniapp menggunakan JSBridge untuk melaksanakan interaksi asli saya harap ia akan membantu anda. 🎜Atas ialah kandungan terperinci Bagaimanakah pelaksanaan uniapp menggunakan JSBridge untuk berinteraksi dengan asli. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Langkah untuk melancarkan pratonton projek UniApp dalam WebStorm: Pasang pemalam Alat Pembangunan UniApp Sambung ke tetapan peranti Pratonton pelancaran WebSocket

Secara umumnya, uni-app adalah lebih baik apabila fungsi asli yang kompleks diperlukan; Selain itu, uni-app mempunyai: 1. Sokongan Vue.js/JavaScript 2. Komponen asli yang kaya 3. Ekosistem yang baik; Kelemahannya ialah: 1. Isu prestasi; 2. Kesukaran dalam menyesuaikan antara muka. MUI mempunyai: 1. Sokongan Reka Bentuk Bahan 2. Fleksibiliti tinggi 3. Perpustakaan komponen/tema yang luas. Kelemahannya ialah: 1. Kebergantungan CSS; 2. Tidak menyediakan komponen asli 3. Ekosistem kecil.

Dalam sistem win11, kami boleh mendayakan berbilang monitor untuk menggunakan sistem yang sama dan beroperasi bersama-sama dengan menghidupkan interaksi skrin pisah Walau bagaimanapun, ramai rakan tidak tahu cara menghidupkan interaksi skrin pisah tetapan sistem yang berikut ialah Bangun dan belajar. Bagaimana untuk membuka interaksi skrin belah dalam win11 1. Klik pada menu Mula dan cari "Tetapan" 2. Kemudian cari tetapan "Sistem" di sana. 3. Selepas memasukkan tetapan sistem, pilih "Paparan" di sebelah kiri 4. Kemudian pilih "Perluaskan paparan ini" dalam berbilang paparan di sebelah kanan.

UniApp menggunakan HBuilder

UniApp mempunyai banyak kemudahan sebagai rangka kerja pembangunan merentas platform, tetapi kelemahannya juga jelas: prestasi dihadkan oleh mod pembangunan hibrid, mengakibatkan kelajuan pembukaan yang lemah, pemaparan halaman dan tindak balas interaktif. Ekosistem tidak sempurna dan terdapat beberapa komponen dan perpustakaan dalam bidang tertentu, yang mengehadkan kreativiti dan merealisasikan fungsi kompleks. Isu keserasian pada platform berbeza terdedah kepada perbezaan gaya dan sokongan API yang tidak konsisten. Mekanisme keselamatan WebView adalah berbeza daripada aplikasi asli, yang mungkin mengurangkan keselamatan aplikasi. Keluaran dan kemas kini aplikasi yang menyokong berbilang platform pada masa yang sama memerlukan berbilang kompilasi dan pakej, meningkatkan kos pembangunan dan penyelenggaraan.

pembangunan uniapp memerlukan asas berikut: teknologi bahagian hadapan (HTML, CSS, JavaScript) pengetahuan pembangunan mudah alih (platform iOS dan Android) Node.js asas lain (alat kawalan versi, IDE, simulator pembangunan mudah alih atau pengalaman penyahpepijatan mesin sebenar)

Apabila memilih antara UniApp dan pembangunan asli, anda harus mempertimbangkan kos pembangunan, prestasi, pengalaman pengguna dan fleksibiliti. Kelebihan UniApp ialah pembangunan merentas platform, lelaran pantas, pembelajaran mudah dan pemalam terbina dalam, manakala pembangunan asli lebih unggul dalam prestasi, kestabilan, pengalaman asli dan kebolehskalaan. Timbang kebaikan dan keburukan berdasarkan keperluan projek khusus UniApp sesuai untuk pemula, dan pembangunan asli sesuai untuk aplikasi kompleks yang mengejar prestasi tinggi dan pengalaman yang lancar.

UniApp adalah berdasarkan Vue.js, dan Flutter adalah berdasarkan Dart kedua-duanya menyokong pembangunan merentas platform. UniApp menyediakan komponen yang kaya dan pembangunan mudah, tetapi prestasinya dihadkan oleh WebView Flutter menggunakan enjin pemaparan asli dengan prestasi cemerlang, tetapi lebih sukar untuk dibangunkan. UniApp mempunyai komuniti Cina yang aktif, dan Flutter mempunyai komuniti yang besar dan global. UniApp sesuai untuk senario dengan pembangunan pesat dan keperluan prestasi rendah Flutter sesuai untuk aplikasi kompleks dengan penyesuaian tinggi dan prestasi tinggi.
