Slashdot Mirror


Developer Hacks Together Object-Oriented HTML (github.com)

An anonymous reader writes: Ever since I started coding, I have always loved object-oriented design patterns. I built an HTML preprocessor that adds inheritance, polymorphism, and public methods to this venerable language. It offers more freedom than a templating engine and has a wider variety of use cases. Pull requests appreciated!

4 of 184 comments (clear)

  1. venerable language by phantomfive · · Score: 3, Interesting

    I'm suspicious of anyone who calls HTML 'venerable.' They should call it, "notorious" or "infamous," maybe, "expectorant." Marc Andreesen points out there are just problems with it, and I can't see OOP fixing things.

    So, I looked at this guy's project, and it's better than I expected. The major problem it solves is: "how do you avoid repeating yourself, while still keeping things flexible?" The common approach right now is to either throw it into a CSS library (like Bootstrap) or write Javascript to produce the HTML. The latter idea there sounds like a joke but it's not.

    In comparison, this lets you break things into components (like React does), but without any cost to the front end. Overall a good approach, but likely to get lost in the noise of a thousand other web frameworks.

    --
    "First they came for the slanderers and i said nothing."
  2. I don't see any OO by Half-pint+HAL · · Score: 3, Interesting

    The Github page doesn't give any examples that look like OO to me, which is A) not surprising, because what the hell would an OO markup language look like and B) very surprising, given that the whole DOM is OO from the ground up in modern rendering engines.

    Anyway, on a tangent...

    I see no real call for OO in web rendering, but the one thing I think is missing from HTML is the ability to parameterise things like column widths etc. Why cant I call column 1's width "x" and ask the renderer to make column 2's width "3x"? Or use these parameters across tables, so that the columns in table 1, table 2 and table 3 are all the same size?

    I know this can be done with CSS, but in order to do that, I need to choose a particular size -- I can say "I don't care about the actual size, but these 3 things should all be as big as each other."

    --
    Got them moderator blues I blieve I walk out the do', With these mod-points I been gettin', I 'most never post no mo'
  3. Re:Spare us. by ls671 · · Score: 3, Interesting

    Nice post! Most of my utility classes are stateless and contain only static methods. A lot of common logic is in there instead of being in the instantiated class. Inheritance here and there were it makes sense.

    Yet, I still see OO heads around who think; the more it inherits, the more it is OO. The ultimate case is those projects where all classes inherit from an often called "RootObject" that contains all utility methods for the project hence effectively making all utility methods global methods.

    --
    Everything I write is lies, read between the lines.
  4. Re:Spare us. by Pseudonym · · Score: 3, Interesting

    Yes, but also no.

    Look at JavaScript. ECMAScript 2015 finally added something kind of resembling real classes. Why is that?

    Because the first job of JS has always been to manipulate DOM which was designed in the "90s class hierarchy bloat" aesthetic. The need, but not the ability, was there from the beginning.

    If Eich had managed to get Scheme in, we wouldn't be having this conversation now.

    Tha half-arsed Smalltalk/Erlang style OO that node.js developers seem to be embracing is more "real" than this. I do not think that OO is a failure. I think that Alan Kay has beaten Grady Booch but the world hasn't realised it yet.

    --
    sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});