欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Native.js技术简介及个人总结

程序员文章站 2022-08-05 20:20:35
native.js技术简介+总结收集(个人观点) native.js技术,简称njs,是一种将手机操作的原生对象转义,映射为js对象,在js里编写原生代码的技术。 如果说node.js把js扩展到...

    native.js技术简介+总结收集(个人观点)

    native.js技术,简称njs,是一种将手机操作的原生对象转义,映射为js对象,在js里编写原生代码的技术。

    如果说node.js把js扩展到服务器世界,那么native.js则把js扩展到手机app的原生世界。

    html/js/css全部语法只有7万多,而原生语法有几十万,native.js大幅提升了html5的能力。

    njs突破了的功能限制,也不再需要像hybrid那样由原生语言开发插件才能补足浏览器欠缺的功能。

    njs编写的代码,最终需要在hbuilder里打包发行为app安装包,或者在支持native.js技术的浏览器里运行

    再次强调,native.js不是一个js库,不需要下载引入到页面的script中,也不像nodejs那样有单独的运行环境,native.js的运行环境是集成在5+runtime里的,使用hbuilder打包的app或流应用都可以直接使用native.js。

    技术要求

    由于njs是直接调用native api,需要对native api有一定了解,知道所需要的功能调用了哪些原生api,能看懂原生代码并参考原生代码修改为js代码。
    否则只能直接copy别人写好的njs代码。

    判断平台

    native api具有平台依赖性,所以需要通过以下方式判断当前的运行平台:

    function judgeplatform(){
        switch ( plus.os.name ) {
            case "android":
            // android平台: plus.android.*
            break;
            case "ios":
            // ios平台: plus.ios.*
            break;
            default:
            // 其它平台
            break;
        }
    }
    

    其他转换

    android原生应用的主activity对象 转为plus.android.runtimemainactivity()

    android的主activity对象是启动应用时自动创建的,不是代码创建,此时通过plus.android.runtimemainactivity()方法获取该activity对象

    objective-c方法冒号剔除

    [pos setpositionx:(int)x y:(int)y;] 转为 pos.setpositionxy(x,y);

    oc语法中方法的定义格式为:
    “(返回值类型) 函数名: (参数1类型) 形参1 参数2名称: (参数2类型) 形参2”
    方法的完整名称为: “函数名:参数2名称:”。

    如:“(void)setpositionx:(int)x y:(int)y;”,方法的完整名称****为“setpositionx:y:”,调用时语法为:“[pos setpositionx:x y:y];”。
    在js语法中函数名称不能包含“:”字符,所以oc对象的方法名映射成njs对象方法名时将其中的“:”字符自动删除,上面方法名映射为“setpositionxy”,在njs调用的语法为:“pos.setpositionxy(x,y);”。

    文件路径转换

    web开发里使用的image/1.png是该web工程的相对路径,而原生api中经常需要使用绝对路径,比如/sdcard/apptest/image/1.png,此时使用这个扩展方法来完成转换:plus.io.convertlocalfilesystemurl(“image/1.png”)