search check home clock-o tag tags chevron-left chevron-right chevron-up chevron-down twitter facebook github rss comment comments terminal code

[Webmastering] Koduj strony w stylu Zen

[Webmastering] Koduj strony w stylu Zen

Dzisiejszy wpis będzie o tym jakich narzędzi można użyć, aby dobrze pisać kod stron internetowych i aplikacji internetowych. Zamierzam omówić kilka bardzo użytecznych narzędzi oraz sposoby ich wykorzystania. W pewnym stopniu, ukażę też mój codzienny warsztat pracy, dzięki któremu mogę pisać kod, którego nie muszę się wstydzić.

Twoje okno na ... kod

Pierwszą rzeczą, wręcz niezbędną, jest wybór odpowiedniego narzędzia do pisania kodu, nie ma znaczenia czy piszesz w CSS, JS, PHP czy w jakimkolwiek innym języku. Znaczenie ma narzędzie, którego głównym zadaniem jest danie poczucia pewności, jakości i elastyczności w pisaniu kodu.

Dla mnie takim narzędziem jest edytor Sublime Text 2. Dzięki niemu, nie muszę się martwić o brak jakiejkolwiek dla mnie ważnej funkcjonalności, np. kolorowanie składni czy też szybkie wyszukiwanie kawałków kodu w różnych plikach. Niewątpliwą zaletą tego edytora kodu jest jego otwartość na rozszerzenia tworzone przez społeczność fanów tego edytora. Dzięki nim, mamy dostęp do bibliotek kodu (code snippets) dla różnych bibliotek JavaScript (jQuery, Backbone) czy chociażby, tak bardzo popularnego, frameworka do prototypowania aplikacji jakim jest Twitter Bootstrap.

Sublime pozwala również na tworzenie własnych bibliotek kodu czy też rozszerzeń (interfejsu lub funkcjonalności). Takimi rozszerzeniami, które implementuję na każdym komputerze na którym pracuję są:

  1. Snippety do uzupełniania kodu

    Dwa, które muszą być u mnie zawsze to:

    Snippet ze strukturą dokumentu w HTML5

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
          <snippet>
            <content><![CDATA[
              <!DOCTYPE html>
              <html>
              <head>
                <meta charset="utf-8">
                <title>TEST</title>
                <meta name="viewport" content="width=device-width, maximum-scale=1.0">
                <meta name="author" content="Piotr Nalepa">
                <link rel="stylesheet" href=""/>
              </head>
              <body>
                  <script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
                  <!--[if lt IE 9]>
                    <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
                  <![endif]-->
              </body>
              </html>
            ]]></content>
            <tabTrigger>html5</tabTrigger>
          </snippet>

    Taki snippet można uruchomić po wpisaniu w edytorze słowa html5 i wciśnięciu klawisza Tab.
    Snippety kodu można utworzyć poprzez kliknięcie w Tools->New Snippet w edytorze Sublime.

    Snippet JS Strict

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
          <snippet>
            <content><![CDATA[
            (function () {
              'use strict';
            })();
            ]]></content>
            <tabTrigger>js-strict</tabTrigger>
            <scope>source.js</scope>
          </snippet>

    Ten kawałek kodu generuje szkielet funkcji samowywyłującej się wraz z implementacją JS Strict, czyli dyrektywy do walidacji kodu JS. Będzie on odpalany tylko i wyłącznie w plikach gdzie jest obsługiwany kod JavaScript (czyli pliki z rozszerzeniem *.js oraz między tagami script w HTML). Ten snippet odpalimy po wpisaniu js-strict i wciśnięciu klawisza Tab.

  2. Nieszablonowy układ paneli

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
          [{
            "id": "view",
            "children": [{
              "id": "layout",
              "children": [{
                "command": "set_layout",
                "caption" : "Mój układ paneli: 2 wiersze, dolny wiersz podzielony na dwa kolumny",
                "mnemonic": "C",
                "args": {
                  "cols": [0.0, 0.5, 1.0],
                  "rows": [0.0, 0.5, 1.0],
                  "cells": [
                    [0, 0, 2, 1],
                    [0, 1, 1, 2],
                    [1, 1, 2, 2]
                  ]
                }
              }]
            }]
          }]

    Niestandardowy układ paneli w edytorze Sublime Text 2

    Powyższy kod utworzy niestandardowy layout edytora, który podzieli ekran na 3 części. Górna połowa ekranu, jest panelem o pełnej szerokości. Natomiast dolna połowa ekranu edytora Sublime jest podzielona na 2 mniejsze panele o identycznej szerokości. W ten sposób, mogę pracować nad głównym plikiem JS i pod ręką mieć podgląd na inne pliki do których się odwołuję.

    Tak napisany kod trzeba zapisać jako plik o rozszerzeniu [nazwa-pliku].sublime-menu w katalogu C:\Users\[nazwa-użytkownika]\AppData\Roaming\Sublime Text 2\Packages\User (tak wygląda ścieżka dla systemu Windows).
    Utworzony w ten sposób uklad paneli w edytorze możemy użyć za pomocą opcji wyboru układu paneli (Layouts).

  3. Niezbędne rozszerzenia dla pracy webdevelopera

    • Emmet - szybkie pisanie kodu HTML i CSS,
    • SublimeCodeIntel - autouzupełnianie kodu i nie tylko,
    • SublimeLinter - walidacja kodu JS
  4. Ulubione schematy kolorów kolorowania składni

    Zdecydowanym faworytem jest zestaw wyglądów od Dayle Rees, a w nim - Laravel. Jak dla mnie, mieszanka ciepłych kolorów wraz z ciemnoszarym tłem, to idealna kompozycja kolorów, która nie męczy wzroku podczas dłuższej pracy przy monitorze.

    Sublime Dayle Rees Laravel

Kreuj wygląd strony w stylu Zen

Tak jak wcześniej wspomniałem, do szybkiego pisania kodu HTML i CSS używam Emmeta. Jest to następca popularnego rozszerzenia o nazwie Zen Coding.
Jego zadaniem jest usprawnienie pisania kodu HTML i CSS poprzez pisanie jak najmniejszej ilości tekstu, która zostanie następnie przekonwertowana na pełnoprawny HTML czy też CSS. Temat związany z wykorzystaniem tego rozszerzenia jest na tyle duży, że można bez problemu napisać osobny wpis dotyczący jego możliwości wykorzystania.
Jako przedsmak, warto się zapoznać z tym przeglądem funkcjonalności.

Debugguj w stylu Ninja

Pisanie kodu JS już nie jest takie samo jak kilka lat temu, kiedy zbytnio nie dbano o konwencje i traktowano JavaScript jako język skryptowy do pisania tylko i wyłącznie badziewnych efektów na stronach internetowych. Dzisiaj, możliwości języka JavaScript są coraz bardziej rozszerzane. Można się już spotkać nie tylko z JavaScriptem wykonywanym tylko i wyłącznie w oknie przeglądarki internetowej. JavaScript pojawia się również jako pełnoprawny język backendowy, ktory odpowiada za pracę zasobów serwera w sposób asynchroniczny, tak jak to może mieć miejsce w bibliotece Node.js.
Ponadto, w JavaScripcie powstały i nadal powstają potężne frameworki do budowania aplikacji internetowych.

Za każdym razem, gdy piszemy kod JS, nie ważne czy po stronie przeglądarki czy też po stronie serwera, warto dbać o zachowanie jednolitego standardu kodu, co zapewnia wyższą jakość aplikacji, łatwiejsze zarządzanie jej kodem, a także pomaga w wystrzeganiu się błędów wynikających z różnic działania kodu JS w zależności od silnika przeglądarki.
W codziennej pracy bardzo pomocnymi narzędziami są rozszerzenie SublimeLinter - pomaga zachować jednolitą strukturę kodu, walidując go według ustalonych reguł, oraz wszelkiego rodzaju konsole JavaScript dostarczane wraz z przeglądarkami, np. Firebug czy też Chrome Developer Tools.

Dzięki tym dwóm ostatnim, jestem w stanie debuggować kod i sprawdzić jak zmieniają się wartości zmiennych na poszczególnych etapach realizacji kodu JS przez przeglądarkę. W tym celu warto korzystać z wywoływacza debugger;, który możemy wstawiać bezpośrednio w kodzie JS i przeglądarka automatycznie spauzuje wykonywanie kodu w momencie, gdy dojdzie do miejsca gdzie wywoływacz został wpisany w kodzie. Bardzo to pomaga zrozumieć, to co się dzieje w trakcie działania programu.

W przypadku tworzenia aplikacji czy stron dla środowisk zamkniętych, np. dla aplikacji w nowoczesnych telewizorach, zamiennikiem przeglądarkowego Firebuga jest Firebug Lite, ktory możemy dołączyć bezpośednio do kodu strony. W ten sposób, mamy możliwość debuggowania (ograniczonego, ale zawsze to niż nic) aplikacji w starszych przeglądarkach i zamkniętych środowiskach uruchomieniowych.

Podsumowanie

Pokrótce przedstawiłem swoje środowisko pracy na co dzień. Dodam tylko, że wspomniane wcześniej rozszerzenia, np. Emmet, można zainstalować bezpośrednio z poziomu edytora Sublime Text 2 po zainstalowaniu menedżera kontroli pakietów. Po zainstalowaniu go dostaniesz dostęp do wymienionych rozszerzeń, a także wielu, wielu innych które na pewno w jakiś sposób będą ułatwiały pracę w zależności od potrzeb.

Pochwal się swoim miejscem pracy

środowisko pracy

  • Taki offtop – po zobaczeniu tytułu wpisu w czytniku przeraziłem się, że to będzie kolejna reklama tego hostingu Fiedoruka Zencoś tam. Jaki to on nie jest „cudowny dla blogerów”, etc. Na szczęście… uff 😉

  • Comandeer

    „Pochwal się swoim środowiskiem pracy”… OK 😀 http://scr.hu/5ax/j71yy
    a jeśli chodzi o software: Sublime ,kEd, BlueFish… uruchamiam ten, na który mam ochotę 😉

  • Super artykuł. Też używam Sublime Text 2, ale nie wykorzystywałem jeszcze żadnych snippetów. Chciałem raz podinstalować Twitter Bootstrap, to na GitHub w instrukcji jest napisane, że trzeba klonować repozytorium, a nie bardzo wiem o co chodzi… No ale spróbuję przysiąść do tematu, bo widzę, że można ciekawe rozwiązania zastosować w programie.

  • Matslom

    Ja używam jeszcze pluginu SFTP do SublimeText oczywiście.
    Bardzo dobre rozwiązanie, jeżeli trzeba przez dłuższy czas edytować jakieś pliki na serwerze FTP.

  • Rudy

    Jaki to model klawiatury?

  • To jest ten model klawiatury przeowodowej

  • Mateusz Gachowski

    Co do workflow sublime’a polecam jeszcze następujące pluginy:

    – Gists
    – AdvancedNewFile
    – Alignment
    – DocBlockr
    – FileDiffs
    – HTML Snipplets
    – jQuery
    – jQuery Snippet Packl
    – Less
    – LoremIpsum
    – Nettuts+ Fetch
    – Sublime Linter
    – OpenFromPath
    – PlainTasks
    – HTTP Requester
    – Placeholders
    – LiveReload
    – Git

    + Ciekawostka, jeśli ktoś nie wie jeszcze jak przejść za pomocą klawiatury do sidebar’a:

    ctrl + 0 (Mac, windows pewnie identycznie)

  • Mateusz Gachowski

    Polecam skonfigurować jeden w taki sposób, abyś zawsze na niego miał ochotę 😉

  • A czy to jakaś różnica w ilu edytorach powstanie jakiś projekt? Ważne, żeby działał. A ja strasznie nie lubię być ograniczony – jeśli chcę skorzystać z 40 edytorów i w każdym napisać po 10 linijek kodu, to to zrobię 😉

  • Mateusz Gachowski

    Jeśli mówimy o profesjonalnym projekcie, to oczywiście, użyte narzędzie jest bardzo ważne. Do czego? Choćby właśnie do automatyzacji pewnych procesów u wszystkich osób w teamie, przygotowania narzędzi do wstępnego code-review czy też po prostu ułatwienia obsługi przy pomocy innym. Używanie jednego, wspólnego narzędzia ma mnóstwo dobrych stron.
    Co do „napisania projektu”, oczywiście, że możesz w 40 edytorach. Możesz również użyć notatnika. Albo maszyny do pisania.

  • Widzisz, ja zwykle pisuję sam, dlatego też nie mam dylematu wspólnego narzędzia. Gdy się pojawi, wówczas się po prostu dostosuję