On 11/30/2012 01:41 PM, Caleb James DeLisle wrote: > Hi, > > I'd like to add require.js to XWiki to be included in every page just before > prototype.js. > I would also like to add jQuery to our resources directory but only make it > available to > scripts which "pull it in" using require(). > > I have come to the conclusion that jQuery is a de-facto standard and even if > we don't port > to it, we should make it available to our users. Require.js is an > implementation of the > Asynchronous Module Definition standard which will allow us to use both > jQuery and prototype > relatively harmoniously. > > I think it's obvious that if javascript rich webapps are going to scale, they > need > modularity and I've reviewed AMD and the main competitor CommonJS and > concluded that AMD > will provide the user with better page load time by asynchronously loading > modules according > to a dependency tree while CommonJS blocks on each call to require(). > > I would like to see us move away from prototype but it provides more > functionality than > jQuery including an OOP framework and while there are other libraries which > show promise, > I don't feel right proposing a best practice without first porting some code > to it to see > what issues arise so IMO we should begin using require.js but accept that > prototype still > has it's place. > > So I propose: > > Include require in the header vm.
+1 > Include jQuery but only if a script "require()'s" it. +1 > Establish a best practice of using require() and define() instead of global > variables but > accept that prototype.js still has it's place. +1 However, consider these as precursory +1s for the idea in general. We should first try and see how this work in real code. > > WDYT? > > Caleb > > > miscellany: > ------------------------------ > > require.js vital statistics: > > Dual licensed BSD and MIT. > Latest Release: 2.1.2 > 1,993 lines before minification > 24,621 lines in every .js file in the /tests/ directory. > Used by: > https://github.com/adobe/brackets/ > https://github.com/ajaxorg/cloud9 (https://c9.io/) > http://browserquest.mozilla.org/ > http://www.bbc.co.uk/frameworks/barlesque/examples/global/requirejs > http://www.officejs.org/ > > ----------------------------- > > Optimization: > > require.js comes with a tool for linting, compiling (using Closure Compiler), > and linking AMD modules together based on their dependencies. Complex projects > with many js files can be can be compiled into a single "statically linked" > js file. > > It supports Rhino so it could be included in the maven build. > > > ----------------------------- > > > My experimentation with require.js: > > I use the require.js legacy shim to make jquery.sheet function as a > require.js module > without making any direct changes to jquery.sheet. > > I was able to move the code from XWiki to the filesystem (file:///) a total > change > of the directory structure and only needed to change the main example.html > file. > > I was able to include the content in an iframe simply by defining a > require.js plugin > see: http://requirejs.org/docs/plugins.html for loading through an iframe and > changing > the require() call to require the iframe'd sheet. > > https://github.com/cjdelisle/jquery-sheet-amd -- Sergiu Dumitriu http://purl.org/net/sergiu _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

