+
95
-

回答

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

网友回复

我知道答案,我要回答