Native.js(NJS)是一项技术,它允许您在 JavaScript 中编写原生移动应用的代码。通过将手机操作系统的原生对象映射为 JavaScript 对象,NJS 扩展了 HTML5 的能力,让您能够使用 JavaScript 实现以前只能通过原生插件实现的功能。NJS 提高了移动应用开发的效率,使一个 Web 工程师能够完成以前需要 iOS、Android 和 Web 工程师一起完成的应用开发任务。
与传统的原生开发不同,使用 NJS 不需要配置原生开发环境,调试和打包都可以在 HBuilder 中完成,无需像使用 Xcode 或 Android Studio 那样复杂。此外,NJS 的代码示例丰富,使不熟悉原生 API 的开发者也能轻松使用。需要注意的是,NJS 并不是一个需要下载和引入到页面的 JavaScript 库,而是集成在 5+ Runtime 中的运行环境,可用于通过 HBuilder 打包的应用或流应用。目前,NJS 技术不能在普通手机浏览器中直接运行,但它大幅扩展了 HTML5 的能力范围,使得以前只能通过原生或混合应用开发的功能现在可以用 JavaScript 来实现。
原生插件是指通过使用原生代码(通常是 Java、Objective-C、Swift 等)编写的功能模块,它们可以通过 JavaScript 代码来调用。原生插件通常包括与设备硬件或操作系统相关的功能,如相机、地理位置、通知等。在 Uni-App 中,您可以使用原生插件来扩展应用的功能。
写原生插件你必须熟悉andriod或iphone的原生app开发,通过原生语言开发插件提供该uniapp在js中进行调用。
nativejs示例:获取手机wifi热点列表
// 主窗体 var MainActivity = plus.android.runtimeMainActivity() // 上下文 var Context = plus.android.importClass('android.content.Context') // 导入WIFI管理 和 WIFI 信息 的class plus.android.importClass("android.net.wifi.WifiManager") plus.android.importClass("android.net.wifi.WifiInfo") plus.android.importClass("android.net.wifi.ScanResult") plus.android.importClass("java.util.ArrayList") // 获取 WIFI 管理实例 var wifiManager = MainActivity.getSystemService(Context.WIFI_SERVICE) // 获取当前连接WIFI的信息 //var info = wifiManager.getConnectionInfo() // 获取当前 WIFI 连接的 SSID (WIFI 名称) //var ssid = info.getSSID() // 这里的 获取到的名称 是 带 双引号的 如 "cmcc" // 所以我们这里处理一下 //ssid = ssid.replace(/(^\"*)|(\"*$)/g, "") var resultList = wifiManager.getScanResults(), len = resultList.size() for(var i = 0; i < len; i++) { console.log(resultList.get(i).plusGetAttribute('SSID')) }
更多nativejs示例代码合集:https://ask.dcloud.net.cn/article/114
网友回复