[dev] Javascript depency loading

Jan Schneider jan at horde.org
Fri Jul 31 11:29:55 UTC 2009


Zitat von Michael M Slusarz <slusarz at horde.org>:

> Quoting Jan Schneider <jan at horde.org>:
>
>> Zitat von Michael M Slusarz <slusarz at horde.org>:
>>
>>> Quoting Jan Schneider <jan at horde.org>:
>>>
>>>> I already had a short discussion with Michael Rubinsky on IRC two  
>>>> weeks ago, and two events reminded me about it: The necessary  
>>>> fixes to correctly load tooltips.js and the required  
>>>> prototype.js, and Ajaxian mentioning LABjs  
>>>> (http://labjs.com/description.html) again.
>>>>
>>>> Here's the IRC log:
>>>>
>>>> (18:04:12) yunosh: is it worth to use a depency loader like  
>>>> http://feedproxy.google.com/~r/ajaxian/~3/Vq4qcO7idLI/labjs-simple-abstraction-for-loading-dependencies-correctly to solve the js file loading order  
>>>> issues?
>>>> (18:17:21) mrubinsk: yunosh: looks interesting, though I guess  
>>>> we'd need to test to see if it would work well with pages that  
>>>> might have had the same js file added via Horde::addScriptFile()  
>>>> in other places....or were you talking as a general solution to  
>>>> implement within Horde::addScriptFile()?
>>>> (18:18:57) yunosh: rather something to replace addScriptFile(),  
>>>> or actually something that's build from addScriptFile() instead  
>>>> of plain <script> writing. That would require dependency support  
>>>> on the php side too of course
>>>> (18:19:03) yunosh: just brainstorming here
>>>> (18:20:47) mrubinsk: sounds like it's worth looking into more  
>>>> thoroughly then...
>>>> (18:22:05) yunosh: i'm not sure if it's adding more overhead than  
>>>> necessary for things that we can sort out manually with a bit of  
>>>> patience
>>>> (18:29:09) mrubinsk: yea, it's also not clear how well it would  
>>>> behave with adding scripts in multiple paces in the code
>>>> (18:29:56) mrubinsk: at least from my cursory look :)
>>>>
>>>> I want to re-start this discussion because such a solution could  
>>>> not only help us solving the dependeny issues, but also speed up  
>>>> page loading. Beside that, we could load more script files  
>>>> directly from JS code on-demand. The latter would keep the  
>>>> after-loaded scripts from using our JS cache, but it might be  
>>>> worth for some rarely used scripts, and it's an added bonus anyway.
>>>
>>> My thoughts:
>>> 1.) There is (should be) no dependency issues.  *Everything*  
>>> requires prototype.js to be loaded first.  After that, it doesn't  
>>> matter the order the files are included.  If there is, then the  
>>> script is broken and needs to be fixed (all initialization should  
>>> be done in a domload event handler - this eliminates all issues  
>>> with dependencies).
>>
>> This is not quite true. There is also date.js which is required in  
>> Kronolith, and soon by the date picker widget, but nothing else  
>> (yet). date.js requires a locale js file to be loaded first. That  
>> means that any place that is going to use the date picker must take  
>> care of loading 3 different js files in the correct order,  
>> including a variable file name that's going to be injected from the  
>> outside.
>> And I can imagine that we are going to load more js libraries in  
>> the future that might be the base for other js files. Think of any  
>> widget depending on scripty. We don't want to load scripty on every  
>> page.
>> We *do* have dependency issues and we have to solve them somewhere.  
>> This could of course completely be done in PHP, LABjs or similar is  
>> just one possible solution.
>
> A possible solution, and one I am looking at re: Horde_Editor, is to  
> bundle the more complex javascript elements in a framework package  
> and then have the package deal with the dependencies.  This has the  
> extra advantage of allowing us to upgrade a package correctly if the  
> javascript components are updated.
>
> This will require us to write horde-specific PEAR roles to correctly  
> install this javascript.  Don't know if this is feasible or not.
>
> http://pear.php.net/manual/en/guide.migrating.customroles.defining.php

How would that help us with *loading* dependencies?

Jan.

-- 
Do you need professional PHP or Horde consulting?
http://horde.org/consulting/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 197 bytes
Desc: Digitale PGP-Unterschrift
URL: <http://lists.horde.org/archives/dev/attachments/20090731/409befae/attachment.bin>


More information about the dev mailing list