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