Skip to content

sopra-steria-norge/code-academy-basic-react

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

code-academy-basic-react

Målet med workshoppen her er at du skal få praktisk kjennskap til "legoklossene" vi har sett på underveis i kvelden. For dere som har tidligere bygget enkle react-applikasjoner med f.eks "create-react-app" er det lett å ikke helt sette pris på hva som faktisk foregår i det du har kjørt "npm start" eller "npm run build".

I denne workshoppen skal går vi gjennom dette, steg for steg. Vi starter enkelt, og ønsker å sette opp en basic react app med typescript, som benytter seg av webpack og babel for transpilering og bygg.

Merk at hovedpoenget her ikke er å bli først ferdig, men å roe ned og prøve å forstå hvorfor hvert steg i worlshopen gjøres, og hva de ulike delene gjør. Bruk lenkene godt og fordyp deg om det er noe du ikke forstår.

Prerequisites

Workshop

1. Sett opp en package.json med

npm init -y

2. Installer React og React DOM med kommandoen

npm install --save react react-dom

3. Installer Typescript med

npm install --save-dev typescript

Nå som vi har fått på plass typescript er det en god i de å dra med seg typedeklerasjoner for pakkene vi benytter for react koden vår, kjør

npm i --save-dev @types/react @types/react-dom

Legg merke til --save-dev. Om dette er ukjent for deg ville jeg tatt meg tiden til å se raskt på hvordan NPM strukturerer avhengigheter.

4. Sett opp en basic tsconfig.json og legg den på rotnivå av repo. For nå holder det med

{
  "compilerOptions": {
    "target": "es6",
    "allowJs": true,
    "jsx": "react",
    "module": "nodenext",
    "moduleResolution": "nodenext",
    "outDir": "./dist",
    "strict": true,
    "esModuleInterop": true
  },
  "include": ["src/**/*"]
}

5. Installer webpack med

npm install --save-dev webpack webpack-cli webpack-dev-server

6. Set opp webpack.config.js på rot

const path = require("path");

module.exports = {
  mode: "development",
  entry: "./src/index.tsx",
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "dist"),
  },
  resolve: {
    extensions: [".tsx", ".ts", ".js"],
  },
};

7. Installer Babel og aktuelle presets

npm install --save-dev @babel/core babel-loader @babel/preset-env @babel/preset-react @babel/preset-typescript

8. Set opp en .babelrc.json fil

{
  "presets": [
    "@babel/preset-env",
    "@babel/preset-react",
    "@babel/preset-typescript"
  ]
}

La oss ta en fot i bakken og lese oss raskt opp på hva disse preset'ene faktisk inneholder og gjør. Les doc'en før du går videre!

9. Oppdater webpack.config.js

La oss integrere webpack og babel! Oppdater webpack.config.js til å inkludere følgende

// ...
module.exports = {
  // ...
  module: {
    rules: [
      {
        test: /\.(ts|tsx)$/,
        exclude: /node_modules/,
        use: "babel-loader",
      },
    ],
  },
};

10. Sett opp ./src/index.html

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Code Academy - React</title>
  </head>
  <body>
    <div id="root"></div>
  </body>
</html>

11. Installer html-webpack-plugin

For å få webpack til å spille på lag med html-filen over trenger vi en ny plugin - html-webpack-plugin! Les deg opp på hva den gjør her.

Installer den med:

npm install --save-dev html-webpack-plugin

13. Oppdater webpack.config.js

Oppdater webpack.config.js med den nye plugin'en, og pek den på filen vi opprettet over.

// ...
const HtmlWebpackPlugin = require("html-webpack-plugin");

module.exports = {
  // ...
  plugins: [
    new HtmlWebpackPlugin({
      template: "./src/index.html",
    }),
  ],
};

14. Opprett en react-komponent

La oss opprette en enkel react-komponent - ./src/index.tsx

import React, { useState } from "react";
import ReactDOM from "react-dom/client";

const App: React.FC = () => {
  const [counter, setCounter] = useState(0);
  return (
    <div>
      <h2>Hei, verden! 😎</h2>
      <button onClick={() => setCounter(counter + 1)}>Klikk?</button>
      <p>Du har klikket på meg {counter} ganger🥵</p>
    </div>
  );
};

const rootElement = document.getElementById("root");
if (!rootElement) {
  throw new Error("root not found");
}
const root = ReactDOM.createRoot(rootElement);

root.render(<App />);

15. Oppdater `package.json``

Nå er alle småstegene underveis på plass, la oss oppdatere vår package.json til å dra nytte av oppsettet vårt! Legg til følgende:

"scripts": {
  "start": "webpack serve --open",
  "build": "webpack --mode production"
}

17. Start applikasjonen

Start opp appen med npm start. Dette skal forhåpentligvis starte opp applikasjonen og åpne den opp i nettleseren din. Legg merke til at webpack vil lytte på endringer på filene dine og serve disse på nytt. Hot reload!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors