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