?上最好用的js bridge -DSBridge2.0更新了!

wendux發表於2017-06-13

DSBridge是目前地球上使用最簡單並且支援同步呼叫的跨平臺(IOS/Android) javascript bridge. 自1.0釋出之後,獲得了大量的反饋和支援,為使DSBridge更易用、更強大,進行2.0版本升級。

專案地址

github.com/wendux/DSBr… (Android)

github.com/wendux/DSBr… (IOS)

更新記錄

  1. 廢棄getJsBridge方法,提供內建物件dsBridge;

    在1.0中呼叫Native方法的步驟如下:

    var bridge = getJsBridge();//獲取bridge
    var str=bridge.call("testSyn", {msg: "testSyn"}); //通過bridge物件呼叫native方法複製程式碼

    在2.0中可以直接使用dsBridge物件一步到位:

    var str=dsBridge.call("testSyn", {msg: "testSyn"});複製程式碼
  2. 支援多次返回

    試想這樣一個場景,native提供下載檔案能力,js在呼叫native下載模組式需要顯示下載進度到網頁上。

    在1.0中實現方式大概如下:

    var bridge = getJsBridge();//獲取bridge
    //啟動下載
    var str=bridge.call("download", {url: "xxx"},function(result){
      //下載結束
    });
    
    //註冊一個全域性函式,每當native有新進度訊息時通過callHandler呼叫
    window.onDownloadProgress=function(progress){
      //更新顯示進度
    }複製程式碼

    可以看到,處理下載進度的只能通過註冊一個js回撥,然後當進度更新時,通過native不停的呼叫這個js回撥, 而這種方法顯然有點繞,優雅的處理方式應該是下面這個樣子:

    var str=dsBridge.call("download", {url: "xxx"},function(result){
      if(result.status==0){
         //下載結束
      }else{
        setProgress(result.progress) //未結束,更新進度
      }
    });複製程式碼

    對,2.0中你就可以這麼做!需要natvie簡單配合(多次返回資料),具體的示例請參考demo中“多次回撥” callProgress的示例或點此 DSBridge例項-在網頁中展示Native進度

  3. JS API註冊標準化

    1.0中供Native呼叫的js 函式只需要宣告為全域性函式即可,而無需註冊;但是,在2.0中,為了減少避免js全域性命名衝突和使js api註冊更明確,我們提供了一個有儀式感的註冊介面register:

    JS中定義一個加法函式供Native呼叫:

     dsBridge.register('addValue',function(r,l){
             return r+l;
     })複製程式碼

使用

使用方法見github專案主頁,原始碼附有示例,供開發者參考。

最後

如果你喜歡,歡迎去github star一下,頂一下哦,多謝支援! github.com/wendux/DSBr…
github.com/wendux/DSBr…

相關文章