1. 程式人生 > >Native.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”)