Hi,
I'm a long time MooTools user who finally feel that I can start migration 
from my MooTools based client-side code to ES6.

I've had strong reasons in the past to use MooTools and if it was still 
maintained I would keep using it and I haven't found a replacement that 
works as well so I'm going to migrate to vanilla javascript and not rely on 
a javascript library be that Angular, React, Vue, jQuery etc etc.

I'm after the same kind of coding experience (and user experience) I've had 
with MooTools so I'm basically just going to drop MooTools and fill the 
void with ES6 classes and a few DOM manipulation helper classes that will 
support method chaining without extending the Window, Body or Element 
prototypes. I think I will do something similar with Array and Object.

The first step was to update +100 or so classes that used the MooTools 
Class functions into ES6 classes. This was very quick and to be honest I 
could have written a program that would have done this for me. Now I simply 
relied on a lot of query/replace.

The second step was to replace every Thenable class with methods that 
return Promises. This was very simple. I used the reset-able functionality 
of Thenables but since my system uses mostly immutable objects it wasn't 
hard to just always create new Promises when needed.

The third thing I'm currently doing is replacing all Request calls with the 
fetch API. I consider writing an adapter for the fetch API that looks like 
the MooTools Request classes but I also don't want to introduce an extra 
layer of abstraction if not needed. I won't be able to do simple 
query/replace here so it will take a little longer to do it manually. I've 
got about 200 calls to Request and most are with my own Request.REST class 
but none of the calls have anything fancy going on so worst case scenario 
is just rewriting them all with fetch syntax which won't take too long 
really.

The last (hopefully) thing that I need to do is replace all code that does 
DOM manipulation. This is going to be the big problematic part of the job. 
MooTools make DOM manipulation so simple in a way that javascript out of 
the box simply does not. I don't want to extend the DOM in the future 
though so I'm looking into the smallest possible framework that I can write 
to 1) render elements and 2) hydrate html generated server-side.

The reason I'm writing this is that I want to report that I so far haven't 
bumped into any problems replacing MooTools with ES6 but I also haven't 
gained much in doing so. I think that MooTools is extreamly underrated 
these days and the only reason I'm doing this refactoring is to not get 
stuck in old code as ECMAScript develops in the future. If there was a 
stronger community around MooTools we could have written a thinner version 
of MooTools that uses ES6 and I would have been first in line to use it. As 
it stands I will most likely never use a framework that couples things as 
strongly as I think React and Vue does. I want to have full control over 
the data flow and how the DOM is updated with my own rendering code and 
view and widget abstractions.

/ Tor

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"MooTools Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to mootools-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to