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.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
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)
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)
kangax: Detecting global variable leaks (2009). http://perfectionkills.com/detecting-global-variable-leaks//
Bédard, J.: Isomorphic javascript (2015). http://isomorphic.net/
Onishi, A.: Plugins: When the time is right. In: Pro WordPress Theme Development, pp. 273–295. Apress (2013)
Dimitri, G.: Custom elements. W3c working draft, W3C (December 2014). http://www.w3.org/TR/2014/WD-custom-elements-20141216/
Dimitri, G., Ito, H.: Shadow dom. W3c working draft, W3C (June 2014). http://www.w3.org/TR/2014/WD-shadow-dom-20140617/
Dimitri, G., Hajime, M.: Html imports. W3c working draft, W3C (March 2014). http://www.w3.org/TR/2014/WD-html-imports-20140311/
Penades, S.: An Introduction to Web Components. In: Web Components London, webcomponents.org (January 2015)
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/
Polymer, P.: Polymer Homepage (2015). https://www.polymer-project.org/
Sharp, R.: Detecting global variable leaks (October 2010). https://remysharp.com/2010/10/08/what-is-a-polyfill
ECMA: Draft specification for es.next (ecma-262 edition 6). Ecmascript working draft, ECMA (February 2015)
Bonetta, D., Binder, W., Pautasso, C.: TigerQuoll: parallel event-based JavaScript. In: Proc. of PPoPP, pp. 251–260 (2013)
Rauch, G.: Rooms and Namespaces (2014). http://socket.io/docs/rooms-and-namespaces/ (accessed: February 25, 2015)
c9: architect (2015). https://github.com/c9/architect
Jacobs, R.: intravenous (2015). https://github.com/RoyJacobs/intravenous
Rodger, R.: seneca (2015). https://github.com/rjrodger/seneca
cujoJS: wire (2015). https://github.com/cujojs/wire
Mullenweg, M., Boren, R., Jaquith, M., Ozz, A., Westwood, P.: Wordpress (2011). https://wordpress.org/
Wolfe, H., O’Nolan, J., Davis, P., Williams, J.: Ghost (2015). https://ghost.org/
Dougiamas, M.: Moodle: A virtual learning environment for the rest of us. TESL-EJ 8(2), 1–8 (2004)
Moodle developer documentation, M.: Event 2 (2015). https://docs.moodle.org/dev/Event_2 (accessed: February 25, 2015)
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)
Hoodie, H.: Hoodie Homepage (2015). http://hood.ie/ (accessed: February 25, 2015)
Mikkonnen, T., Systa, K., Pautasso, C.: Towards liquid web applications. In: Proc. of the 15th International Conference on Web Engineering (ICWE). Springer, Rotterdam (2015)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Triglianos, V., Pautasso, C. (2015). Asqium: A JavaScript Plugin Framework for Extensible Client and Server-Side Components. In: Cimiano, P., Frasincar, F., Houben, GJ., Schwabe, D. (eds) Engineering the Web in the Big Data Era. ICWE 2015. Lecture Notes in Computer Science(), vol 9114. Springer, Cham. https://doi.org/10.1007/978-3-319-19890-3_7
Download citation
DOI: https://doi.org/10.1007/978-3-319-19890-3_7
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-19889-7
Online ISBN: 978-3-319-19890-3
eBook Packages: Computer ScienceComputer Science (R0)