We do have a PR on this for the module loader ready to go ( https://github.com/ModuleLoader/es6-module-loader/pull/156). We could generalise it to apply in a hookable way so that the HTML imports polyfill could call out to this as well potentially.
On 12 September 2014 17:28, Sébastien Cevey <[email protected]> wrote: > Ah yeah that'd be nice. Where is the work on <module> being done? Has it > been polyfilled by any library yet? > > On 11 September 2014 13:41, Guy Bedford <[email protected]> wrote: > >> Note that this same concept can apply to anonymous modules so that we get >> identical execution order to what we would expect from scripts: >> >> <link rel="import" href="../bower_components/polymer/polymer.html"> >> >> <!-- jquery is loaded immediately through a System.define call --> >> <!-- execution only happens when ready, through HTML imports trigger - >> System.get call --> >> <module> >> import $ from 'jquery'; >> >> Polymer('windsock-data', ...); >> </module> >> >> <polymer-element name="windsock-data" attributes="src refresh >> sink-notices"> >> </polymer-element> >> >> On 11 September 2014 14:04, Guy Bedford <[email protected]> wrote: >> >>> Thanks so much Sebastien for posting this feedback. I think the methods >>> you have here really are the best way to combine SystemJS with web >>> components. It would be great to take the lessons you have learnt here and >>> be able to turn them into something we can share more widely. >>> >>> In terms of the build, it sounds like exactly the right way to do it as >>> well. >>> >>> The issue you had with needing to import a web component dependency >>> could be avoided if we had support for the <module> tag in web components. >>> >>> Consider if your example at >>> https://github.com/guardian/windsock/blob/master/src/main/resources/public/elements/windsock-data.html >>> looked like: >>> >>> <link rel="import" href="../bower_components/polymer/polymer.html"> >>> >>> <module name="windsock:elements/windsock-data"> >>> >>> <polymer-element name="windsock-data" attributes="src refresh >>> sink-notices"> >>> </polymer-element> >>> >>> >>> *If we could propose that the <module> tag loads, but doesn't execute >>> **(System.load >>> provides this functionality) **until the modules in the sub-imports >>> have executed first, we may have a unified solution for that.* >>> >>> I'd be very interested to hear from the web component team if something >>> along these lines could be possible between the module loader and HTML >>> import specifications in due course. >>> >>> >>> On 20 August 2014 21:26, 'Steve Orvell' via Polymer < >>> [email protected]> wrote: >>> >>>> Thanks for the detailed feedback. >>>> >>>> It seems like you have a handle on the build issues. There a lot of >>>> options here but if you can think of a specific feature vulcanize should >>>> have, please feel free to post an issue. Maybe you already did this, but >>>> note that Vulcanize can concat scripts in imports. If that output needs >>>> further processing for SystemJS, perhaps Vulcanizer's output is the input >>>> for the SystemJS compressor. >>>> >>>> For the ordering issues, the Polymer requirement is that dependencies >>>> are registered in the order in which they are used. For example, if x-bar >>>> extends x-foo, x-foo must be registered first. Polymer 0.3.5 improved >>>> support for async scripts. Polymer now waits to register elements until all >>>> `<polymer-element>` declarations have their accompanying scripts before >>>> registering elements. If you used this version, I don't expect to need to >>>> specifically order things other than the noted requirement. >>>> >>>> >>>> >>>> >>>> On Wed, Aug 20, 2014 at 3:45 AM, Sébastien Cevey < >>>> [email protected]> wrote: >>>> >>>>> (I've been wanting to post this for a while, but this thread on >>>>> requirejs+polymer prompted me to give it a try, apologies for the Subject >>>>> hijacking) >>>>> >>>>> FYI, and as discussed with Eric & Addy at the recent Polymer event at >>>>> the Google Campus in London, I've been experimenting with using Polymer in >>>>> combination with SystemJS. In other words, I'm using >>>>> <script>System.import('the-js');</script> inside the HTMLImport, instead >>>>> of >>>>> a static <script src="the-js.js"></script> definition. >>>>> >>>>> The advantage of using SystemJS is that I can then write my JS >>>>> definition using ES6 (or in fact anything I want, incl. AMD or CJS), using >>>>> the ES6 module import syntax too. Makes the code a lot neater, and avoid >>>>> faffing with the manual RequireJS config (I use jspm to generate and >>>>> manage >>>>> the System config). It is also the only sane way I can think of (besides >>>>> RequireJS) to have an HTML import depend on a JS file that itself depends >>>>> on another JS file. >>>>> >>>>> The code is Open Source here if you want to take a look: >>>>> >>>>> >>>>> https://github.com/guardian/windsock/tree/master/src/main/resources/public/elements >>>>> (apologies for the poor docs at the root, it's not yet 100% ready for >>>>> prime time...) >>>>> >>>>> >>>>> One of the issues with using System.import (or RequireJS' require, for >>>>> that matter) in the HTML import is that unlike the static <script>, it is >>>>> asynchronous. I had issues when using composition of components, where >>>>> Polymer was failing some template binding due to dependencies being >>>>> defined >>>>> in the wrong order. I had to resort to manually expliciting the >>>>> dependencies of the JS files *on top of* the declarative dependencies in >>>>> the HTML files. >>>>> >>>>> For example, see the following JS dependency: >>>>> >>>>> >>>>> https://github.com/guardian/windsock/blob/master/src/main/resources/public/elements/windsock-admin.js#L5 >>>>> (ensure windsock-data Polymer element is defined before >>>>> windsock-admin, because admin uses data) >>>>> >>>>> which unfortunately has to mirror the corresponding HTML dependency: >>>>> >>>>> >>>>> https://github.com/guardian/windsock/blob/master/src/main/resources/public/elements/windsock-admin.html#L2 >>>>> >>>>> This is rather annoying, but I wasn't able to find a way around it, >>>>> seeing as mixing HTMLImport and SystemJS results in a mix of sync and >>>>> async >>>>> dependencies, while Polymer requires a strict order for elements to be >>>>> defined (AFAIU)... >>>>> >>>>> >>>>> Another challenge was the bundling of elements for leaner >>>>> distribution. Vulcanize is aware of static <script>s, but not >>>>> System.import >>>>> calls (or require() calls if using RequireJS), so no JS is pulled into the >>>>> vulcanized output. On the other hand, jspm bundle is quite happy to bundle >>>>> JS modules into one, but it obviously doesn't know about HTML imports. >>>>> >>>>> My extremely hacky (but oddly functional) solution comes in the form >>>>> of a build script that combines vulcanize and jspm bundle, prepending the >>>>> SystemJS bundle to the vulcanize output: >>>>> >>>>> >>>>> https://github.com/guardian/windsock/blob/master/src/main/resources/public/make-dist.sh >>>>> >>>>> Some of the hackery, esp the hack around the AMD define at the bottom, >>>>> should hopefully go away as fixes are incorporated into SystemJS instead. >>>>> >>>>> It's all still a bit rough, but I hope it proves it can all be done, >>>>> albeit slightly more painfully than it ought to be... >>>>> >>>>> >>>>> Any insight or ideas for making this all better natively supported >>>>> would be very much welcome. I know there are discussions about HTMLImport >>>>> vs System loader on es-discuss at the moment, but it'd be great to start >>>>> thinking of ways to get all of this working together without extra hassle! >>>>> >>>>> Thanks for all the great work on Polymer! >>>>> >>>>> >>>>> -- >>>>> Sébastien Cevey >>>>> The Guardian / Software Developer >>>>> >>>>> >>>>> On 20 August 2014 08:49, <[email protected]> wrote: >>>>> >>>>>> Hi, >>>>>> >>>>>> is there any progress related to this topic? >>>>>> >>>>>> BR, >>>>>> Alessandro >>>>>> >>>>>> >>>>>> On Wednesday, February 26, 2014 10:09:55 AM UTC+2, Eric Bidelman >>>>>> wrote: >>>>>> >>>>>>> Scott, don't you have a new HTML import + JS module loader POC or >>>>>>> brain dump somewhere? Am I making that up? >>>>>>> On Feb 25, 2014 4:21 PM, "Gabriel Gartz" <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> I like the idea of using requirejs and polymer project together, >>>>>>>> some points: >>>>>>>> >>>>>>>> * Requirejs system migration: you just can't re-develop everything >>>>>>>> to work with only polymer from one day to another. >>>>>>>> * Using logical libs for a custom element: Some custom elements can >>>>>>>> be very complex, using the require js allow you to easier coding with >>>>>>>> namespace and modules dependence. >>>>>>>> >>>>>>>> Other points, it's possible to create a Custom Element to trigger >>>>>>>> and manipulate requirejs, but you need to load polymer project before >>>>>>>> the >>>>>>>> requirejs. >>>>>>>> And finally the problem with requirejs loading before polymer >>>>>>>> project it's in the way that requirejs create and use script elements >>>>>>>> to >>>>>>>> append on the head from the DOM, where the ShadowDOM from Polymer >>>>>>>> decorate >>>>>>>> the elements and if isn't decorated it throw a assert exception, so if >>>>>>>> require is loaded before to load polymer it wont work. >>>>>>>> >>>>>>>> Em quinta-feira, 25 de julho de 2013 09h26min45s UTC-3, Joern >>>>>>>> Turner escreveu: >>>>>>>>> >>>>>>>>> sorry, if that's a recurring question having answered elsewhere >>>>>>>>> already. After searching the discussions i only found some remarks on >>>>>>>>> that >>>>>>>>> but no defnitive answer. >>>>>>>>> >>>>>>>>> We're also very interested to load polymer with requirejs or at >>>>>>>>> least use them in conjunction. Anybody found a solution to that? Any >>>>>>>>> pragmatic approach would be welcome. >>>>>>>>> >>>>>>>>> Second: after reading for a while i haven't found answers to the >>>>>>>>> questions what polymer does to the global objects (window, document >>>>>>>>> ...) >>>>>>>>> and how/if it changes the javascript language. >>>>>>>>> >>>>>>>>> Thanks, >>>>>>>>> >>>>>>>>> Joern >>>>>>>>> >>>>>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>>>>>> --- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "Polymer" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to [email protected]. >>>>>>>> >>>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/polymer-dev/ca2cc747- >>>>>>>> 8c1e-476e-8f9d-774f622a9ebb%40googlegroups.com. >>>>>>>> For more options, visit https://groups.google.com/groups/opt_out. >>>>>>>> >>>>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>>>> --- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "Polymer" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to [email protected]. >>>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/polymer-dev/5d9ab14d-8f23-4708-a387-e7cf67326823%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/polymer-dev/5d9ab14d-8f23-4708-a387-e7cf67326823%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> For more options, visit https://groups.google.com/d/optout. >>>>>> >>>>> >>>>> >>>>> >>>>> >>>>> ------------------------------ >>>>> Visit theguardian.com. On your mobile and tablet, download the >>>>> Guardian iPhone and Android apps theguardian.com/guardianapp and our >>>>> tablet editions theguardian.com/editions. Save up to 57% by >>>>> subscribing to the Guardian and Observer - choose the papers you want and >>>>> get full digital access. Visit subscribe.theguardian.com >>>>> >>>>> This e-mail and all attachments are confidential and may also be >>>>> privileged. If you are not the named recipient, please notify the >>>>> sender and delete the e-mail and all attachments immediately. Do not >>>>> disclose the contents to another person. You may not use the information >>>>> for any purpose, or store, or copy, it in any way. Guardian News & Media >>>>> Limited is not liable for any computer viruses or other material >>>>> transmitted with or as part of this e-mail. You should employ virus >>>>> checking software. >>>>> >>>>> Guardian News & Media Limited is a member of Guardian Media Group plc. >>>>> Registered Office: PO Box 68164, Kings Place, 90 York Way, London, N1P >>>>> 2AP. Registered in England Number 908396 >>>>> >>>>> >>>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>>> --- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "Polymer" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/polymer-dev/CALft9sTqmi_ichzKCtD%3DZn%3Dv-cukEGpSgPC-v-yVHLgcK2Tqyw%40mail.gmail.com >>>>> <https://groups.google.com/d/msgid/polymer-dev/CALft9sTqmi_ichzKCtD%3DZn%3Dv-cukEGpSgPC-v-yVHLgcK2Tqyw%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> For more options, visit https://groups.google.com/d/optout. >>>>> >>>> >>>> Follow Polymer on Google+: plus.google.com/107187849809354688692 >>>> --- >>>> You received this message because you are subscribed to the Google >>>> Groups "Polymer" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/polymer-dev/CA%2BrMWZgN-GaRS1sMue%2BEyZq-%3DutmLbwXNQxW4txNNJBKYn_pmg%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/polymer-dev/CA%2BrMWZgN-GaRS1sMue%2BEyZq-%3DutmLbwXNQxW4txNNJBKYn_pmg%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> >> > > > -- > Sébastien Cevey > Software Developer > > ------------------------------ > Visit theguardian.com. On your mobile and tablet, download the Guardian > iPhone and Android apps theguardian.com/guardianapp and our tablet > editions theguardian.com/editions. Save up to 57% by subscribing to the > Guardian and Observer - choose the papers you want and get full digital > access. Visit subscribe.theguardian.com > > This e-mail and all attachments are confidential and may also be > privileged. If you are not the named recipient, please notify the sender > and delete the e-mail and all attachments immediately. Do not disclose the > contents to another person. You may not use the information for any > purpose, or store, or copy, it in any way. Guardian News & Media Limited > is not liable for any computer viruses or other material transmitted with > or as part of this e-mail. You should employ virus checking software. > > Guardian News & Media Limited is a member of Guardian Media Group plc. > Registered > Office: PO Box 68164, Kings Place, 90 York Way, London, N1P 2AP. Registered > in England Number 908396 > > > Follow Polymer on Google+: plus.google.com/107187849809354688692 --- You received this message because you are subscribed to the Google Groups "Polymer" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/polymer-dev/CAGu7HE%3DfiaW0cy2xybvFvr5JkEzFu_-LfhSsSb9ofDX6K3ck5Q%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
