[
https://issues.apache.org/jira/browse/TAP5-2196?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13811224#comment-13811224
]
Thiago H. de Paula Figueiredo commented on TAP5-2196:
-----------------------------------------------------
Hello, Magnum!
I've been studying this issue and the related Tapestry code and my conclusion
is that adding something like a JavaScriptSupport..config({...}) would be
difficult and error-prone. I thought about the possibility of changing the
JavaScript object created by ModuleManager and before it's passed to
require.config(). That would be done by the use of callbacks, a
RequireJsCallback interface, registered through a method to be added in
JavaScriptSupport, so you can change the object that will be passed to
require.config() in any way you want dynamically in a per-request way in
components, pages, mixins or even services. We could also provide some
RequireJsCallback implementations to add paths, for example.
What do you guys think?
Cheers!
> RequireJs custom path contribution - via Stacks or JavaScriptSupport
> --------------------------------------------------------------------
>
> Key: TAP5-2196
> URL: https://issues.apache.org/jira/browse/TAP5-2196
> Project: Tapestry 5
> Issue Type: Improvement
> Components: tapestry-core
> Affects Versions: 5.4
> Reporter: Magnus Kvalheim
> Labels: requirejs
>
> Currently I think there is no way to configure requirejs paths.
> Also - the requirejs config is 'global' and all entries included on every
> page.
> Would be good improvement if there were some more flexibility in config and
> more contributions was possible.
> --
> As part of 5.4 migration process we have some components that make use of
> JQueryFileUpload, https://github.com/blueimp/jQuery-File-Upload .
> This library uses the factory approach for defining the modules to work in
> both AMD and non AMD environments.
> Internally it handles loading of required modules, but work with paths. (And
> does not try to load from a fixed directory structure).
> So I think I need to specify things like
> requirejs.config({
> paths: {
> 'jquery.fileupload':
> '../library/jquery.fileupload/jquery.fileupload', //path to file
> 'jquery.iframe-transport':
> '../library/jquery.fileupload/jquery.iframe-transport', //path to file
> 'jquery.ui.widget':
> '../library/jquery.fileupload/vendor/jquery.ui.widget', //path to file
> }
> });
> Currently, only option is to configure shims through tapestry's
> modulemanager, but that's for non-AMD scripts and is likely to cause problems.
> Also the shim config would be global (all pages) - which I'd like to avoid as
> well.
> In 5.3 I've used a JQueryFileUpload to define all the deps like so..
> public List<Asset> getJavaScriptLibraries() {
> List<Asset> ret = new ArrayList<Asset>();
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/7.2.1/js/vendor/jquery.ui.widget.js",
> null));
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/extra/js/load-image.min.js",
> null));
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/extra/js/canvas-to-blob.min.js",
> null));
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/7.2.1/js/jquery.iframe-transport.js",
> null));
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/7.2.1/js/jquery.fileupload.js",
> null));
>
> ret.add(assetSource.getContextAsset("jquery-file-upload/7.2.1/js/jquery.fileupload-fp.js",
> null));
> It would be useful it was possible somehow to contribute to requirejs
> configuration through stacks.
> That way they could be added to the requirejs config if the stack was used.
> If it was a service (perhaps exposed through JavaScriptSupport) one could
> also contribute on a page/component level..?
> I have no idea about the implications of this and if it's possible to
> accomplish, but could potentially help solving some more advanced use cases.
--
This message was sent by Atlassian JIRA
(v6.1#6144)