Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Importy, babel i globale #4

Closed
senghe opened this issue Mar 24, 2017 · 6 comments
Closed

Importy, babel i globale #4

senghe opened this issue Mar 24, 2017 · 6 comments

Comments

@senghe
Copy link

senghe commented Mar 24, 2017

Przestudiowałem trochę Twój kod, również próbowałem zrobić pull-request odnośnie importów, jednakże:

  1. Importy wymagają babela, którego niemniej udało mi się zainstalować :)
  2. Z tego co widziałem u Ciebie w kodzie, to używasz zmiennych globalnych - tak jak opisywał to ktoś w poprzednim issue. Trochę dlatego wstrzymałem się z pull-requestem.

Te dwa punkty są ze sobą ściśle związane, ponieważ:

  1. Musisz mieć załadowane przez to skrypty w odpowiedniej kolejności (bo ten pierwszy ustawia coś w globalnym window, a drugi musi po nim się załadować, by widzieć te elementy. Przykład - flaga canBoostFlag). Jest to uciążliwe, możesz dojść do zapętlenia (w najgorszym wypadku).
  2. Postawienie babela (na es6) wymaga, abyś jasno określał, gdzie chcesz umieścić zmienną (let, var, window) i kilku innych.

Moja propozycja jest taka, abyś swoje klasy zrefactorował w taki sposób, by nic nie wychodziło do window. W taki sposób będziesz mógł wygodnie kompilować sobie do babela wszystko poleceniem typu

babel compile js/* -o build/main.dist.js

Do tego na końcu ścieżki dodaj sobie js/game.js - i wtedy korzystaj z całego środowiska w jednym miejscu :)

Sam w taki sposób pisałem (jeszcze bez es6) i ustrzegłem się dzięki temu wielu błędów spowodowanych wymuszaniem odpowiedniej kolejności ładowania skryptów.

PS. Chcę na youtuba :D

@JavaDevMatt
Copy link
Owner

JavaDevMatt commented Mar 25, 2017

Dzięki za nową garść informacji 👍 na razie chcę dokończyć resztę funkcjonalności starego prototypu w mojej nowej strukturze. Później będę brał się za te uwagi.
Ta kolejność ładowania to na pewno źródło niepotrzebnych błędów, które warto wyeliminować.

@JavaDevMatt
Copy link
Owner

JavaDevMatt commented Mar 30, 2017

Pobawiłem się trochę tym babel. Na pewno będę musiał tak budować na produkcję, bo koniecznie chcę korzystać z tych class z es6. Będę też porządkował zmienne z tym let etc.

Zastanowię się jeszcze, czy na pewno będę szedł w te importy. Po przeróbce z babel (z importami) musiałem dodać do projektu require js - jest to niezbędna zależność, czy robiłeś to jakoś inaczej (widzę, ze ten babel ma masę opcji jak to konwertować - możliwe, że robiłem coś nie tak) i może nie wymagał tej dodatkowej zależności?

@senghe
Copy link
Author

senghe commented Mar 30, 2017

Ogólnie rzecz biorąc, masz dwa wyjścia:

  1. Pisać wszystko samemu, zajmie Ci to sporo czasu i najprawdopodobniej jak określiłeś na blogu wypalisz się.
  2. Korzystać z dobrodziejstw community, w tym z require.js, babela, grunta, gulpa i wielu innych, i pisać gry, które później będziesz sprzedawał :)

To, że budując produkt - budujesz zależności - jest w dzisiejszym świecie nierozłączne. Ważnym jednak jest efekt końcowy, plus to, czy rozwijanie produktu jest łatwe czy też nie. Moja propozycja jest taka: pobaw się tymi klockami dłużej, napisz kilka projektów, i sam oceń - ale nie odrzucaj tego po pierwszych instalacjach, bo nie poznasz wygody tych rozwiązań.

@Baakoma
Copy link

Baakoma commented Mar 30, 2017

Polecam zapoznać się z NodeJS + gulp/babel i innych paczek npm. Sam na początku myślałem, że to tylko utrudni, skomplikuje pracę, ale teraz nie wyobrażam sobie pracować bez tych narzędzi - tak bardzo pomagają w pracy, że nie masz pojęcia :) Możesz sobie porównać ten proces budowania paczki do kompilacji/budowania gotowej aplikacji w Javie, a NodeJS/npm do np. Mavena. Przygotowanie narzędzi to maksymalnie godzina roboty, a ile czasu zaoszczędzisz, gdy wszystko sobie zautomatyzujesz (np. automatyczne uruchomienie babela przy zmianach w plikach JS).

Osobiście używam babela jak i innych tego typu narzędzi jako pluginy do gulpa, polecam :)

@senghe senghe closed this as completed Apr 4, 2017
@jpacanowski
Copy link

A ja z kolei polecam zapoznać się z ESLint. Możesz dodać różne reguły które ciebie interesują i chcesz się ich trzymać podczas pisania kodu. Wtedy np. wyświetla tobie błąd gdy stworzyłeś zmienną ale jej nie użyłeś w kodzie, albo wyświetli błąd gdy w kodzie używasz słowa kluczowego 'var'. Całą listę reguł możesz znaleźć tutaj: http://eslint.org/docs/rules/

Tutaj, wydaje mi się, kilka ważniejszych reguł:

  • 'no-var'
    (zwróci błąd gdy użyjesz w kodzie 'var')

  • 'camelcase'
    (wymaga konwencji nazewniczej camelCase)

  • 'strict'
    (wymaga użycia 'use strict')

:)

@JavaDevMatt
Copy link
Owner

Stosowaliśmy w pracy kiedyś lint do Androida. Może kiedyś wprowadzę w innym projekcie. Aktualny projekt to eksperyment, który będzie rozwijany jeszcze jakieś 2 miesiące i wprowadzanie teraz linta, to moim zdaniem zdecydowanie przedwczesna optymalizacja. Jednak dziękuję za propozycję! Cieszę się i bardzo doceniam, gdy ktoś się angażuje. :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants