Path: csiph.com!weretis.net!feeder4.news.weretis.net!feeder5.news.weretis.net!news.solani.org!.POSTED!not-for-mail From: Thomas 'PointedEars' Lahn Newsgroups: de.comp.lang.javascript Subject: Re: datepicker mit lokaler Version Date: Tue, 11 Apr 2017 16:35:35 +0200 Organization: PointedEars Software (PES) Lines: 96 Message-ID: <5258140.lOV4Wx5bFT@PointedEars.de> References: <7501637.FXSDG75CZM@PointedEars.de> Reply-To: Thomas 'PointedEars' Lahn Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8Bit X-Trace: solani.org 1491921357 25466 eJwNwokRwDAIA7CVeA0dh7ph/xHSk9KhYAUSkfs77tXjdLYqw0/uCg1Vol/kPDbQbBhfSuMCDi0Qaw== (11 Apr 2017 14:35:57 GMT) X-Complaints-To: abuse@news.solani.org NNTP-Posting-Date: Tue, 11 Apr 2017 14:35:57 +0000 (UTC) User-Agent: KNode/4.14.2 X-Face: %i>XG-yXR'\"2P/C_aO%~;2o~?g0pPKmbOw^=NT`tprDEf++D.m7"}HW6.#=U:?2GGctkL,f89@H46O$ASoW&?s}.k+&. Am 10.04.2017 um 20:52 schrieb Thomas 'PointedEars' Lahn: >>> Du solltest nicht bei Bibliotheken, die untereinander Abhängigkeiten >>> haben, von verschiedenen Quellen einbinden. Entweder remote per URL ODER >>> lokal mit relativem Verweis im Filesystem. >> Unsinn. > > Das hätte mich auch gewundert. Jedoch ist mir aufgefallen, dass einigen > Bibliotheken Abhängigkeiten auf weitere Bibliotheken beinhalten. > Wenn ich diese also Lokal einbinde, müssen die Abhängigkeiten wohl auch > Lokal sein, oder nicht? Nein, aber es hilft. Vielleicht hat Gerome dies gemeint: Wenn Du lokale Versionen von Bibliotheken verwendest, dann sind diese nicht mehr mit entfernten Versionen anderer Bibliotheken, von denen sie möglicherweise abhängen (oder umgekehrt), synchronisiert. Ändert sich das API einer der beiden, kann es sein, dass das Programm nicht mehr funktioniert. Aber natürlich – und darauf bezog ich mich – ist es durchaus möglich, eigene Bibliotheken, die von fremden abhängen, zu verwenden, und es ist auch durchaus sinnvoll, die eigenen lokal und die entfernten an ihrem offiziell zu verwendenden Ursprungsort zu referenzieren: Ändert sich das API nicht in inkompatibler Weise und werden die fremden Bibliotheken von mehreren anderen Web-Applikationen referenziert, dann können die im Cache des Browsers des Benutzers gespeicherten Versionen wiederverwendet werden, was die Ladezeit verkürzt; und wenn die Version sich noch nicht in diesem Cache befindet, erlaubt das dann meist verwendete Content Delivery Network (CDN) einen schnelleren Download. Es gibt aber auch einen Nachteil: Man macht sich von diesem CDN und damit auch von einer Internet-Verbindung abhängig. Falls es sich um ein CDN ausserhalb des eigenen (V)LAN handelt, ist es deshalb sinnvoll, einen Fallback einzubauen, falls dieses einmal nicht verfügbar sein sollte. Das geht, indem man testet, ob nach Laden der Bibliothek vom CDN signifikante verwendete Symbole verfügbar sind; falls nicht, lädt man die lokale Version: Das lässt sich natürlich auch kapseln: (function () { var lib_version = "3.14"; jsx.require( [["CDN:lib.js?v=${version}", "local:lib.js?v=${version}"]], function () { if (typeof lib == "undefined" || compare_version(lib.version, lib_version) < 1) { return; } // … }, null, { version: lib_version }); }()); [jsx.require() gibt es (siehe Signatur), aber es funktioniert derzeit anders. Ich arbeite noch daran, dass das in JSX tatsächlich so wie hier beschrieben funktioniert – zur Zeit habe ich andere Prioritäten. Es erscheint nämlich – auch angesichts des inzwischen weithin unterstützten, verwendeten, *standardisierten* und *mit Events versehenen* Nachladens von Scripts – wesentlich effizienter, Abhängigkeiten *aus dem *Quelltext heraus* *schrittweise* clientseitig statt gesammelt serverseitig aufzulösen, im Unterschied zu dem, wie das mein Resource Builder derzeit halbdynamisch macht (die Abhängigkeiten müssen manuell gepflegt werden, was DRY widerspricht) und es diverse Bibliotheken statisch machen (was zu unnötigen Redundanzen in Caches führt).] > Womit ich wieder zu meiner Frage komme, wie ich diese auflösen kann? > Oder anders gefragt: woher weiss ich, welche Abhängigkeiten meine lokale > Biliothek noch hat? RTFM, UTSL. Vorher aber musst Du das Problem korrekt analysieren. „funktioniert NICHT“ ist unzureichend. Siehe auch . -- PointedEars FAQ: | | Twitter: @PointedEars2 | Please do not cc me./Bitte keine Kopien per E-Mail.