Kategorien
Aktuell Allgemeines HTML Stuff

Should I use a framework or library?

At my current employer we do all kind of Web Applications. We call it Experience Technology. These customer user experiences have different needs. Sometimes we do static content deliverables like temporary marketing campaign pages, or knowledge bases that never get touched again. More often we do enterprise shopping experiences, catalogue maintenance, and other e-commerce platforms.

Asking someone of my team how to build their next customer user experience I get named: React, VUE, Svelte or at last, Angular. Normally no one tells me yet: Let’s do it native, let’s use Web Components.

Do I know why?

Maybe

Why the frameworks are so common and preferred is having some reasons:

  • They offer a community
  • Searching for an issue or supporting library for sure returns an Stackoverflow entry or an NPM library
  • There is great support by someone that has „already done this“
  • For Business: It is good to have something to sell that everyone knows

A quick poll

Doing a quick poll with our experience technologists hardens the opinion.

Showing React 58%, Angular 3%, VUE 15%, Native Web Components 7%. Other 13%

Observing the obvious

Using frameworks and libraries for everything, causes problems that could be prevented. Average weight of a page is increasing. Complexity of generated code too. Views of common frameworks and libraries are often ridiculous complicated and deep nested and adding libraries and grid systems is done with a click. Importing without seeing the direct deeper effect. On top of that, Designers create complex animations and placeholders and forget that we still have low-end devices to support and not an ideal-world fast internet. Accessibility and search, like find-ability is getting worse. When useless containers are nested and semantics are getting lost.

On top of all, GDPR compliance is bad to achieve as of often third parties are used in a way that makes it hard to know where your customers details are getting shared.

This directly leads me to the this ask: Do we at all need to use a framework or library? Can’t we use Web components?

Webcomponents.org tells a clear use case, but why does still no one considers it first place to use it as base in their projects?

Web components are a set of web platform APIs that allow you to create new custom, reusable, encapsulated HTML tags to use in web pages and web apps. Custom components and widgets build on the Web Component standards, will work across modern browsers, and can be used with any JavaScript library or framework that works with HTML.
Web components are based on existing web standards. Features to support web components are currently being added to the HTML and DOM specs, letting web developers easily extend HTML with new elements with encapsulated styling and custom behaviour.

Webcomponents.org

Would there be any advantage when using them instead of a framework? Long-term for sure. Imagine a situation where Facebook stops support for React, or Google for Angular. Sooner or later libraries might get outdated. The community for sure support it for some years, but it can stop. There is no guarantee that it works long. There are also new Libraries popping out every day.

As we started writing decoupled user experiences, using micro-services and micro-frontends, we forgot to enable us to create long lasting frontend code, that is maintainable. Instead of using native functionalities, write proper markup and getting accessible and search engine friendly.

We now create a dependency to a framework that is maybe out-dating soon. Any reason to do so?

Not really!

Frameworks and libraries should help us organizing and writing our code and deliverables, but not overtaking our thinking and tooling. It is not reasonable that we deliver whole applications to clients browsers, when the contents never or only every view months change. We should instead build more meaningful smaller applications. We even need to render server side, using JavaScript.

A quick excursion on what Web Components are

Using Web components would allow us to get back to standards, using browser supported simple tooling.

So why should you consider Web components as complement for frameworks and libraries?

  • They are already a standard!
  • They work cross browser (Can I use it?)
  • They are simple and stand-alone
  • They are already used
  • They are future proof!

The details

Web components are the wrapper name for a set of techniques that create browser rendered interfaces. They are created through custom elements, shadow DOM, HTML templates and HTML modules. The latter is yet not widely adopted by browsers.

Custom Element

Setup a JavaScript file that contains the code for your custom element.

class MyCustomElement extends HTMLElement {    
  connectedCallback() {
    this.innerHTML = `<p>Some Text</p>`;
  }
}
window.customElements.define('my-custom-element',  MyCustomElement)

You need a DOM node that can initialise it.

<my-custom-element></my-custom-element>

Shadow DOM

With your custom element you can add coloured text in the context of other text paragraphs. You can capsule your styles that only belonging to the needed node.

const shadowRoot = document.getElementById('fetched').attachShadow({ mode: 'open' });
shadowRoot.innerHTML = `<style>
p {
  border: 1px solid red;
  padding: 5px;
}
</style>
<p id="paragraph">Paragraph using <slot></slot></p>`;

Create some HTML to connect your code with it.

<span id="fetched">Slot</span>
<p id="paragraph">Normal Text</p>

Virtual DOM like shown below will be generated.

<body>
  <span id="fetched">    
    <#shadow-root>
      <style>
      p {
        border: 1px solid red;
        padding: 5px;
      }
      </style>
      <p id="paragraph">Paragraph using Slot</p>
    </#shadow-root>
  </span>
  <p id="paragraph">Normal Text</p>
</body>

Use HTML Templates

Stay DRY. Use HTML templates. Look at the the above example. If you want to render more paragraphs, you can repeat your <p> or just use a <template>. It is obvious what is wet and what is dry.

You can use them together with custom elements and shadow root, or alone.

<template id="template">
  <p></p>
</template>
<section id="paragraphs"></section>

How to render a HTML template.

const paragraphs = document.getElementById('template');
const text = [
  { node: 'Text 1' },
  { node: 'Text 2' },
  { node: 'Text 3' }
];
text.forEach(text => {
  const domNode = document.importNode(paragraphs.content, true);
  domNode.querySelector('p').innerHTML = text.node;
  document.getElementById('paragraphs').appendChild(domNode);
});

Did I missed HTML Modules?

Nope. But they are currently considered. So let’s see.

What else to consider

Take also into account that all is maintained in a component library. Handled in a DSM provided by InVision, Figma, or Design Kits like Sketch. We need to ensure to reuse our code and Styles. Design Tokens help here. Amazon has Style Dictionary, but there are others. And ideally, have a direct connect to your repository. (More would be subject of a full own post)

But my client has IE11 as standard browser!

Ask them why! Seriously!

If they still insist, and maybe even have a dated soon to be replaced Edge: there are Polyfills available, they render the components as HTML for you.

Any other input?

More and more Frameworks and libraries arise that help generating your applications with Web components. They offer build in test ability, design libraries, pattern libraries and more. There are well established ones like Polymer or Stencil. You can find more on the web component page list. So if you do not want to do it manually. Use provided tools. 

What to do

There is no golden hammer that makes all your problems a nail. But you should consider re-usability, need of the current implementation, and how long it will exists. Then it can help you making a decision.

Static rendering for interims campaign pages, knowledge bases, and so on can improve SEO, size, and customer experience. Full blown SPA with a checkout or profile management, and a healthy mixture for catalogue can do their part on this.

But the base of all should be a Web component. Just do it.

Resources mentioned and used

Fun fact

Yes, you can also make Web components complicated.

Kategorien
HTML Stuff

1und1 cronjobs mit php 5.x

Ha, das hat gedauert und der Mitarbeiter an der Hotline meines „Platinum Supports“ wusste es auch nicht.

Wenn ihr bei 1und1 ein Paket mit SSH Zugang und Cronjobs habt und diese (wie ich) auch ordentlich nutzt, dann muss man immer aufpassen, dass diese auch durch die letzte aktuelle PHP Version angetrieben werden.

In den Cronjob FAQ bei 1und1 wird da nicht sehr ausführlich darauf eingegangen, dort wird sogar noch PHP4 referenziert. Daher hier ein kleiner Tipp:

Soll der Cron nicht unter PHP 5.2 laufen, dann müsst ihr im Pfad wie folgt zur PHP Version diese angeben – also z.B. für PHP 5.4 /usr/local/bin/php5.4 dieser wird also einmal am Tag um 00:01 ausgeführt:

01 0 * * * /usr/local/bin/php5.4 /kunden/homepages/35/paketid/htdocs/pfad-zum-cron.php

Hoffe das hilft euch. Bis Version 6 könnt ihr da derzeit gehen. Zumindest in meinem Paket.

Ich finde es schade, dass nicht automatisch mit dem Packetswitch aus dem Konfigurationsmenus das PHP des Verzeichnisses gerendert wird.

Kategorien
Fundstücke HTML Stuff

Nutzer motivieren lange Passwörter einzugeben

Wenn man ein Webinterface zum Registrieren von Nutzern baut, ist es immer sehr schwer den Nutzer zu motivieren ein langes Passwort einzugeben. Die Nutzer ignorieren normalerweise was man unter die Felder schreibt oder in irgendwelche kontextuelle Hilfen. Erst nach dem Absenden kommt dann die Fehlermeldung dass das Passwort zu kurz war. Da hilft das Plug-in Nacked Password. So lange der Nutzer tippt zieht die Dame Kleidungsstücke aus. Da man die Bilder selbst einstellen kann, sogar jugendfrei. Man kann es beim Einbau auch modifizieren. Ich finde toll.

Kategorien
Fundstücke HTML Stuff

Wann kann ich was verwenden…

Sehr schöne nützliche Seite zu Kompatibilität von aktuellen und früheren Browsern, Hilfe und Unterstützung beim Integrieren von Funktionalität und auch einfach Weglassen von kleineren Funktionen in älteren Browsern. Wer sich mit dem Thema beschäftigt wird Spaß dran haben.

Kategorien
Allgemeines

Outlook ist kaputt, lasst es uns reparieren

Ich habe schon öfter mal über HTML Mails geschrieben, und dabei auf die Risiken hingewiesen. Wenn jetzt noch ein großer Softwareproduzent und Fast-Monopolist sein proprietäres System einsetzt um E-Mails zu generieren, dann kann das nur schief gehen. Kämpft dafür, dass es repariert wird. Igitt!

Kategorien
Gedanken HTML Stuff

HTML Newsletter vs Plain Text

Gerade mal wieder aufgekommen und aktueller denn je. Denn Microsoft hat die Renderengine im Outlook 2007 umgestellt und setzt auf die Word Engine an Stelle der des IE.

Kategorien
Gedanken HTML Stuff

eBay springt auf den Web 2.0 Zug auf…

Juhu, endlich auch eBay. Wieso nur? ich weiß es nicht. Auf jeden Fall sieht eBay seit heute einfach schrecklich aus. „Runde Ecken“ wohin man schaut, JavaScript-abhängige Features, die bei mir jetzt zu einem Klick mehr führen, wenn ich mal wieder JavaScript deaktiviert habe, usw. Was die Umgestalter der Seite aber immer noch nicht geschafft haben, ist es der Seite eine definierte Hintergrundfarbe zu geben. Bei mir liegt alles auf einem herrlichen grau.

Ich hatte die Seite ein paar Minuten im im Firefox offen und plötzlich begann dieser wild zu reloaden, ich habe noch nicht erkannt an was es lag. Witzig auch der Test mittels eines „Meta Refreshs“ im noscript Tag ob jemand JavaScript aus hat. (Weitergeleitet wird auf: http://www.ebay.de/?_js=OFF) Da mein Firefox keine Meta Refreshs ausführt, völlig für die Katz.

Kategorien
Fundstücke Gedanken HTML Stuff

Fehler im System

Fehler beim Umgang mit Kundendaten sind ein großes Problem von Webanwendungen. Hierzu ein schönes Beispiel, das ich bei Jurabilis gefunden und noch etwas detailierter dargestellt habe. Ich weiß immer gerne woher etwas kommt und möchte dies visualisiert haben.

Kategorien
HTML Stuff

Mini CSS Framework

Ich frage mich ob es eine sinnvolle Verwendung eines CSS Frameworks geben könnte, oder ob es überhaupt angebracht wäre so etwas aufzusetzen. Mir kam die Idee bei der Diskussion um JavaScript Frameworks wie Prototype, mootools oder deren Erweiterungen wie scriptaculous. Irgendwie setzt man bei jedem Web das neu entsteht, vieles immer wieder um, und schreibt oder kopiert damit vieles neu, das eigentlich wieder verwendet werden könnte. Yaml bietet hierfür einen ganz guten Ansatz. Leider ist für meine Ansprüche die Vielfalt der vorgegebenen Stylesheets und die Größe mittlerweile wieder nicht mehr annehmbar. Der unbedarfte Nutzer wird sicherlich „vorsichtshalber“ erst alles laden. Was nicht nötig ist. Meine Styles sind daher nichts neues, sondern eben nur ein Neubeginn für mich.

Kategorien
Syzygy Deutschland GmbH

500 Jobs bei MLP

Seit Mittwoch können Sie sich als MLP Berater bewerben. Eine Job Inititative von MLP. Wir haben die Seite in .NET 2.0 und validem HTML umgesetzt. Die Startseite ist mit einer Animation in unobtrusiven JavaScript aufgesetzt und kann daher auch mittels der CSS Mousevover ohne aktiviertes JS bedient werden. Die Startseite zeigt in Abhängigkeit der Bewerbungen die offenen Stellen exemplarisch an. Sind Sie bereit für eine neue Herausforderung bei MLP? Dann bewerben Sie sich.

Kategorien
HTML Stuff

Alt-Attribut vs title-Attribut

Der Alt-Text ist eine Alternative, kein Tooltip!

Es erscheint immer wieder ein Problem zu sein und bei Entwicklern von Webseiten, sowie Browserherstellern für Verwirrung zu sorgen. Das alt-Attribut stellt alternative Texte für Bilder und nicht textlich dargestellte Inhalte dar.