I just want to point out something called WebAssembly. It's supported across all modern browsers. Presumably, you can write a program in Python, convert it to WebAssembly, and it will run in your browser. I haven't worked with it myself, but I am keeping my eye on it because I would like to think it will become more widely adopted in the not-so-distant future. http://webassembly.org/
-----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Mike Dewhirst Sent: Wednesday, January 31, 2018 4:29 PM To: [email protected] Subject: Re: javascript transpilers On 30/01/2018 6:33 PM, Andréas Kühne wrote: > 2018-01-30 5:18 GMT+01:00 Mike Dewhirst <[email protected] > <mailto:[email protected]>>: > > On 29/01/2018 9:03 PM, Nick Sarbicki wrote: > > Going SPA when you don't know JS is very much a baptism of fire. > > Angular is personally my favourite too and essentially forces > the SPA model. But it has a much bigger learning curve > compared to Vue and React (the other two common names thrown > about nowadays). The others are also easier to not force into > a SPA model. > > Figure what's the minimum requirement first ;-). > > > Single page is pretty close to the way the application currently > works so that is promising. It is a lightweight training > framework. Simple architecture of courses, instruction(s) and > questions with answers aggregating a total score for the student. > > I won't publicise the URL because the server isn't heavy-duty. But > if there is any individual interest I'm happy to give it off-list. > Today I released the beta to the first client who (generously) is > using it for his troops to do online training on how to use some > Windows software. > > So back to the minimum requirement ... > > The single (question) page has previous-question and next-question > links which morph into previous-instruction and next-instruction > links when at the first and last question respectively. So that is > the SPA similarity. > > When you click the [Save] button after answering a question there > is no indication the answer has been saved without adding a line > of text (via the view) after answer.save() > > Refreshing the page resends the [Save] and reprints the line of > text saying the [Save] was successful. Too clunky. > > > If you are using django in the "normal" way - you should just be able > to add the message to the messages contrib package. Then the message > should show when saving? Because when you click on the save button you > should post your form and that method should (when successful) add the > message? Hadn't thought of that! Must investigate the messages package. > > It was that behaviour which made me start this thread. > > I checked out typescript and it looks great but it is javascript. > It seems to let you code in ECMAScript 6 which is looking more > like Python and as Nick mentioned, has a compilation step (which I > suppose is like a minification step anyway) to get it into the > version currently supported by all browsers. > > > Typescript is more of a object oriented language than javascript is - > at least compared to ECMAScript 5. It also has some support for typing > - and great unittest support - which is criticle when writing > javascript.... Agreed > > That prompted me to look more closely at a few of the transpilers > in the link I posted in the thread-starter. One stood out for me > ... http://www.transcrypt.org/ > > It seems the compilation to javascript takes place in the CI > process and it can be debugged in Python or Javascript. You can > use both javascript and/or python libraries. Written by a Dutchman > which is possibly interesting ;) > > > What you have to remember is that you still need to transpile it when > running in development mode. So it really doesn't matter where you do > your transpilation. You need to setup the transpilation even in > development - a webb browser can't run python natively. True. However, Transcript produces Javascript. Interestingly you debug in python or Javascript. I'll have to allocate some time to investigate but in any case I think DRF comes first. > > The Angular thing is interesting. > > https://medium.com/@chriscordle/why-angular-2-4-is-too-little-too-late-ea86d7fa0bae > > <https://medium.com/@chriscordle/why-angular-2-4-is-too-little-too-lat > e-ea86d7fa0bae> > > > https://www.infoworld.com/article/3213244/javascript/whats-new-in-angular-5-easier-progressive-web-apps.html > > <https://www.infoworld.com/article/3213244/javascript/whats-new-in-ang > ular-5-easier-progressive-web-apps.html> > > >From those articles, it seems React is lighter-weight than > Angular and for me that probably means easier to learn. It is > still daunting though. Vue also assumes javascript know-how. > > > Yes react is more lightweight. However it is like comparing the flask > framework with django. The difference is very similar. React is more a > library and angular is a framework. I suspect React is super efficient. Facebook use it and they shave very close to the bone. > > I think my best plan is to postpone a decision and make a start on > DRF anyway. No matter what happens that is a prerequisite. > > I hope it isn't wishful thinking but Transcrypt looks more > attractive than learning javascript plus a javascript framework. > > > The main problem here is that you will still need to learn javascript > - because you need to understand what will happen when your > client-side code fails (and it will :-)). And my other point is still > valid. Look at the user base. When you have problems with transcrypt, > how many users can you rely on to get help? If you have a pure > javascript problem - how many users can you rely on for help? Excellent points. But it is difficult to dislodge wishful thinking. There will be two sets of code. Python which I hope I can debug and automatically generated Javascript which definitely will (I agree) have bugs. I would have had to debug Javascript anyway and I reckon forced debugging Javascript will let me skip the awful step of deciding to learn Javascript. I mean that's a depressing decision to have to make. Maybe by the time I get DRF working Transcrypt will have a few more users? I really want to avoid Javascript. And I know Transcrypt would not have been written unless the authors felt the same way. If it works there will be a flood of users. It comes with a lot of promise(s). > > I do hope that you find a solution that works for you though :-) Haven't made any decisions yet - apart from DRF and the messages investigation. Many thanks for helping :) Mike > > Thanks to all for the excellent and very professional feedback. > > Cheers > > Mike > > > Regards, > > Andréas > > > > On Mon, Jan 29, 2018 at 9:15 AM Andréas Kühne > <[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>> wrote: > > If that is the case - I would recommend looking into > creating a > single page app - with Django restframework on the backend > if you > want to continue with Django. For the frontend you will > however be > required to learn some sort of JS framework - however this > doesn't > have to be THAT bad. I personally like angular 5 - which is > written in typescript - a javascript based language - that > actually removes most of the pain. HOWEVER JS knowledge is > good to > have anyway.... > > There are other frameworks that don't require that much JS > knowledge and Jason suggested GWT which sounds like it > could be > worth a shot, as long as it doesn't add to much > complexity. The > main reason for using that would be a large user base, so > you can > get help. The python transpiled JS versions don't really > have the > greatest user base :-) > > Regards, > > Andréas > > 2018-01-29 0:00 GMT+01:00 Mike Dewhirst > <[email protected] <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>>: > > That seems unanimous :( > > Jani asked what problem I need to solve. Without going > into > analytical detail, all the code is serverside and now the > project needs to move towards AJAX for user experience > reasons. > > M > > On 29/01/2018 5:44 AM, Nick Sarbicki wrote: > > > Agree with everything already said. > > Only thing I want to add is that while js has > historically > been a horrible language, the modern standards > have helped > rectify this. Modern js can be almost pleasant to work > with nowadays. > > I wouldn't spend time transpiling python to js. > Just try > to learn js and maybe transpile from a modern > standard to > the browser standard. It's almost as easy as python to > pick up. > > Django compressor helps greatly in the last case. > > > On Sun, 28 Jan 2018, 16:49 Avraham Serour, > <[email protected] <mailto:[email protected]> > <mailto:[email protected] <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> <mailto:[email protected] > <mailto:[email protected]>>>> wrote: > > If you don't want and don't have the time to > learn JS > you may as > well consider outsourcing the frontend work, I've > worked in places > that did just that and everybody was happy, the > internal team > liked python and the outsourced company people > liked > UX and JS. > > On Sun, Jan 28, 2018 at 6:09 PM, Jani Tiainen > <[email protected] <mailto:[email protected]> > <mailto:[email protected] <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> <mailto:[email protected] > <mailto:[email protected]>>>> > wrote: > > Hi, > > You don't describe to what extent you need > to use > JavaScript - > IOW, what problem you need to solve with > JavaScript? > > Depending you needs you might get away > with basic > knowledge > and usage of some helpful JavaScript > library/framework. > > On Sun, Jan 28, 2018 at 12:44 AM, Mike > Dewhirst > <[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> > > <mailto:[email protected] > <mailto:[email protected]>>>> wrote: > > I have avoided javascript like the plague. > However it > seems I have to bite the bullet. > Interestingly, there are > now a number of Python -> Javascript > transpilers. > > http://stromberg.dnsalias.org/~strombrg/pybrowser/python-browser.html > > <http://stromberg.dnsalias.org/%7Estrombrg/pybrowser/python-browser.ht > ml> > > > <http://stromberg.dnsalias.org/%7Estrombrg/pybrowser/python-browser.html > > <http://stromberg.dnsalias.org/%7Estrombrg/pybrowser/python-browser.ht > ml>> > > > > <http://stromberg.dnsalias.org/%7Estrombrg/pybrowser/python-browser.html > > <http://stromberg.dnsalias.org/%7Estrombrg/pybrowser/python-browser.ht > ml>> > > Where would be a good place to start a > discussion on the > topic? > > I am self-employed with multiple > demands on > my time so I > cannot afford to allocate sufficient > time to > learn it let > alone undertake formal Javascript > training. My > hope is to > pick it up by osmosis and wonder if a > transpiler would help. > > Thanks for any pointers > > Mike > > -- You received this message > because you are subscribed to > the Google Groups "Django users" group. > To unsubscribe from this group and stop > receiving emails > from it, send an email to > [email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>> > > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/fa0e9f0b-fece-344d-74f2-5b9470b40657%40dewhirst.com.au > > <https://groups.google.com/d/msgid/django-users/fa0e9f0b-fece-344d-74f2-5b9470b40657%40dewhirst.com.au>. > For more options, visit > https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > > > -- Jani Tiainen > > - Well planned is half done, and a half > done has been > sufficient before... > -- You received this message > because you > are subscribed to the > Google Groups "Django users" group. > To unsubscribe from this group and stop > receiving > emails from > it, send an email to > [email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>> > > <mailto:[email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/CAHn91od4EbPY210baiuJq59cf2nEue6TQ1-3wiU8auk-uLKCYQ%40mail.gmail.com > > <https://groups.google.com/d/msgid/django-users/CAHn91od4EbPY210baiuJq > 59cf2nEue6TQ1-3wiU8auk-uLKCYQ%40mail.gmail.com> > > > > <https://groups.google.com/d/msgid/django-users/CAHn91od4EbPY210baiuJq59cf2nEue6TQ1-3wiU8auk-uLKCYQ%40mail.gmail.com?utm_medium=email&utm_source=footer > > <https://groups.google.com/d/msgid/django-users/CAHn91od4EbPY210baiuJq59cf2nEue6TQ1-3wiU8auk-uLKCYQ%40mail.gmail.com?utm_medium=email&utm_source=footer>>. > > > For more options, visit > https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- You received this message because you are > subscribed to the Google > Groups "Django users" group. > To unsubscribe from this group and stop receiving > emails from it, > send an email to > [email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>> > > <mailto:[email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/CAFWa6tJ_kfQ6RdW_d_QmXXTPt%2Bpt7HKPtnt_7eie17O60yaoaQ%40mail.gmail.com > > <https://groups.google.com/d/msgid/django-users/CAFWa6tJ_kfQ6RdW_d_QmX > XTPt%2Bpt7HKPtnt_7eie17O60yaoaQ%40mail.gmail.com> > > > > <https://groups.google.com/d/msgid/django-users/CAFWa6tJ_kfQ6RdW_d_QmXXTPt%2Bpt7HKPtnt_7eie17O60yaoaQ%40mail.gmail.com?utm_medium=email&utm_source=footer > > <https://groups.google.com/d/msgid/django-users/CAFWa6tJ_kfQ6RdW_d_QmXXTPt%2Bpt7HKPtnt_7eie17O60yaoaQ%40mail.gmail.com?utm_medium=email&utm_source=footer>>. > For more options, visit > https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > -- You received this message because > you are subscribed to > the Google Groups "Django users" group. > To unsubscribe from this group and stop receiving > emails > from it, send an email to > [email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>> > <mailto:[email protected] > <mailto:django-users%[email protected]> > > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>> > <mailto:[email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/CAGuvt90b-QZ54tvfNAKDBMUV-saEMXsb4G72gLiRSp2tzxjqKw%40mail.gmail.com > > <https://groups.google.com/d/msgid/django-users/CAGuvt90b-QZ54tvfNAKDB > MUV-saEMXsb4G72gLiRSp2tzxjqKw%40mail.gmail.com> > > > <https://groups.google.com/d/msgid/django-users/CAGuvt90b-QZ54tvfNAKDBMUV-saEMXsb4G72gLiRSp2tzxjqKw%40mail.gmail.com?utm_medium=email&utm_source=footer > > <https://groups.google.com/d/msgid/django-users/CAGuvt90b-QZ54tvfNAKDBMUV-saEMXsb4G72gLiRSp2tzxjqKw%40mail.gmail.com?utm_medium=email&utm_source=footer>>. > For more options, visit > https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- You received this message because you are > subscribed to the > Google Groups "Django users" group. > To unsubscribe from this group and stop receiving > emails from > it, send an email to > [email protected] > <mailto:django-users%[email protected]> > <mailto:django-users%[email protected] > <mailto:django-users%[email protected]>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/f92268fe-a077-a2d1-f8d4-64810031e2ae%40dewhirst.com.au > > <https://groups.google.com/d/msgid/django-users/f92268fe-a077-a2d1-f8d4-64810031e2ae%40dewhirst.com.au>. > > > For more options, visit > https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- You received this message because you are > subscribed to the Google > Groups "Django users" group. > To unsubscribe from this group and stop receiving emails > from it, > send an email to [email protected] > <mailto:django-users%[email protected]> > <mailto:[email protected] > <mailto:django-users%[email protected]>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/CAK4qSCescFKH4vTrxSy1E3-HJ4n5-BZd5iw7%2BDQmuSkDqiua-g%40mail.gmail.com > > <https://groups.google.com/d/msgid/django-users/CAK4qSCescFKH4vTrxSy1E > 3-HJ4n5-BZd5iw7%2BDQmuSkDqiua-g%40mail.gmail.com> > > > <https://groups.google.com/d/msgid/django-users/CAK4qSCescFKH4vTrxSy1E3-HJ4n5-BZd5iw7%2BDQmuSkDqiua-g%40mail.gmail.com?utm_medium=email&utm_source=footer > > <https://groups.google.com/d/msgid/django-users/CAK4qSCescFKH4vTrxSy1E3-HJ4n5-BZd5iw7%2BDQmuSkDqiua-g%40mail.gmail.com?utm_medium=email&utm_source=footer>>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > -- > You received this message because you are subscribed to the > Google Groups "Django users" group. > To unsubscribe from this group and stop receiving emails from > it, send an email to [email protected] > <mailto:django-users%[email protected]> > <mailto:[email protected] > <mailto:django-users%[email protected]>>. > To post to this group, send email to > [email protected] > <mailto:[email protected]> > <mailto:[email protected] > <mailto:[email protected]>>. > Visit this group at > https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/CAGuvt91kwYH89pHpMCEV8gOzztNVddRCfCho8dBse4yGH900EA%40mail.gmail.com > > <https://groups.google.com/d/msgid/django-users/CAGuvt91kwYH89pHpMCEV8gOzztNVddRCfCho8dBse4yGH900EA%40mail.gmail.com> > > <https://groups.google.com/d/msgid/django-users/CAGuvt91kwYH89pHpMCEV8gOzztNVddRCfCho8dBse4yGH900EA%40mail.gmail.com?utm_medium=email&utm_source=footer > > <https://groups.google.com/d/msgid/django-users/CAGuvt91kwYH89pHpMCEV8gOzztNVddRCfCho8dBse4yGH900EA%40mail.gmail.com?utm_medium=email&utm_source=footer>>. > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google > Groups "Django users" group. > To unsubscribe from this group and stop receiving emails from it, > send an email to [email protected] > <mailto:django-users%[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at https://groups.google.com/group/django-users > <https://groups.google.com/group/django-users>. > To view this discussion on the web visit > > https://groups.google.com/d/msgid/django-users/35695cf3-8408-a566-2a11-092a269907ed%40dewhirst.com.au > > <https://groups.google.com/d/msgid/django-users/35695cf3-8408-a566-2a11-092a269907ed%40dewhirst.com.au>. > > > For more options, visit https://groups.google.com/d/optout > <https://groups.google.com/d/optout>. > > > -- > You received this message because you are subscribed to the Google > Groups "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send > an email to [email protected] > <mailto:[email protected]>. > To post to this group, send email to [email protected] > <mailto:[email protected]>. > Visit this group at https://groups.google.com/group/django-users. > To view this discussion on the web visit > https://groups.google.com/d/msgid/django-users/CAK4qSCeiUScRfhWmiHwith > cbnMgo9yrxpXNFR3fPA10JtKSY0A%40mail.gmail.com > <https://groups.google.com/d/msgid/django-users/CAK4qSCeiUScRfhWmiHwithcbnMgo9yrxpXNFR3fPA10JtKSY0A%40mail.gmail.com?utm_medium=email&utm_source=footer>. > For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/878214e6-3b49-2670-7718-15548de0fc64%40dewhirst.com.au. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/803ca06b425b42b4b9a1c68183ced49b%40ISS1.ISS.LOCAL. For more options, visit https://groups.google.com/d/optout.

