React Native Academy · Oppitunti

Ensimmäisen Expo-projektin luominen

Luokaa uusi projekti komennolla `npx create-expo-app`, tutustukaa luotuihin tiedostoihin ja selvittäkää React Native -sovelluksen aloituskohta.

Oppitunti 2/413 vaihetta

Ensimmäisen Expo-projektin luominen on ilmainen React Native Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu React Native Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. React Native Academy-kurssilla on yhteensä 4 oppituntia.

create-expo-app-komento

Helpoin tapa aloittaa on npx create-expo-app MyApp. Se noutaa uusimman mallin, määrittää kansiot ja asentaa kaiken tarvittavan. Lisää mallilippu aloittaaksesi tyhjästä tai navigoinnin sisältävästä pohjasta.

# Create a new Expo project
npx create-expo-app MyFirstApp

# Create with a blank TypeScript template
npx create-expo-app MyFirstApp --template blank-typescript

# Create with tabs navigation template
npx create-expo-app MyFirstApp --template tabs

# Move into the project
cd MyFirstApp

Luodun kansiorakenteen yleiskatsaus

Tutustu uusiin kansioihisi. App.js on lähtöpiste, jonka React käsittelee ensin, app.json sisältää määrityksesi ja assets/ tallentaa kuvat sekä fontit. Koodi näyttää kokonaisuuden rakenteen.

MyFirstApp/
├── App.js          # Root component (entry point)
├── app.json        # Expo configuration
├── package.json    # NPM dependencies & scripts
├── babel.config.js # Babel transpiler config
├── assets/         # Images, fonts, icons
│   ├── icon.png
│   ├── splash.png
│   └── adaptive-icon.png
└── node_modules/   # Installed packages

app.json-määritystiedosto

app.json on projektisi määrityskeskus — se sisältää sovelluksen nimen, version, kuvakkeet, aloitusnäytön sekä iOS:n ja Androidin alustakohtaiset asetukset. Sen muuttaminen edellyttää uutta koontiversiota, ei pelkkää hot reloadia.

{
  'expo': {
    'name': 'My First App',
    'slug': 'my-first-app',
    'version': '1.0.0',
    'orientation': 'portrait',
    'icon': './assets/icon.png',
    'splash': {
      'image': './assets/splash.png',
      'resizeMode': 'contain',
      'backgroundColor': '#ffffff'
    },
    'ios': {
      'bundleIdentifier': 'com.yourname.myfirstapp'
    },
    'android': {
      'package': 'com.yourname.myfirstapp'
    }
  }
}

package.json ja skriptit

package.json luettelee riippuvuutesi ja skriptisi. Oletuskomennot — start, ios, android ja web — käynnistävät sovelluksesi eri ympäristöissä. Voit myös lisätä omia skriptejäsi.

// package.json (excerpt)
{
  'name': 'my-first-app',
  'version': '1.0.0',
  'main': 'node_modules/expo/AppEntry.js',
  'scripts': {
    'start': 'expo start',
    'android': 'expo start --android',
    'ios': 'expo start --ios',
    'web': 'expo start --web'
  },
  'dependencies': {
    'expo': '~50.0.0',
    'react': '18.2.0',
    'react-native': '0.73.x'
  }
}

App.js — juurikomponentti

App.js vie ulos juurikomponentin, jonka React Native käsittelee ensin — kaikki muut komponentit ovat sen sisällä. Se on ensimmäinen muokkaamasi tiedosto, samaan tapaan kuin index.html verkkoprojektissa.

import { StatusBar } from 'expo-status-bar';
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  return (
    <View style={styles.container}>
      <Text>Open up App.js to start working!</Text>
      <StatusBar style='auto' />
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#fff',
    alignItems: 'center',
    justifyContent: 'center',
  },
});

JSX: käyttöliittymän kuvaaminen JavaScriptillä

JSX mahdollistaa HTML:n kaltaisen merkintäkielen kirjoittamisen JavaScriptin sisällä käyttöliittymän kuvaamista varten. Se ei kuitenkaan ole HTML: käytä style-prop-ominaisuutta classin sijaan ja onPressiä onclickin sijaan. Koodi näyttää esimerkin.

import { View, Text } from 'react-native';

const name = 'World';
const count = 42;

export default function App() {
  return (
    <View>
      {/* This is a JSX comment */}
      <Text>Hello, {name}!</Text>
      <Text>You have {count} messages.</Text>
      {count > 0 && <Text>You have unread items.</Text>}
    </View>
  );
}

Babel ja transpilaation toiminta

Expo käyttää Babelia nykyaikaisen JavaScriptin ja JSX:n muuntamiseen koodiksi, jota kukin alusta voi suorittaa. Sen määrityksiä tarvitsee harvoin muuttaa — yleensä vain kätevien polkualiasien, kuten @/components, lisäämistä varten.

// babel.config.js (default Expo config)
module.exports = function(api) {
  api.cache(true);
  return {
    presets: ['babel-preset-expo'],
    plugins: [
      // Example: add module resolver for clean imports
      [
        'module-resolver',
        {
          root: ['./'],
          alias: {
            '@components': './components',
            '@screens': './screens',
          },
        },
      ],
    ],
  };
};

Lisäriippuvuuksien asentaminen

Kun lisäät paketteja, käytä mieluiten komentoa npx expo install komennon npm install sijaan — se valitsee Expo SDK:si kanssa yhteensopivan version ja välttää huomaamattomat yhteensopivuusongelmat. Tavallinen npm sopii puhtaasti JavaScriptiä käyttäville paketeille.

# Use expo install for SDK-compatible packages
npx expo install expo-camera expo-location
npx expo install react-native-maps

# Use npm install for pure JS packages
npm install lodash date-fns

# Check for outdated Expo SDK packages
npx expo install --check

# Fix version mismatches
npx expo install --fix

Ensimmäisen koodimuutoksen tekeminen

Avaa App.js, muuta tekstiä ja tallenna — Fast Refresh päivittää sovelluksesi alle sekunnissa ja säilyttää sen tilan. Kokeile muuttaa väriä nähdäksesi muutoksen heti. ✨

// Modified App.js
import { StyleSheet, Text, View } from 'react-native';

export default function App() {
  return (
    <View style={styles.container}>
      <Text style={styles.title}>Hello, React Native!</Text>
      <Text style={styles.subtitle}>I made my first change.</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    backgroundColor: '#f0f4ff',
    alignItems: 'center',
    justifyContent: 'center',
  },
  title: { fontSize: 24, fontWeight: 'bold', color: '#333' },
  subtitle: { fontSize: 16, color: '#666', marginTop: 8 },
});

Expo SDK ja managed workflow

Expo SDK tarjoaa valmiita moduuleja kameraa, sijaintia, sensoreita ja muuta varten. Managed workflow -työnkulussa Expo käsittelee natiivikoodin puolestasi — ratkaisu on yksinkertaisempi, mutta rajoittuu SDK:n rajapintoihin.

// Example: using Expo SDK modules
import * as Battery from 'expo-battery';
import * as Haptics from 'expo-haptics';

async function checkBattery() {
  const level = await Battery.getBatteryLevelAsync();
  console.log('Battery level:', level); // 0.0 - 1.0
}

async function vibrate() {
  await Haptics.notificationAsync(
    Haptics.NotificationFeedbackType.Success
  );
}

TypeScript-tuki Expossa

Expolla on ensiluokkainen TypeScript-tuki. Aloita blank-typescript-mallista tai nimeä App.js uudelleen nimelle App.tsx. TypeScript havaitsee tyyppivirheet aikaisin ja parantaa automaattista täydennystä.

// App.tsx with TypeScript
import React from 'react';
import { StyleSheet, Text, View } from 'react-native';

interface Props {
  greeting?: string;
}

export default function App({ greeting = 'Hello' }: Props) {
  const message: string = greeting + ', TypeScript!';
  return (
    <View style={styles.container}>
      <Text>{message}</Text>
    </View>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, alignItems: 'center', justifyContent: 'center' },
});

Pikatarkistus

Testaa tämän oppitunnin React Native -mobiilikehityksen käsitteiden ymmärtämistäsi.

Oppitunnin yhteenveto

Loit ensimmäisen sovelluksesi projektipohjan: create-expo-app rakentaa täyden projektin hetkessä, app.json hallitsee sen asetuksia ja Fast Refresh näyttää muutokset heti. Seuraavaksi sovelluksen suorittaminen laitteilla! 🚀

Aloita maksutta

Opi JavaScript tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
30
Oppitunnit
120

Usein kysytyt kysymykset

Onko oppitunti ”Ensimmäisen Expo-projektin luominen” ilmainen?

Kyllä – oppitunnin ”Ensimmäisen Expo-projektin luominen” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko React Native Academy-kurssin, päivitä CoddyKit PROhon. React Native Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Ensimmäisen Expo-projektin luominen”?

Luokaa uusi projekti komennolla `npx create-expo-app`, tutustukaa luotuihin tiedostoihin ja selvittäkää React Native -sovelluksen aloituskohta. Harjoittelet React Native Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni React Native Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin React Native Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Ensimmäisen Expo-projektin luominen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä React Native Academy-oppitunnilla?

Kyllä. Jokainen React Native Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Noden, Expo CLI:n ja simulaattorien asentaminen
  2. Ensimmäisen Expo-projektin luominen
  3. Suorittaminen laitteella ja emulaattorissa
  4. Projektirakenteen ymmärtäminen
← Takaisin: React Native Academy