PLOG - Modern Javascripting with Plone

Uploaded on


More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. "Modern" Javascript-ing Plone... how to drink less while doing Javascript in Plone. Rok Garbas / @garbas
  • 2. Products.ResourcesRegistry orders resources, minimizes, groups them.
  • 3. Nothing wrong with it, right? Hard to debug Hard to keep resources up to date. Nothing / Nada / Niente of our JS is tested. Tricky for addons to plugin.
  • 4. Seriously...We need to get out shit together!
  • 5. PLOG pledge On my honor, I will try,To serve Plone community and worship **all** Javascript Gods, To write Modular, Tested, Documented Javascript code And to live by the Girl Scout Law.
  • 6. ModularJavascript
  • 7. AMD vs CommonJS Scope Remote/Local Asynchrony
  • 8. AMD// define wrapperdefine( // dependencies are specified in advance. [modA, modB], // the module is declared within a definition function. // dependencies are mapped into function parameters. function (modA, modB) { // inside here is the modules code. // the module is exported to the outside world via the // the definition functions returned value. var modC = modA + modB; return modC; }); CommonJS// dependencies specified as neededvar modC = require(modC);// the module is exported by decorating the `exports` free = require(modA) + require(modB);
  • 9. ResuireJS Paths for network/CDN resources. Minimize resources.Optimizing into one lite JavaScript file.
  • 10. Keepingresources up to date
  • 11. Jam Manage dependencies "npm" for browser Really nice integration with RequireJS$ jam install backbone$ jam upgrade$ jam compile compiled.min.js$ jam compile --almond compiled-standalone.min.js
  • 12. TestingJavascript
  • 13. Test Frameworks QUnit Jasmine Buster Mocha
  • 14. Test Assertionsexpect.js - Minimalistic BDD-style assertions for Node.JS and the class="fragment"browser. should.js - BDD style assertions for node.js better-assert - c-style assert() for nodejs, reporting the expression string as the error message Buster, Jasmine -
  • 15. My assertion library choiceChai is a BDD / TDD assertion library for node and the browser. chai.should();; foo.should.equal(bar); foo.should.have.length(3);; var expect = chai.expect; expect(foo); expect(foo).to.equal(bar); expect(foo).to.have.length(3); expect(tea); var assert = chai.assert; assert.typeOf(foo, string); assert.equal(foo, bar); assert.lengthOf(foo, 3), favors); assert.lengthOf(tea.flavors, 3);
  • 16. Test runnersQUnit, Jasmine, Buster, Mocha TESTEM
  • 17. Mockupproject