You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by "Magnus Kvalheim (JIRA)" <ji...@apache.org> on 2013/10/03 21:36:41 UTC

[jira] [Created] (TAP5-2196) RequireJs custom path contribution - via Stacks or JavaScriptSupport

Magnus Kvalheim created TAP5-2196:
-------------------------------------

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


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)