JavaScript stał się oczywiście niezbędny; jednak wciąż jestem w tym nowy i stwierdziłem, że trudno mi walczyć z uczuciem, że wydaje się, że to taki bałagan, i nie chcę się z tym teraz uporać. Rozumiem języki inne niż JavaScript, ponieważ nie potrafię poradzić sobie z tym strachem. Mam wrażenie, że pisząc JavaScript, staram się namalować portret szczeniąt Weimaraner.
Zwykle pomaga mi pamiętać o kilku najważniejszych dyrektywach, które mogę zadać sobie każdy ruch, który wykonam. (Moim zdaniem garść to pięć lub mniej.)
Czy możesz podać pięć (lub mniej) pytań specyficznych dla JavaScript, które powinienem zadawać sobie przy każdym ruchu, który wykonuję, kiedy koduję JavaScript? Co by to było?
Aktualizacja: aby wyjaśnić, nie proszę o pięć rzeczy, o których należy pamiętać podczas nauki JavaScript; Proszę o pięć pytań, aby zawsze zadawać sobie pytanie, które każdy powinien zawsze zadawać. Pytania na wysokim poziomie, takie jak: „Czy mogę to powtórzyć w innym miejscu?” lub „czy ta nazwa zmiennej / funkcji jest wystarczająco specyficzna (lub zbyt szczegółowa)” <==, z wyjątkiem tych przykładowych pytań, które nie są specyficzne dla JavaScript. Szukam dyrektyw charakterystycznych dla JavaScript.
Odpowiedzi:
Odpowiem na to w dwóch częściach. Jednym z nich jest „Pięć lub mniej porad dotyczących nauki pisania dobrego JavaScript”. Drugi to „Pięć lub mniej porad dotyczących pisania dobrego JavaScript”.
Uczenie się:
Robić:
EDYCJA (dodawanie pytań w celu zachowania zgodności z PO):
Do jakiego zakresu się odwołuję?
Powinno to pomóc w przypadku przeciekających globałów, procedur obsługi zdarzeń i kiedy używać zamknięć.
Czy się powtarzam?
Ważne jest prawidłowe pozyskiwanie i stosowanie technik OO. Używaj ich mądrze.
Czy mój kod się powtarza?
Niezwykle łatwo jest znaleźć dostęp do DOM w pętli lub tworzyć funkcje (anonimowe lub w inny sposób) w pętli. Należy pamiętać, że może to być prawdą kodu, który używa
setTimeout
lubsetInterval
, jak również tradycyjne pętle.Czy to oznacza, co myślę, że to oznacza?
Wartości prawdy i fałszu w JS mogą być nieco trudne, szczególnie gdy używa się nieścisłych porównań (
==
w przeciwieństwie do===
). Istotne może być także dynamiczne pisanie, wymuszanie typów i to, czy odwołujesz się do obiektów czy literałów.źródło
Po pierwsze, dowiedz się, jak działa ta technologia.
Musisz to wiedzieć, ponieważ wiedza na temat tego, jak to działa, ponieważ napotkasz problemy z siecią lub, jak widziałem niezliczoną ilość razy, ludzie całkowicie nieświadomie rozumieją, czym tak naprawdę jest strona serwera i strona klienta. Jednym z najczęstszych pytań newb, które widzę, jest: „Jak zmusić JS do zmiany zmiennej w kodzie ASP ?!”
Zrozum, że Twój kod jest większy niż Ty lub Twoja konkretna sytuacja
cell.innerHTML = "<script>alert("xss")</script>"
, a pojawi się okno alertu, zrobiłeś to źle.<noscript>
tagów, aby ostrzec go o tym./[a-z ']/i
, ale zawierają akcenty w języku hindi, arabskim (jest to problem istniejący od niedowidzących programistów), chiński , i inni. Zrozumienie zestawów znaków, Unicode i UTF-8.Jesteś programistą, a nie fabryką makaronów. Przestań pisać spaghetti.
"This fizzes the bizz"
lub te w połowie angielskie, w połowie francuskie, nie są pomocne. Opisz, co robi funkcja. Opisz złożone sekcje kodu.<a href="javascript:alert("foo")">
. FFS NIE RÓB TO. Poczekaj na załadowanie pełnego dokumentu, oddziel kod JavaScript od dokumentu HTML. To są podstawowe praktyki OOP 101, po prostu nigdy nie umieszczaj JS lub CSS w dokumencie HTML. Zastanów się, jak to zrobić poprawnie lub znajdź kogoś, kto wie, jak to zrobić. Ponownie zadawaj pytania.Javascript:foo("buz")
jest psudeo-protokół, to nie jest w pełni obsługiwany, a jeśli nie w linii javascript nie będzie go używał w pierwszej kolejności. Obiecuję wam z głębi serca, że nie ma żadnego powodu na tej ziemi ani nigdzie we wszechświecie, że POTRZEBUJESZ umieścić javascript w elemencie HTML. Zawsze. Więc nie rób tego. Nawet nie pomogę ludziom, którzy to robią, to takie złe.Zastanów się, jak napisać kod w taki sposób, aby nie łamał się cały czas.
main_backup_20110911.js.bak.1
Tracisz pliki, katalog staje się nieuporządkowany, nie możesz łatwo „przewinąć” do poprzedniego punktu w czasie. Nie widzisz, co się dzieje, nie możesz tworzyć poprawek do kodu. Zacznij więc naukę GIT, zajmie ci to godzinę, a już nigdy nie wrócisz.Napisz JavaScript, który ludzie kochają
Zawsze koncentruj się na podstawach.
for (;;)
i dlaczego używaszfor( in )
pętli. Kiedy używać pętli while. Przestań zagnieżdżać IF, jeśli możesz po prostu użyć skrzynki przełączników. Obiekty nie zachowują porządku, więc nie używaj ich jako tablicy; stara Opera / FF, stara BRAK, czasem Flash nie uszanuje kolejności twoich obiektów. Użyj tablicy, jeśli chcesz zachować porządek rzeczy, użyj obiektu, jeśli chcesz obiekt (coś, co nie ma porządku elementów).Skoncentruj się na długiej grze, a nie na szybkim flashowaniu i zgiń.
which
” upuść kilka kodów, których nikt nie może użyć i zniknąć. Nic nie wniósłeś. Nie używaj zmiennych takich jaka
ichezburger
.Dla wszystkich zainteresowanych tak naprawdę wzięłem większość z osobistych notatek z samouczka, którego nigdzie nie pisałem.
źródło
TCPIP(HTTP(ClientServerRelationship(), Cookies(), HTML(JavaScript(Knowledge))))
Przeczytaj Javascript Douglasa Crockforda : Dobre części . To całkiem wskazówka, ale szczerze mówiąc, to najlepsza rada, jaką kiedykolwiek słyszałem o pisaniu dobrego javascript.
Podobnie przeczytaj artykuły Douglasa Crockforda na temat Javascript .
źródło
źródło
Oto kilka pytań, które powinny zachęcić Cię do korzystania z JavaScript.
Jak działa JSON i do czego służy?
Dlaczego funkcje są obiektami w JavaScript?
Dlaczego nie powinienem używać eval?
Jak tworzyć zdarzenia w javascript?
Jak mogę wykryć funkcje w javascript?
Prawie obejmuje większość rzeczy, które musisz zrobić w JavaScript.
źródło
eval()
, sprawdź dwukrotnie i potrójnie w inny sposób; prawie zawsze istnieje czystszy i łatwiejszy sposób, chyba że faktycznie próbujesz wykonać całą wartość JavaScript.(function() {/* stuff */})()
to dobry sposób na zamknięcie zestawu kodu i utworzenie dla niego zasięgu lokalnego. Używanie obiektów to inny, często lepszy sposób; obiekty są bardziej analogiczne do przestrzeni nazw w innych językach, jeśli są używane w ten sposób. Tylko uważaj nathis
. W przeciwieństwie do większości innych języków,this
nie zawsze odwołuje się do tego, co można intuicyjnie sądzić. Pamiętaj również, że jeśli nie określono inaczej, wszystkie zmienne JS, funkcje i inne obiekty są globalne, nawet w wielu.js
plikach.źródło
return
, a następny wiersz zawierający twoje dane, tak naprawdę powiedziałeś zreturn ;
powodu ASI. Powiedziałbym, że ważniejsze jest zrozumienie reguł ASI i białych znaków niż „zawsze używaj średników”. Ale to świetny sposób na uratowanie siebie.I'd say it's more important to understand ASI and whitespace rules than it is "always use semicolons."
Uważam, że klasy są dość potężnym narzędziem do struktury kodu. Istnieje wiele zasad agnostycznych z języka, dotyczących projektowania systemów opartych na klasach, a niektóre zasady OO są w rzeczywistości bardziej oczywiste zaimplementowane podczas korzystania z klas.
Dlatego proponuję rzucić okiem na CoffeeScript .
Stamtąd sugeruję, abyś po prostu zebrał informacje o tym, jak wdrożyć SOLID , DRY , GRASP , KISS i YAGNI , a co ważniejsze, jak postępować w sytuacjach, w których wydają się być w konflikcie (nigdy tego nie robią, tylko ich zrozumienie lub problem na bieżąco). Jest dość łatwy do znalezienia, nawet przy wymianie stosów.
Pamiętaj, że zasady te dotyczą w równym stopniu „surowego” programowania JavaScript. Jednak wiele treści, które można na nich znaleźć, zilustruje je przy użyciu języków opartych na klasach i dlatego może być przydatne do programowania w języku, w którym nie ma zbyt dużego nakładu pracy na ich zrozumienie.
Osobiście uważam, że JavaScript jest niezwykle potężnym językiem, ale tak naprawdę musisz najpierw dobrze zrozumieć inne języki, aby naprawdę docenić ten fakt.
źródło
Zakładam, że używasz JavaScript do tworzenia interfejsu użytkownika po stronie klienta w aplikacji internetowej.
1) Czy powinno to być po stronie klienta, czy po stronie serwera? Wiem, że odszedłem i napisałem poważne fragmenty kodu, które naprawdę zasługiwały na bycie na serwerze i odwrotnie. Wiele razy zastanawiam się nad wywołaniem AJAX, aby coś, co ostatecznie po prostu lepiej znalazło się w kodzie serwera, zostało uwzględnione po drodze. Szczególnie rzeczy o charakterze statycznym, ale zmieniające się dość regularnie (na przykład lista kategorii).
2) Czy istnieje wtyczka, która już to robi? Często używam JQuery, a odpowiedź brzmi prawie zawsze TAK! Często biorę kod wtyczki, który ktoś napisał, i dostosowuję go do moich potrzeb (zwykle dodając dodatkowe klasy do rzeczy itp.), Ale rzadko muszę zaczynać od zera.
3) Czy Javascript jest właściwym miejscem do tego? Czasami przyłapuję się na dodawaniu do zestawu całej gamy dynamicznych stylów, kiedy bardziej sensowne jest używanie inteligentnego CSS.
4) Czy powinienem używać innego narzędzia? Z tym ostatnio zmagam się. Istnieje kilka alternatyw javascript, takich jak skrypt kawy, które są dobrze obsługiwane na moim stosie (Rails 3.1) i zastanawiałem się, czy przenieść tam duży kod.
5) Czy ten kod JavaScript jest dobrym kodem? JavaScript jest kodem jak każdy inny kod. Czy ten kod jest tak dobry, jak reszta mojego kodu? Jeśli nie, dlaczego nie? Czy to jest jednorazowe? Czy jestem leniwy?
źródło