On 05/04/2013 09:28 AM, Vincent Massol wrote:
On May 3, 2013, at 3:41 PM, Denis Gervalle
<dgl(a)softec.lu> wrote:
> On Thu, May 2, 2013 at 2:53 PM, Vincent Massol <vincent(a)massol.net> wrote:
>
>> Hi devs,
>>
>> ATM the solution is described here:
>>
http://dev.xwiki.org/xwiki/bin/view/Community/Debugging#HDebuggingJavaScript
>>
>> What would you think about doing this instead:
>> * Package both the minimized and the non minimized version in our WAR (it
>> shouldn't add too much weight to our overall WAR size)
>> * Have a directory structure like this:
>>
>> resources/.../<module>/
>> |_ <non minified js file here>
>> |_ min/<minified js files here>
>>
>> * This would allow to put in our xwikivars.vm something like (pseudo code):
>>
>> #if ("$!request.minify" == 'false')
>> #set ($jsDir = '/')
>> #else
>> #set ($jsDir = 'min/'
>> #end
>>
>> * Then everywhere we reference JS files we use $jsDir. For example in
>> attachmentsinline.vm:
>>
>> $xwiki.jsfx.use('uicomponents/widgets/${jsDir}upload.js',
>> {'forceSkinAction': true, 'language': ${xcontext.language}})
This assumes that everywhere we reference js files is always in
velocity, which is not true. I can think of at least one place, the
dashboard macro (
https://github.com/xwiki/xwiki-platform/blob/e7c3855397bee00a5f1fe8b6fe9da6…
). Now, I admit that one might not be the cleanest code ever, but I
wonder what would stop anybody from wanting to include a resource from
java or, say, groovy?
…
This would allow to remove the "debug" profile and make it much faster to
debug XWiki issues, even in production systems.
WDYT?
Looks great, would be even better if the same option were passed
automatically for JSX as well, which would ensure that all JS are not
minified.
This is already the case and that's why I chose the
"minify" request parameter name :)
See the following in AbstractSxAction.java:
if (BooleanUtils.toBoolean(StringUtils.defaultIfEmpty(
request.get(COMPRESS_SCRIPT_REQUEST_PARAMETER), "true"))) {
extensionContent = sxType.getCompressor().compress(extensionContent);
}
indeed, but this uses the parameters of the URL to the js (the jsx
action URL). not the params of the page that demands the js. Which means
that if you want to debug a page, you'd have to figure out all the
scripts that the page is using, and make sure you add, one way or
another, the minify=false parameter.
Also, it works if you load the jsx onDemand (when you'd be able to, say,
request the jsx and add the {"minify": false} parameter), but it won't
work for the automatically loaded jsx like "always on this wiki" or
"always on this page". Also, adding this minify parameter to the call
could be a pain, because you might not know which is the script that is
loading the jsx, you have to go look for it, etc.
In the light of these 2 (3) things, it could maybe be nicer with some
sort of a preference or so, although serving 2 different js for the same
URL is not friendly with the browser cache. I need to think a bit more
thorough to come up with an idea about how to make it better from this
point of view.
Anca
Thanks
-Vincent
_______________________________________________
devs mailing list
devs(a)xwiki.org
http://lists.xwiki.org/mailman/listinfo/devs