Hi Diego, That sounds good, but can you give a concrete example of some code, like I gave below. That would be great.
Geoff On 19 Feb 2015, at 1:00 am, Diego Socaceti <socac...@gmail.com> wrote: > sorry, copy, paste-error > > ... use JavaScriptModuleConfiguration#exports() for 'exports' of shim config > > 2015-02-18 14:58 GMT+01:00 Diego Socaceti <socac...@gmail.com>: > >> Hi @all, >> >> if you want to shim non-AMD JavaScript files you should use >> JavaScriptModuleConfiguration. >> It offers everything you need to create shim configs. >> >> use JavaScriptModuleConfiguration#dependsOn() for 'deps' of shim config >> use JavaScriptModuleConfiguration#dependsOn() for 'exports' of shim config >> >> Kind regards >> >> >> 2015-02-18 12:13 GMT+01:00 Geoff Callender < >> geoff.callender.jumpst...@gmail.com>: >> >>> Despite what I said 9 months ago in the thread you referenced, I'm not >>> sure that I've ever seen the shimming [1] ever work, but I haven't pursued >>> it because the many javascript libraries I use work fine anyway without >>> being modules. >>> >>> [1] >>> http://tapestry.apache.org/5.4/apidocs/org/apache/tapestry5/services/javascript/JavaScriptModuleConfiguration.html >>> >>> Here are 4 very different examples that my modules are using without, I >>> believe, shimming. Maybe they're being shimmed and I should take advantage >>> of it. If so, I'd welcome someone setting me straight. >>> >>> public static void contributeModuleManager( >>> MappedConfiguration<String, Object> configuration, >>> >>> @Path("/META-INF/assets/js/highcharts-4.0.4/highcharts.js") Resource >>> highcharts, >>> >>> @Path("/META-INF/assets/fineuploader/fineuploader-5.0.9.js") Resource >>> fineuploader, >>> >>> @Path("/META-INF/assets/js/fastclick-1.0.3.min.js") Resource fastclick, >>> >>> @Path("/META-INF/assets/js/pick-a-color-1.2.3/dependencies/tinycolor-0.9.15.min.js") >>> Resource tinycolor, >>> ) { >>> configuration.add("highcharts", new >>> JavaScriptModuleConfiguration(highcharts)); >>> configuration.add("fineuploader", new >>> JavaScriptModuleConfiguration(fineuploader)); >>> configuration.add("fastclick", new >>> JavaScriptModuleConfiguration(fastclick)); >>> configuration.add("tinycolor", new >>> JavaScriptModuleConfiguration(tinycolor)); >>> } >>> >>> Using highcharts... >>> >>> define([ "jquery", "highcharts" ], function($) { >>> init = function(params) { >>> $chart = $("#" + params.id); >>> $chart.highcharts({ >>> : >>> >>> Using fineuploader... >>> >>> define(["jquery", "t5/core/console", "fineuploader"], function($, >>> console) { >>> var uploader; >>> init = function(params) { >>> uploader = new qq.FineUploader({ >>> : >>> >>> Using fastclick... >>> >>> define([ "jquery", "fastclick" ], function($, FastClick) { >>> return function(options) { >>> var options = options || {}; >>> new FastClick(document.body, options); >>> }; >>> }); >>> >>> Using tinycolor... >>> >>> // Depends on PickAColorJavaScriptStack. >>> >>> define(["jquery", "tinycolor", "underscore", "t5/core/console", >>> "bootstrap/tooltip", "bootstrap/popover"], function($, tinycolor, _, >>> console) { >>> init = function(params) { >>> pickAColorOptions = _.extend({}, >>> params.pickAColorOptions); >>> // To prevent pickAColor failing with "tinycolor is not >>> defined", assign window.tinycolor. >>> window.tinycolor = tinycolor; >>> : >>> >>> HTH, >>> >>> Geoff >>> >>> >>> On 18 Feb 2015, at 5:54 pm, abangkis <abang...@gmail.com> wrote: >>> >>>> Hi Geoff. You are right. I can call the showMe() method as a global >>>> function. So, is it okay if I assume that i could only call the shimmed >>> js >>>> lib through global function? Since it wouldn't get passed through the >>>> define parameter. Or is my implementation that's incorrect? Is there a >>>> better way (better scoped) to implement this? >>>> >>>> Cheers. >>>> >>>> On Wed, Feb 18, 2015 at 7:33 AM, Geoff Callender < >>>> geoff.callender.jumpst...@gmail.com> wrote: >>>> >>>>> Your "require" has ensured the mytest.js file gets loaded by the >>> browser >>>>> but the file's contents do not define an AMD module. Therefore the >>> scope of >>>>> showMe() is global, so I think you'll find you can call showMe() but >>> not >>>>> mytest.showMe(). >>>>> >>>>> Geoff >>>>> >>>>> On 18 Feb 2015, at 5:05 am, Thiago H de Paula Figueiredo < >>>>> thiag...@gmail.com> wrote: >>>>> >>>>>> Please read the Require.js documentation about this. You just cannot >>> use >>>>> Require.js with non AMD .js files and expect it to work without no >>> further >>>>> work. >>>>>> >>>>>> On Sat, 14 Feb 2015 14:04:36 -0200, abangkis <abang...@gmail.com> >>> wrote: >>>>>> >>>>>>> Hello. I'm trying to load a simple regular javascript that's going >>> to be >>>>>>> used as dependency from a RequireJS module. >>>>>>> >>>>>>> So i created mytest.js under classpath:META-INF/assets/js/mytest.js. >>> It >>>>>>> contain a single function : >>>>>>> >>>>>>> function showMe() { >>>>>>> alert("test 2 my_test"); >>>>>>> }; >>>>>>> >>>>>>> I add the contribution in AppModule >>>>>>> >>>>>>> public static void >>>>> contributeModuleManager(MappedConfiguration<String, >>>>>>> Object> configuration, >>>>>>> @Path("/META-INF/assets/js/mytest.js") Resource js) { >>>>>>> configuration.add("mytest", new >>>>> JavaScriptModuleConfiguration(js)); >>>>>>> } >>>>>>> >>>>>>> Create a test page >>>>>>> >>>>>>> @Import(module = "Lima") >>>>>>> public class Lima { >>>>>>> } >>>>>>> >>>>>>> that call the module : >>>>>>> >>>>>>> require(['mytest'], >>>>>>> function(mytest){ >>>>>>> console.log("mytest " + mytest); >>>>>>> mytest.showMe(); >>>>>>> }); >>>>>>> >>>>>>> the module is loaded, the mytest.js file is found. But the console >>> log >>>>>>> mytest as undefined. Here's what's printed on the console >>>>>>> >>>>>>> Loading 2 libraries >>>>>>> console.js:104 Loading library >>>>>>> /KomuttaCentral/assets/ctx/z1d218c13/js/jquery-2.0.3.min.js >>>>>>> console.js:104 Loading library >>>>>>> /KomuttaCentral/assets/ctx/z50c3674f/js/scripts.js >>>>>>> console.js:104 Executing 1 inits >>>>>>> console.js:104 Loaded module Lima >>>>>>> console.js:104 All inits executed >>>>>>> Lima.js:3 mytest undefined >>>>>>> console.js:104 RequireJS error: require: Cannot read property >>> 'showMe' >>>>> of >>>>>>> undefined >>>>>>> >>>>>>> So, what did i do wrong? Thanks. >>>>>> >>>>>> >>>>>> -- >>>>>> Thiago H. de Paula Figueiredo >>>>>> Tapestry, Java and Hibernate consultant and developer >>>>>> http://machina.com.br >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>>> >>>>> >>>> >>>> >>>> -- >>>> http://www.mreunionlabs.net/ <http://www.mreunion-labs.net/> >>>> twitter : @mreunionlabs @abangkis >>>> page : https://plus.google.com/104168782385184990771 >>> >>> >> --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org