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 > >