Wpis z mikrobloga

@laki1: Żeby ograniczyć burdel? Przecież tam każdy jeden pakiet ciągnie za sobą kilkanaście kolejnych i mogę się założyć, że wiele razy ich funkcjonalności się powielają, bo jeden znalazł coś takiego a drugi znalazł coś innego. Albo jeden używał takiej wersji a drugi takiej.

@stacktrace: JS nie ma jakiegoś komitetu standaryzującego? Czemu taki komitet nie zbiera najpopularniejszych i najczęściej używanych bibliotek do jednej kupy aby potem pozostałe pakiety zamiast ciągnąć masę
@Khaine: tu dwie najgłośniejsze:
https://www.theregister.co.uk/2018/11/26/npm_repo_bitcoin_stealer/
https://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/

I tu jeszcze ciekawostka:
Każdy z Was pewnie słyszał o module left-pad i aferze, która wybuchła gdy jego autor Azer Koculu wycofał go z npm. Po wybuchu tej afery każdy programista innego stacku śmiał się do rozpuku, nie rozumiejąc dlaczego tak banalny kod stał się modułem. Ale słuchajcie jest lepiej! Niejaki Jon Schlinkert dodał do npm całe mnóstwo modułów o nazwach typu is-number, is-odd, is-even
@mch0588:

Unfortunately, one of those dependencies was left-pad. The code is below. It pads out the lefthand-side of strings with zeroes or spaces. And thousands of projects including Node and Babel relied on it.


XDDD

No to jest właśnie coś, co powinno jak byk siedzieć w bibliotece standardowej. Pierdyliard rzeczy tego używa a jest proste. Tak samo sam fakt, że ściąga się xx wersji przeróżnych rzeczy sygnalizuje fakt, że community chyba
@GlassOfJuice: No to widać albo nie rozszerza się dość szybko, albo ludzie nie korzystają z niej, bo każdy chce być hipsterem i mieć swoją własną bibliotekę (albo framework najlepiej xD) a nie tylko dorzucić się do tej standardowej, która podlega pewnie ostremu code review żeby na pewno nic nie jebło.
@GlassOfJuice: i co w niej masz? Array.length? w porównaniu do Javy, C++ czy .NET to bieda z nędzą (JS powstał w tym samym czasie co Java). W ES6 wprowadzili pare fajnych ficzerów ale i tak większość standardowych rzeczy trzeba ściągać z npma lub pisać z łapy.
@mch0588: Szczególnie, że nikt nie mówi że to ma być jeden #!$%@? w kosmos plik .js. W C# i C++ też mamy masę mini-dllek, ale pogrupowanych w jakieś namespace i pewnego rodzaju rodziny. No ale jak wszystko opiera się na takiej wspólnej bazie i ZAKŁADAMY, że open-closed principle jest zachowany (a za niezachowanie autora walić po łbie) - to jakiś moduł zamiast pojawić się 10 razy w 10 wersjach pojawi się
@Khaine: Ludzkie przyzwyczajenia to już nie wina JS.
@mch0588: Nie wiem co masz na myśli pisząc standardowych, dzisiaj np. JQuery jest już niepotrzebne. Jak chcesz bajeranckie funkcje możesz użyć np. biblioteki jak Lodash która nie ma zależności.
No to jest właśnie coś, co powinno jak byk siedzieć w bibliotece standardowej


@Khaine: praktycznie wszystko zostało tu już napisane, więc ja tylko dopowiem że to JEST w bibliotece standardowej (String.prototype.padStart), ale dopiero od pewnej wersji (a dokładnie od ES6)

\*flies away\*
Lodash


@GlassOfJuice: Gdzieś coś czytałem, że Lodash ponoć generuje od cholery nie zawsze potrzebnego kodu. Prawda to? Dla mnie to takie LINQ dla JSa, więc wygląda fajnie ale też niezbyt dobrze jakby coś co da się ręcznie napisać na piechotę aby miało 10 linijek nagle rozpierdzieli na 100+. Tutaj w przeciwieństwie do C++ czy C# fizyczna objętość kodu boli.

https://codeburst.io/why-you-shouldnt-use-lodash-anymore-and-use-pure-javascript-instead-c397df51a66

@Marmite: It's something. Problem w tym, że nawet jak biblioteka
@Khaine: Lodash to tylko biblioteka i sama w sobie nic nie generuje, więc jak linkujesz ją statycznie to masz do wyboru core z podstawowymi funkcjami 4 kB albo full 24 kB. Podejrzewam, że webpack czy czego tam używasz, kiedy buduje na produkcję to wywala wszystko co zbędne.
@Khaine: ogólnie za npm już będzie się długo ciągnąć smród, jak dla mnie należałoby to zaorać i posypać solą, no ale co zrobisz, nic nie zrobisz, chcąc nie chcąc nie korzystać z npm się nie da
@Marmite: Prawda jest taka, że katharsis mogliby zapoczątkować autorzy dużych frameworków. Wystarczy aby Angular, React czy Vue (no ten akurat jest jeszcze taki nie za duży w użyciu) powiedziały "dość" i zaczęły wykorzeniać zbędne zależności, których pewnie też im się nieźle nazbierało. Jednak większość skomplikowanych rzeczy się buduje na Angularze czy React, więc byłby to jakiś start. Zapewne pierwszy framework który się "oczyści" zacząłby wygrywać wydajnościowo (+ przejrzystością co tam tak
@Khaine: To jest artykuł, który mówi o tym, że natywne funkcje są znacznie szybsze od tych z lodasha co nie jest zaskoczeniem. Lodash powstał z underscore'a bardzo starej biblioteki, która implementowała wiele z takich funkcji jak np. find czy reduce zanim były dostępne w JS. Teraz dla wstecznej kompatybilności muszą zostać. To tylko dowodzi że standardowa biblioteka JS się rozwija ( ͡° ͜ʖ ͡°) i to w