Asqium: A JavaScript Plugin Framework for Extensible Client and Server-Side Components

Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9114)

Abstract

JavaScript has become a language for programming complex Web applications, whose logic is deployed across both Web browsers and Web servers. Current software packaging mechanisms for JavaScript enable a basic level of modularity and reuse. However, they have not yet reached full maturity in terms of enabling system extensions with features contributed as third-party plugins, while encapsulating them adequately. In this paper we present a novel plugin system for JavaScript applications, which integrate Node.js modules with HTML5 Web Components. It provides abstractions for: real time and loosely coupled communication between front-end and back-end components, persistent state storage, and isomorphic usage of JavaScript. Plugins can use hooks and events to contribute functionality and embed it into the main application flow, while respecting the common asynchronous non-blocking programming paradigm of JavaScript. We demonstrate the expressiveness of the framework as it is used to build ASQ: an open, extensible educational Web platform.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    Mayer, J., Melzer, I., Schweiggert, F.: Lightweight plug-in-based application development. In: Aksit, M., Mezini, M., Unland, R. (eds.) NODe 2002. LNCS, vol. 2591, pp. 87–102. Springer, Heidelberg (2003) Google Scholar
  2. 2.
    Triglianos, V., Pautasso, C.: Interactive scalable lectures with ASQ. In: Casteleyn, S., Rossi, G., Winckler, M. (eds.) ICWE 2014. LNCS, vol. 8541, pp. 515–518. Springer, Heidelberg (2014) CrossRefGoogle Scholar
  3. 3.
    kangax: Detecting global variable leaks (2009). http://perfectionkills.com/detecting-global-variable-leaks//
  4. 4.
    Bédard, J.: Isomorphic javascript (2015). http://isomorphic.net/
  5. 5.
    Onishi, A.: Plugins: When the time is right. In: Pro WordPress Theme Development, pp. 273–295. Apress (2013)Google Scholar
  6. 6.
    Dimitri, G.: Custom elements. W3c working draft, W3C (December 2014). http://www.w3.org/TR/2014/WD-custom-elements-20141216/
  7. 7.
    Dimitri, G., Ito, H.: Shadow dom. W3c working draft, W3C (June 2014). http://www.w3.org/TR/2014/WD-shadow-dom-20140617/
  8. 8.
    Dimitri, G., Hajime, M.: Html imports. W3c working draft, W3C (March 2014). http://www.w3.org/TR/2014/WD-html-imports-20140311/
  9. 9.
    Penades, S.: An Introduction to Web Components. In: Web Components London, webcomponents.org (January 2015)Google Scholar
  10. 10.
    Walton, P.: Web components and the future of CS. In: Proc. of SFHTML5 (November 2014). http://webcomponents.org/presentations/web-components-and-the-future-of-css/
  11. 11.
    Polymer, P.: Polymer Homepage (2015). https://www.polymer-project.org/
  12. 12.
    Sharp, R.: Detecting global variable leaks (October 2010). https://remysharp.com/2010/10/08/what-is-a-polyfill
  13. 13.
    ECMA: Draft specification for es.next (ecma-262 edition 6). Ecmascript working draft, ECMA (February 2015)Google Scholar
  14. 14.
    Bonetta, D., Binder, W., Pautasso, C.: TigerQuoll: parallel event-based JavaScript. In: Proc. of PPoPP, pp. 251–260 (2013)Google Scholar
  15. 15.
    Rauch, G.: Rooms and Namespaces (2014). http://socket.io/docs/rooms-and-namespaces/ (accessed: February 25, 2015)
  16. 16.
    c9: architect (2015). https://github.com/c9/architect
  17. 17.
    Jacobs, R.: intravenous (2015). https://github.com/RoyJacobs/intravenous
  18. 18.
    Rodger, R.: seneca (2015). https://github.com/rjrodger/seneca
  19. 19.
    cujoJS: wire (2015). https://github.com/cujojs/wire
  20. 20.
    Mullenweg, M., Boren, R., Jaquith, M., Ozz, A., Westwood, P.: Wordpress (2011). https://wordpress.org/
  21. 21.
    Wolfe, H., O’Nolan, J., Davis, P., Williams, J.: Ghost (2015). https://ghost.org/
  22. 22.
    Dougiamas, M.: Moodle: A virtual learning environment for the rest of us. TESL-EJ 8(2), 1–8 (2004)Google Scholar
  23. 23.
    Moodle developer documentation, M.: Event 2 (2015). https://docs.moodle.org/dev/Event_2 (accessed: February 25, 2015)
  24. 24.
    Mesbah, A., Van Deursen, A.: A component-and push-based architectural style for ajax applications. Journal of Systems and Software 81(12), 2194–2209 (2008)CrossRefGoogle Scholar
  25. 25.
    Hoodie, H.: Hoodie Homepage (2015). http://hood.ie/ (accessed: February 25, 2015)
  26. 26.
    Mikkonnen, T., Systa, K., Pautasso, C.: Towards liquid web applications. In: Proc. of the 15th International Conference on Web Engineering (ICWE). Springer, Rotterdam (2015)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.Faculty of InformaticsUniversity of Lugano (USI)LuganoSwitzerland

Personalised recommendations