Minęło trochę czasu, odkąd dokonałem jakiegokolwiek znaczącego rozwoju sieci i chciałbym skorzystać z najnowszych praktyk, ale staram się wizualizować przepływ pracy, aby uwzględnić wszystko.
Oto, czego chcę użyć:
- Framework CakePHP
- jsmin (JavaScript Minify)
- SASS (Synctactically Awesome StyleSheets)
- Git
CakePHP:
Dość zrozumiałe, wprowadzaj modyfikacje i aktualizuj źródło.
jsmin:
Po zmodyfikowaniu skryptu należy ręcznie uruchomić program jsmin, aby wygenerować nowy zminimalizowany kod, czy lepiej byłoby uruchomić przechwytywanie przed zatwierdzeniem, które automatycznie generuje wyniki jsmin zmienionych plików javascript. Załóżmy, że nie mam wiedzy na temat implementowania przechwytywania zmian.
SASS:
Bardzo podoba mi się to, co ma do zaoferowania SASS, ale zdaję sobie również sprawę, że kod SASS nie jest domyślnie obsługiwany przez przeglądarki, więc w pewnym momencie kod SASS musi zostać przekształcony w normalny CSS. W którym momencie przepływu pracy jest to wykonywane.
Git
Jestem przerażony przyznać się do tego, ale ostatnim razem, gdy dokonałem jakiegokolwiek znaczącego rozwoju sieci, nie użyłem kontroli źródła SCM (IE, użyłem kontroli źródła, ale składało się to z bardzo szczegółowego dziennika zmian z kopiami zapasowymi).
Od tego czasu mam duże doświadczenie w korzystaniu z Git (a także mercurial i SVN) do tworzenia desktopów, ale zastanawiam się, jak najlepiej wdrożyć to do programowania stron internetowych.
Czy powszechną praktyką jest wdrażanie zdalnego repozytorium na hoście internetowym, dzięki czemu mogę przekazywać zmiany bezpośrednio do serwera produkcyjnego, czy też istnieje narzędzie wieloplatformowe (Windows / Linux), które ułatwia przesyłanie tylko zmienionych plików na serwer produkcyjny . Czy istnieją firmy hostingowe, które ułatwiają wdrożenie zdalnego repozytorium, czy potrzebuję dostępu SSH itp.
Wiem, jak to zrobić na własnym serwerze testowym ze zdalnym repozytorium z oddzielną gałęzią zdalnego śledzenia, ale nigdy wcześniej nie robiłem tego na zdalnym produkcyjnym serwerze hostingowym, więc nie znam jeszcze opcji.
Dodatkowy:
Zastanawiałem się nad wdrożeniem frameworka javascript, w którym osobne pliki javascript używane na stronie są kompilowane w jeden plik dla każdej strony na serwerze produkcyjnym, aby ograniczyć liczbę wymaganych plików do pobrania na stronę.
Czy coś takiego już istnieje? Czy istnieje już na wolności projekt open source, który implementuje coś podobnego, z czego mógłbym skorzystać i do którego mogę się przyczynić?
Biorąc pod uwagę, jak paranoiczni twórcy stron internetowych odnoszą się do wydajności (oraz fakt, że liczba żądań plików na stronie internetowej jest dużym hitem wydajności), zgaduję, że w sieci jest jakiś haker-czarodziej, który już rozwiązał ten problem.
źródło
jsmin
Jeśli nie masz dużo JS, możesz ustawić coś, co zminimalizuje za każdym razem, gdy klikniesz save. Jeśli masz dużo JS, włącz go do procesu wdrażania (zobacz Git poniżej).
SASS
Użyj Compass Framework . Zawiera SASS, a także mały skrypt, który „obserwuje” Twój katalog SASS i kompiluje pliki do CSS (w tym zminimalizowanego CSS, jeśli chcesz) za każdym razem, gdy zapisujesz. Jest zbudowany z myślą o RoR, ale można go łatwo używać z dowolną strukturą internetową, tworząc plik konfiguracyjny kompasu i uruchamiając polecenie „obserwuj kompas”. Kompas zawiera również wiele innych przydatnych narzędzi, takich jak Blueprint , przydatne miksy i automatyczne generowanie duszków za pomocą wtyczki Lemonade (która powinna zostać wbudowana w Compass w następnej wersji ).
Git
W zależności od wielkości / złożoności witryny, rozważ wykonanie Capistranomodel wdrażania. Nie jestem pewien, czy możesz używać Capistrano bezpośrednio z CakePHP, ale sedno jest następujące: każdy serwer produkcyjny ma „bieżący” folder, który zawiera cały kod, który jest uruchomiony w produkcji w tym momencie. Za każdym razem, gdy chcesz wdrożyć nowy kod, uruchamiasz skrypt, który ssh jest na każdym serwerze produkcyjnym i ma go (a) skopiować zawartość „bieżącego” folderu do folderu kopii zapasowej (z nazwą wydania / znacznikiem czasu), ( b) sprawdź najnowszy kod z Git w folderze „bieżącym” i (c) zacznij udostępniać ten nowy kod z folderu „bieżącego”. W ten sposób możesz w razie potrzeby przywrócić poprzednią wersję i dokładnie powiedzieć, która wersja jest w produkcji. Capistrano pozwala także dodawać różnego rodzaju zadania niestandardowe w ramach procesu wdrażania, w tym minifaction JS / CSS,
Dodatkowy
Tak, jest kilka. Google za coś takiego jak „CSS / JS concat”. Oto szybki, który znalazłem dla CakePHP: Asset Packer .
źródło