Masarykova univerzita

- přehled změn ve verzi 2.0

Nový munimap je tady!

Obsahuje kompletně přepracované vývojové prostředí, odstraňuje závislost na Google Closure a používá nové technologie jako Webpack, React, Redux aj.

Výměna a povýšení technologií

Původní verze munimapu byla postavena na technologii Google Closure, konkrétně na kompilátoru Closure Compiler a knihovně Closure Library, které byly dohromady provázané prostřednictvím technologie plovr. V posledních letech však byla viditelná tendence útlumu na vývoji plovru a jeho pomalé přizpůsobování novým verzím CC, CL a EcmaSriptu samotného. Z těchto důvodu jsme se rozhodli kompletně vyměnit vývojové prostředí munimapu směrem k modernímu EcmaScriptu 6+ a knihovnám jako je Webpack nebo React. Důležitým požadavkem byla také efektivní správa balíčku potřebných pro chod aplikace pomocí npm (Node Package Manager).

Kombinace knihoven Webpack a Babel umožnuje spouštět vývojové prostředí a buildovat výsledný kód za minimálního úsilí. Na vstupu tak může být nejnovější EcmaScript a pouhou konfigurací zmíněných knihoven je možné vytvořit výslednou aplikaci kompatibilní třeba i s prohlížečem Internet Explorer 11. Oproti Closure Compileru trvá kompilace kódu daleko méně času a společně s tzv. hot reloadem je pak vývoj velice efektivní. Odpadá tak nutnost využití technologií jako je Gulp nebo Grunt pro spouštění automatizovaných úloh. Typová kontrola je prováděna pomocí Typescript anotací a Typescript Compileru.

Breaking Changes

Knihovna munimap

  • odebrána podpora pro Internet Explorer 11
  • globální objekt ol nyní obsahuje pouze explicitně exportované funkce a třídy
  • v určitých případech je třeba explicitně nastavit výšku a šířku target divu – souvisí s vykreslováním objektu ol/Map
  • změna id vrstev (ol/layer/Vector) - sjednocení na tvar s pomlčkami a v jednotném čísle
  • elementům ovládacích prvků (ol/control) byla odebrána id - nedochází tak ke konfliktům např. při umístění více map na stránku

Vývojové prostředí

  • Kód je rozdělen do ES modulů a využívá importy/exporty (odebrán goog.require, goog.provide a namespace munimap)
  • OpenLayers povýšeny na verzi 6.14.1, do munimapu importovány jako moduly (= odebrán legacy build OpenLayers)
  • Gulp a jeho tasky zabezpečující automatizaci jsou nahrazeny Webpackem a jeho pluginy