angular-easyfb v0.3.0 released!

https://github.com/pc035860/angular-easyfb/releases/tag/v0.3.0

  • 可以自訂 FB JS SDK 的載入
  • 所有 Facebook social plugin 變成內建 directive,換句話說什麼都不用做就會 work
  • 承上,deprecate 之前為達相同功能所使用的 ezfbXfbml directive

加上 test 的二三事

其實推上 v0.3.0 的最後推手是加上了全部的 unit test spec… 來說說想加上 test 的原因吧!

angular-easyfb 這個 module 其實說來開發起來蠻麻煩的… 基本上從第一版寫完之後,後來我再繼續改都是用第一版的 demo plunk 做為依據,換掉其中載入在 GitHub Pages 的 script,改成載入另外的開發用版本。為什麼? 因為似乎在本地開 server 來做開發的話,Facebook JavaScript SDK 跑不起來(但老實說我沒有真的試過… 去 developer panel 裡改一些 domain 相關的設定可能會有機會吧)

不斷把程式碼貼來貼去的厭煩度終於在 v0.2.x 達到了巔峰。我知道寫了 test 之後,應該可以大大改善這情況,畢竟我不再需要載入真正的 SDK 來確保我所有的功能都可以正常運作(在 test 裡面 mock FB SDK 的 API 就好了),也就可以從來回剪貼程式碼於 Plunker 跟 Sublime Text 的循環中解脫了!

看著之前在 GitHub repo 的 README 裡面寫下的

TODO
  • test

心裡默默的覺得時機已經成熟,就差臨門一腳。詳見 AngularJS test 新手上路 (1) - 基本環境設定

自訂 SDK 載入,帶來新的可能

這版新增了可以自訂 SDK 載入的功能,讓這個 module 有了使用在 Apache Cordova (or Phonegap) 裡的可能。透過 Apache Cordova Facebook Plugin,只需要載入本地的 facebook-js-sdk.js 後再自訂一下觸發 FB.init() 的時機即可。

這個 Simple example 為例,與 AngularJS 及 angular-easyfb 結合之後要能夠順利 init 只需要加上

// angular config phase
.config(function ($FBProvider) {
  $FBProvider.setInitParams({
    appId: "{APP ID}", 
    nativeInterface: CDV.FB, 
    useCachedDialogs: false 
  });

  $FBProvider.setLoadSDKFunction(function ($document, $fbAsyncInit) {
    // 上面的 HTML 已經用 <script> 載入了 facebook-js-sdk.js,這邊就不用載了
    $document.on('deviceready', function () {
      $fbAsyncInit();
    });
  });
})

就可以順利運作了。 (相關 issue)

未來展望

angular-easyfb 作為一個讓 AngularJS 與 Facebook JavaScript SDK 合作更輕鬆且密切的 module,老實說 v0.3.0 已經接近它最後的樣貌了。現在整個 module 的彈性與方便性都好到一個不行!

結論,我真的不知道還要加什麼功能了… 所以這個 module 基本上應該會轉型為只修 bug 的狀態一直 maintain 下去,在這邊就先下台一鞠躬,謝謝收看。