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
网友回复


