Weekly update:

Function complete:

The new codebase now is function complete, I just added an alpha-1 tag.
Work is still done regarding improving the code a little bit
improving the jsdoc comments and also Udo wants to get something regarding shadow dom updates in.

But we are now on the same function level except for the dropped stuff as the old implementation.

So what does that mean? The code is not fully ready to be merged into the myfaces codebase but you can start to test it by dropping it in yourself.

In https://github.com/werpu/jsfs_js_ts/tree/master/dist/window
you can find builts for the development and production environments.
Please drop it in and give it a testrun, any feedback, negative, positive, bugs, is appreciated.

Cheers

Werner



Am 22.11.19 um 17:45 schrieb Werner Punz:
The usual weekly update...

Changes can be seen as usual on the github project:

https://github.com/werpu/jsfs_js_ts

Following

all my integration tests now pass
IE11 support now is in

I now also have relative concrete code and performance numbers

dev build: unmangled roughly 250 kbypte,
prod: compressed es5 level 89Kbyte,
if you pull the es level up to es2015, 69kbyte.
Higher ES Levels than 2015 don´t have a huge impact anymore.

Speed, roughly 25% slower than the old code, which was highly optimized and low level on an extreme case with a form with a few hundred inputs (my spreadsheet test) on chrome.
IE11 might have a higher hit, not tested yet.

The reason is a higher abstraction I have. Instead of operating directly
on nodes and setting the attributes straight on dom
I now operate on JQuery like monads and selectors which then route into the dom.
Instead of looping over elements, I stream, flatmap map and reduce them.
Instead of pulling the map and having asynchronous callbacks I work now with
promises and shim them if not provided.

All this improves readability but sacrifices some performance.
Given that normally the performance of the ajax part is not really where the problem is,
I can live with that for the time being, should the users complain
(which I frankly doubt given that jquery and other frameworks
usually provide bigger slowdowns), then I could have another round of optimizations.

I guess 5-10% still is possible without sacrificing readability too much.

The plus side is, the code is very readable now and we can ramp
up Ecmascript versions on the fly without a single code change.

Happy weekend

Werner








Am Fr., 15. Nov. 2019 um 16:24 Uhr schrieb Werner Punz <[email protected] <mailto:[email protected]>>:

    Another small update...

    112 Tests atm (including the base framework)

    and the first 9 of my around 18 integration tests now pass properly,
    have not looked to deeply into the others so I am not sure how many
    really still fail atm.

    The build now also works on windows, the reason for that was, that I
    have to send in my Mac for repairs soon (keyboard), so I had to move
    the
    build over to the desktop computer and for testing ie11 doing it on
    Windows 10 makes perfect sense.

    Also the viewstate handling now got a major cleanup and is very readable

    https://gist.github.com/werpu/f46ccb54ce89acc0df933050df35f3cf

    I still postpone the eval and viewstate to the post update processing
    phase on the client
    this has never caused any troubles with the old implementation so I
    keep
    it, it just now is cleaner.

    In the example the viewstate is stored and then after all udpates are
    performed the viewstate is applied by the second method.


    So what is still pending...

    a) First all my 18 integration tests must pass and I have to convert
    parts of them to permanently integrated unit tests where it makes sense.
    (just ported the test for the viewstate handling over into a unit test)

    b) I have to get the code then running on the only supported legacy
    browser (IE11)
    it should theoretically work with a bunch of fixes, practically I
    probably have to change the
    packaging format and other smaller tweaks.







Reply via email to