Mam pytanie do was czy korzystacie z tych wzorców programowania:
OBJECT LITERAL PATTERN
REVEALING MODULE PATTERN
Lub może macie inne z których korzystacie w pracy pisząc kod javascript.
Mam pytanie do was czy korzystacie z tych wzorców programowania:
OBJECT LITERAL PATTERN
REVEALING MODULE PATTERN
Lub może macie inne z których korzystacie w pracy pisząc kod javascript.
Stary, mamy 2k19, byłeś w śpiączce przez ostatnie 3 lata? :D
Teraz się używa czegoś takiego: http://2ality.com/2014/09/es6-modules-final.html
Desu napisał(a):
Stary mamy 2k19, byłeś w śpiączce przez ostatnie 3 lata? :D
nie rozumiem Cie. Podczas pisania kodu musimy przyjąć jakiś standard aby kod nie był kodem ala spegetti.
Dlatego pytam pisząc kod javascript z jakich wzorów korzystacie. Jeżeli uważasz, że nie robi się już tak to mnie proszę oświeć ;)
Te wzorce, o których napisałeś, to były hacki, ponieważ JS nie miał jako takiego systemu modułów. Teraz mamy import/export, więc nie trzeba już ich używać :)
Desu napisał(a):
Te wzorce, o których napisałeś, to były hacki, ponieważ JS nie miał jako takiego systemu modułów. Teraz mamy import/export, więc nie trzeba już ich używać :)
a to tak samo jest niepoprawne ? :
var people = {
people: ['Will', 'Steve'],
init: function() {
this.cacheDom();
this.bindEvents();
this.render();
},
cacheDom: function() {
this.$el = $('#peopleModule');
this.$button = this.$el.find('button');
this.$input = this.$el.find('input');
this.$ul = this.$el.find('ul');
this.template = this.$el.find('#people-template').html();
},
bindEvents: function() {
this.$button.on('click', this.addPerson.bind(this));
this.$ul.delegate('i.del', 'click', this.deletePerson.bind(this));
},
render: function() {
var data = {
people: this.people,
};
this.$ul.html(Mustache.render(this.template, data));
},
addPerson: function() {
this.people.push(this.$input.val());
this.render();
this.$input.val('');
},
deletePerson: function(event) {
var $remove = $(event.target).closest('li');
var i = this.$ul.find('li').index($remove);
this.people.splice(i, 1);
this.render();
}
};
people.init();
Kod wygląda spoko, ale w ten sposób pisało się jakieś 5 lat temu. Teraz mamy klasy, let/const, import/export. Poza tym nikt normalny nie robi już synchronizacji danych z widokiem ręcznie. Są od tego frameworki typu Vue, React, czy Angular.
Desu napisał(a):
Kod wygląda spoko, ale w ten sposób pisało się jakieś 5 lat temu.
ja wiem,że mamy w ES6 moduły, importy i exporty lecz jaki sens ma robienie 5 plików i importowanie tego oraz exportowanie dla kilku funkcji. Chyba, że się mylę i tka trzeba to robić.
Jak masz aplikację na 2 linijki, to żaden, ale jak zaczniesz pisać coś większego to szybko to docenisz. Mniejsze moduły są łatwiejsze w utrzymaniu. Import/export z natury nie zanieczyszcza globalnego zasięgu, więc nie trzeba tworzyć jakiś sztucznych konstrukcji.
Desu napisał(a):
Jak masz aplikację na 2 linijki, to żaden, ale jak zaczniesz pisać coś większego to szybko to docenisz. Mniejsze moduły są łatwiejsze w utrzymaniu. Import/export z natury nie zanieczyszcza globalnego zasięgu, więc nie trzeba tworzyć jakiś sztucznych konstrukcji.
Jasne z tym się zgodzę, ale jeżeli mam do zrobienia np 4 funkcje, które wykonują akcje np usuwania czegoś po kliknięciu, dodawania elementu po wpisaniu w input, usuwania czegoś po jakiś np warunku i nie jest to aplikacja tylko zwykła strona www to jaki sens ma robienie modułów ? Przy apliakcjach to jasna sprawa ale przy stronach gdzie mmamy jakies akcje na kliku czy wywołanie funkcji do gotowych bibliotek? poza tym kto pisze aplikacje w javascripcie czystym dzisiaj. Raczej aplikacje pisze się w frameworkach jak vue, angular itd, a one same wymuszają poprawne kodowanie.
Angular, Vue, czy React nic nie wymuszają. Można w nich zrobić takim sam, albo nawet większy burdel niż pisząc bez ich wykorzystania.
Jak masz faktycznie 4 funkcje, to nie ma sensu, ale mało kiedy się to na 4 funkcjach kończy. Jeżeli nie zaczniesz od początku sensownie kodować (podział na moduły, użycie jakiegoś babela, import/export), to później w miarę jak projekt się będzie rozrastał też Ci się nie będzie chciało nic zmieniać, bo "tylko jedną linijkę dopiszę". Później z tych 4 funkcji robi się gigantyczny moduł na 500 linii i jesteś w dupie.