En aquesta secció, ens centrarem en la construcció del projecte final. Aquest és un pas crucial on aplicarem tots els coneixements adquirits al llarg del curs per crear una aplicació completa i funcional. Segueix les instruccions pas a pas per assegurar-te que no et perds cap detall important.

  1. Planificació del Projecte

Abans de començar a escriure codi, és essencial tenir una idea clara del que volem construir. Aquí tens alguns passos per ajudar-te a planificar el teu projecte:

1.1 Definir els Requisits

  • Objectiu del Projecte: Què vols aconseguir amb aquest projecte?
  • Funcionalitats Clau: Quines funcionalitats ha de tenir l'aplicació?
  • Interfície d'Usuari: Com ha de ser la interfície d'usuari? Pots crear esbossos o wireframes.

1.2 Estructura del Projecte

  • Carpetes i Fitxers: Defineix l'estructura de carpetes i fitxers del projecte.
  • Tecnologies i Llibreries: Quines tecnologies i llibreries utilitzaràs? (React, Redux, etc.)

  1. Configuració Inicial

2.1 Crear el Projecte

Utilitzarem create-react-app per crear una aplicació React com a base del nostre projecte.

npx create-react-app my-project
cd my-project

2.2 Instal·lar Dependències

Instal·la les llibreries necessàries per al teu projecte. Per exemple, si utilitzes Redux per a la gestió d'estat:

npm install redux react-redux

  1. Desenvolupament de Funcionalitats

3.1 Configurar Redux (Opcional)

Si has decidit utilitzar Redux, segueix aquests passos per configurar-lo:

3.1.1 Crear l'Store

Crea un fitxer store.js per configurar l'store de Redux.

// src/store.js
import { createStore } from 'redux';
import rootReducer from './reducers';

const store = createStore(rootReducer);

export default store;

3.1.2 Crear Reducers

Crea els reducers necessaris per gestionar l'estat de l'aplicació.

// src/reducers/index.js
import { combineReducers } from 'redux';
import exampleReducer from './exampleReducer';

export default combineReducers({
  example: exampleReducer,
});
// src/reducers/exampleReducer.js
const initialState = {
  data: [],
};

const exampleReducer = (state = initialState, action) => {
  switch (action.type) {
    case 'SET_DATA':
      return {
        ...state,
        data: action.payload,
      };
    default:
      return state;
  }
};

export default exampleReducer;

3.1.3 Proveir l'Store a l'Aplicació

Utilitza el component Provider de react-redux per proveir l'store a l'aplicació.

// src/index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'react-redux';
import store from './store';
import App from './App';

ReactDOM.render(
  <Provider store={store}>
    <App />
  </Provider>,
  document.getElementById('root')
);

3.2 Crear Components

Comença a crear els components necessaris per a la teva aplicació. Aquí tens un exemple d'un component senzill:

// src/components/ExampleComponent.js
import React from 'react';
import { useSelector, useDispatch } from 'react-redux';

const ExampleComponent = () => {
  const data = useSelector((state) => state.example.data);
  const dispatch = useDispatch();

  const handleClick = () => {
    dispatch({ type: 'SET_DATA', payload: ['Item 1', 'Item 2'] });
  };

  return (
    <div>
      <h1>Example Component</h1>
      <button onClick={handleClick}>Set Data</button>
      <ul>
        {data.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
};

export default ExampleComponent;

3.3 Integrar Funcionalitats

Integra les funcionalitats definides en la planificació. Això pot incloure la gestió de formularis, crides a APIs, manipulació del DOM, etc.

Exemple de Crida a una API

// src/api.js
export const fetchData = async () => {
  const response = await fetch('https://api.example.com/data');
  const data = await response.json();
  return data;
};

// src/components/ExampleComponent.js
import React, { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { fetchData } from '../api';

const ExampleComponent = () => {
  const data = useSelector((state) => state.example.data);
  const dispatch = useDispatch();

  useEffect(() => {
    const getData = async () => {
      const data = await fetchData();
      dispatch({ type: 'SET_DATA', payload: data });
    };
    getData();
  }, [dispatch]);

  return (
    <div>
      <h1>Example Component</h1>
      <ul>
        {data.map((item, index) => (
          <li key={index}>{item}</li>
        ))}
      </ul>
    </div>
  );
};

export default ExampleComponent;

  1. Estilització

4.1 CSS Bàsic

Crea fitxers CSS per estilitzar els teus components.

/* src/components/ExampleComponent.css */
.example-component {
  font-family: Arial, sans-serif;
}

.example-component h1 {
  color: #333;
}

4.2 CSS-in-JS (Opcional)

Si prefereixes utilitzar una solució CSS-in-JS com styled-components:

npm install styled-components
// src/components/ExampleComponent.js
import styled from 'styled-components';

const Container = styled.div`
  font-family: Arial, sans-serif;
`;

const Title = styled.h1`
  color: #333;
`;

const ExampleComponent = () => {
  // ...
  return (
    <Container>
      <Title>Example Component</Title>
      {/* ... */}
    </Container>
  );
};

  1. Proves i Depuració

5.1 Proves Unitàries

Escriu proves unitàries per als teus components i funcions utilitzant Jest.

// src/components/ExampleComponent.test.js
import React from 'react';
import { render } from '@testing-library/react';
import ExampleComponent from './ExampleComponent';
import { Provider } from 'react-redux';
import store from '../store';

test('renders Example Component', () => {
  const { getByText } = render(
    <Provider store={store}>
      <ExampleComponent />
    </Provider>
  );
  expect(getByText(/Example Component/i)).toBeInTheDocument();
});

5.2 Depuració

Utilitza les eines de desenvolupament del navegador per depurar el teu codi. Pots afegir punts de trencament (breakpoints) i inspeccionar l'estat de l'aplicació.

  1. Desplegament

6.1 Construir per a Producció

Utilitza el següent comandament per crear una versió optimitzada del teu projecte:

npm run build

6.2 Desplegar a un Servidor

Segueix les instruccions del teu proveïdor de serveis per desplegar l'aplicació. Per exemple, si utilitzes Netlify:

  1. Crea un compte a Netlify.
  2. Connecta el teu repositori de GitHub.
  3. Configura la branca de desplegament i el directori de construcció (build).

Conclusió

En aquesta secció, hem cobert els passos necessaris per construir el teu projecte final, des de la planificació fins al desplegament. Assegura't de seguir cada pas amb cura i no dubtis a referir-te a les seccions anteriors del curs si necessites repassar algun concepte. Bona sort amb el teu projecte!

JavaScript: De Principiant a Avançat

Mòdul 1: Introducció a JavaScript

Mòdul 2: Estructures de Control

Mòdul 3: Funcions

Mòdul 4: Objectes i Arrays

Mòdul 5: Objectes i Funcions Avançades

Mòdul 6: El Model d'Objectes del Document (DOM)

Mòdul 7: APIs del Navegador i Temes Avançats

Mòdul 8: Proves i Depuració

Mòdul 9: Rendiment i Optimització

Mòdul 10: Frameworks i Llibreries de JavaScript

Mòdul 11: Projecte Final

© Copyright 2024. Tots els drets reservats