Kompletny kod aplikacji w jednym pliku HTML, zawierającym kod JavaScript w tagu <script>


Nasza aplikacja działa, ale nie jest to jeszcze aż tak wygodne, jakim by mogło być, ponieważ musimy najpierw odpalić plik HTML w przeglądarce, a potem dodatkowo odpalić plik JavaScript z poziomu konsoli i zakładki snippets.

Nasz HTML i JavaScript żyją swoim życiem. Musimy natomiast powiązać te pliki. Możemy to zrobić na 2 sposoby.

Pierwszym sposobem jest skopiować kod naszej aplikacji JavaScript z poprzedniej rozdziału (lub z pliku z zakładki snippets) i wkleić go wewnątrz tagu <script></script> bezpośrednio w pliku HTML (stwórz nowy plik z nową nazwą).

Nasz kod HTML musimy z kolei osadzić w szablonie HTML, co już robiliśmy tutaj):

<!DOCTYPE html>
<html>
  <head>
    <title>Todo App | kodujemywbiurze.pl</title>
  </head>

  <body>
    <!-- kod HTML -->
    <h1>Twoje zadania</h1>

    <hr>

    <button onclick="addTask()">dodaj zadanie</button>

    <ul id="tasks-list">

    </ul>

    <button onclick="deleteAllTasks()">wyczyść listę</button>

    <!-- dodaj poniżej otwierający tag <script> -->
    <script>
      /* tutaj wklejamy kod JavaScript pomiędzy otwierającym tagiem <script> i zamykającym tagiem </script> */
      console.clear();

      function getTasksFromLocalStorage() {
        const storedTasksStringified = localStorage.getItem("tasks");

        const storedTasks = JSON.parse(storedTasksStringified);

        return storedTasks;
      }

      let tasks = getTasksFromLocalStorage() || [];

      const tasksList = document.getElementById("tasks-list");

      function appendTaskToTheTasksList(task, index) {
        const li = document.createElement("li");
        li.textContent = task + " ";
        
        const deleteButton = document.createElement("button");
        deleteButton.textContent = "usuń";

        deleteButton.onclick = function() {
          deleteTask(index);
        }
        
        li.appendChild(deleteButton);

        const addAtIndexButton = document.createElement("button");
        addAtIndexButton.textContent = "dodaj przed";

        addAtIndexButton.onclick = function() {
          addTaskAtIndex(index);
        }

        li.appendChild(addAtIndexButton);
        
        tasksList.appendChild(li);
      }

      function renderTasks() {
        tasksList.innerHTML = "";

        tasks.forEach(appendTaskToTheTasksList);

        console.log("Twoje zapisane zadania:", tasks);
      }

      function updateTasksInLocalStorage() {
        localStorage.setItem("tasks", JSON.stringify(tasks));
      }

      function addTask() {
        const newTask = prompt("Wpisz nowe zadanie:");

        tasks.push(newTask);

        updateTasksInLocalStorage();

        console.log("Do Twoich zadań zostało dodane nowe zadanie:", newTask);

        renderTasks();
      }

      function addTaskAtIndex(index) {
        const newTask = prompt("Wpisz nowe zadanie:");
        
        tasks.splice(index, 0, newTask);

        console.log("Do Twoich zadań zostało dodane nowe zadanie:", newTask);

        updateTasksInLocalStorage();

        renderTasks();
      }

      function deleteTask(index) {
        tasks.splice(index, 1);

        updateTasksInLocalStorage();

        renderTasks();
      }

      function deleteAllTasks() {
        tasks = [];

        console.log("Wszystkie zadania zostały usunięte...");

        updateTasksInLocalStorage(tasks);

        renderTasks();
      }

      renderTasks();

      /* dodaj poniżej zamykający tag </script> */
    </script>
  </body>
</html>

Teraz możemy odpalić ten plik w przeglądarce, dzięki czemu aplikacja będzie działać natychmiast - bez uruchamiania żadnego dodatkowego pliku js w snippets, jak to miało miejsce dotychczas!

Wszystko jest w jednym pliku - nasza prawdziwa aplikacja webowa, którą możemy zapisać na komputerze lub też przesłać mailem znajomemu, dzięki czemu pobierze plik i odpali na swoim komputerze.

W związku z tym pamiętaj, że gdybyś chciał/a pisać kod HTML i JavaScript w jednym pliku, to powinieneś/aś utworzyć plik HTML, po czym wypełnić go w następujący sposób:

<!DOCTYPE html>
<html>
  <head>
    <title>Tutaj wpisz tytuł swojej aplikacji/ strony internetowej</title>
  </head>

  <body>
    <!-- tutaj poniżej pisz kod HTML -->

    <!-- tutaj (po kodzie HTML) możesz pisać kod JavaScript wewnątrz tagu <script> -->
    <script>
      // kod JavaScript...
    </script>
  </body>
</html>