Vai al contenuto

Ionic Cheatsheet

Traduzione:

Ionic - Cross-Platform Applicazioni mobili con Web Technologies

Traduzione: Ionic è un framework di sviluppo di app mobile open source che consente agli sviluppatori di costruire applicazioni mobili cross-platform di alta qualità utilizzando tecnologie web come HTML, CSS e JavaScript. Fornisce componenti e strumenti mobili nativi per la costruzione di applicazioni mobili ibride.

__HTML_TAG_55_📋 Copia Tutti i comandi_HTML_TAG_56___ __HTML_TAG_57_📄 Generare PDF

Traduzione:

Tavola dei contenuti

Installazione

Prerequisiti

Traduzione:

Ionic CLI Installazione

Traduzione:

Development Environment Setup

Traduzione:

Crea nuovo progetto

Traduzione:

Struttura del progetto

Traduzione:

Basic App Setup (angolare)

Traduzione:

Componenti

Componenti di base

Traduzione:

<!-- home.page.html -->
<ion-header [translucent]="true">
  <ion-toolbar>
    <ion-title>{{ title }}</ion-title>
    <ion-buttons slot="end">
      <ion-button>
        <ion-icon name="settings-outline"></ion-icon>
      </ion-button>
    </ion-buttons>
  </ion-toolbar>
</ion-header>

<ion-content [fullscreen]="true">
  <!-- Refresher -->
  <ion-refresher slot="fixed" (ionRefresh)="doRefresh($event)">
    <ion-refresher-content></ion-refresher-content>
  </ion-refresher>

  <!-- Header -->
  <ion-header collapse="condense">
    <ion-toolbar>
      <ion-title size="large">{{ title }}</ion-title>
    </ion-toolbar>
  </ion-header>

  <!-- Content -->
  <div class="ion-padding">
    <!-- Cards -->
    <ion-card>
      <ion-card-header>
        <ion-card-title>Card Title</ion-card-title>
        <ion-card-subtitle>Card Subtitle</ion-card-subtitle>
      </ion-card-header>
      <ion-card-content>
        This is the card content. You can put any content here.
      </ion-card-content>
    </ion-card>

    <!-- List -->
    <ion-list>
      <ion-list-header>
        <ion-label>Items</ion-label>
      </ion-list-header>
      <ion-item *ngFor="let item of items" (click)="onItemClick(item)">
        <ion-avatar slot="start">
          <img src="https://via.placeholder.com/40" />
        </ion-avatar>
        <ion-label>
          <h2>{{ item.name }}</h2>
          <p>{{ item.description }}</p>
        </ion-label>
        <ion-icon name="chevron-forward-outline" slot="end"></ion-icon>
      </ion-item>
    </ion-list>

    <!-- Buttons -->
    <ion-button expand="block" fill="solid" color="primary">
      Primary Button
    </ion-button>

    <ion-button expand="block" fill="outline" color="secondary">
      Secondary Button
    </ion-button>

    <!-- Input -->
    <ion-item>
      <ion-label position="floating">Email</ion-label>
      <ion-input type="email" placeholder="Enter email"></ion-input>
    </ion-item>

    <!-- Checkbox -->
    <ion-item>
      <ion-checkbox slot="start"></ion-checkbox>
      <ion-label>Accept terms and conditions</ion-label>
    </ion-item>

    <!-- Toggle -->
    <ion-item>
      <ion-label>Enable notifications</ion-label>
      <ion-toggle slot="end"></ion-toggle>
    </ion-item>

    <!-- Range -->
    <ion-item>
      <ion-label>Volume</ion-label>
      <ion-range min="0" max="100" value="50" slot="end">
        <ion-icon name="volume-low" slot="start"></ion-icon>
        <ion-icon name="volume-high" slot="end"></ion-icon>
      </ion-range>
    </ion-item>
  </div>

  <!-- Floating Action Button -->
  <ion-fab vertical="bottom" horizontal="end" slot="fixed">
    <ion-fab-button>
      <ion-icon name="add"></ion-icon>
    </ion-fab-button>
  </ion-fab>
</ion-content>

Componenti avanzati

Traduzione:

Router Navigation

Traduzione:

Tab Navigation

Traduzione:

<!-- tabs.page.html -->
<ion-tabs>
  <ion-tab-bar slot="bottom">
    <ion-tab-button tab="home">
      <ion-icon name="home"></ion-icon>
      <ion-label>Home</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="search">
      <ion-icon name="search"></ion-icon>
      <ion-label>Search</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="profile">
      <ion-icon name="person"></ion-icon>
      <ion-label>Profile</ion-label>
    </ion-tab-button>
  </ion-tab-bar>
</ion-tabs>

<!-- app.component.html -->
<ion-app>
  <ion-split-pane contentId="main-content">
    <ion-menu contentId="main-content" type="overlay">
      <ion-content>
        <ion-list id="inbox-list">
          <ion-list-header>Menu</ion-list-header>
          <ion-menu-toggle auto-hide="false" *ngFor="let p of appPages; let i = index">
            <ion-item routerDirection="root" [routerLink]="[p.url]" lines="none" detail="false">
              <ion-icon slot="start" [name]="p.icon"></ion-icon>
              <ion-label>{{ p.title }}</ion-label>
            </ion-item>
          </ion-menu-toggle>
        </ion-list>
      </ion-content>
    </ion-menu>
    <ion-router-outlet id="main-content"></ion-router-outlet>
  </ion-split-pane>
</ion-app>

Styling

CSS Variabili e Theming

Traduzione:

Component Styling

Traduzione:

Global Styles

Traduzione:

Caratteristiche native

Camera

Traduzione:

Geolocation

Traduzione:

Informazioni sul dispositivo

Traduzione:

Push Notifications

Traduzione:

State Management

Servizi angolari

Traduzione:

NgRx (Advanced State Management)

Traduzione:

// store/user.actions.ts
import { createAction, props } from '@ngrx/store';
import { User } from '../models/user.model';

export const loadUsers = createAction('[User] Load Users');
export const loadUsersSuccess = createAction(
  '[User] Load Users Success',
  props<{ users: User[] }>()
);
export const loadUsersFailure = createAction(
  '[User] Load Users Failure',
  props<{ error: any }>()
);

export const addUser = createAction(
  '[User] Add User',
  props<{ user: User }>()
);

// store/user.reducer.ts
import { createReducer, on } from '@ngrx/store';
import { User } from '../models/user.model';
import * as UserActions from './user.actions';

export interface UserState {
  users: User[];
  loading: boolean;
  error: any;
}

export const initialState: UserState = {
  users: [],
  loading: false,
  error: null
};

export const userReducer = createReducer(
  initialState,
  on(UserActions.loadUsers, state => ({
    ...state,
    loading: true
  })),
  on(UserActions.loadUsersSuccess, (state, { users }) => ({
    ...state,
    loading: false,
    users
  })),
  on(UserActions.loadUsersFailure, (state, { error }) => ({
    ...state,
    loading: false,
    error
  })),
  on(UserActions.addUser, (state, { user }) => ({
    ...state,
    users: [...state.users, user]
  }))
);

// store/user.selectors.ts
import { createSelector, createFeatureSelector } from '@ngrx/store';
import { UserState } from './user.reducer';

export const selectUserState = createFeatureSelector<UserState>('users');

export const selectAllUsers = createSelector(
  selectUserState,
  (state: UserState) => state.users
);

export const selectUsersLoading = createSelector(
  selectUserState,
  (state: UserState) => state.loading
);

export const selectUsersError = createSelector(
  selectUserState,
  (state: UserState) => state.error
);

HTTP and Data

HTTP Client

Traduzione:

Stoccaggio

Ionic Storage

Traduzione:

// services/storage.service.ts
import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage-angular';

@Injectable({
  providedIn: 'root'
})
export class StorageService {
  private _storage: Storage | null = null;

  constructor(private storage: Storage) {
    this.init();
  }

  async init() {
    const storage = await this.storage.create();
    this._storage = storage;
  }

  // Store data
  public async set(key: string, value: any): Promise<any> {
    return this._storage?.set(key, value);
  }

  // Get data
  public async get(key: string): Promise<any> {
    return this._storage?.get(key);
  }

  // Remove data
  public async remove(key: string): Promise<any> {
    return this._storage?.remove(key);
  }

  // Clear all data
  public async clear(): Promise<void> {
    return this._storage?.clear();
  }

  // Get all keys
  public async keys(): Promise<string[]> {
    return this._storage?.keys() || [];
  }

  // Get length
  public async length(): Promise<number> {
    return this._storage?.length() || 0;
  }

  // Store object
  public async setObject(key: string, object: any): Promise<any> {
    return this._storage?.set(key, JSON.stringify(object));
  }

  // Get object
  public async getObject(key: string): Promise<any> {
    const data = await this._storage?.get(key);
    return data ? JSON.parse(data) : null;
  }
}

// app.module.ts
import { IonicStorageModule } from '@ionic/storage-angular';

@NgModule({
  imports: [
    IonicStorageModule.forRoot()
  ]
})
export class AppModule {}

// Using storage service
import { Component, OnInit } from '@angular/core';
import { StorageService } from '../services/storage.service';

@Component({
  selector: 'app-settings',
  templateUrl: './settings.page.html',
  styleUrls: ['./settings.page.scss'],
})
export class SettingsPage implements OnInit {
  settings = {
    notifications: true,
    darkMode: false,
    language: 'en'
  };

  constructor(private storageService: StorageService) {}

  async ngOnInit() {
    await this.loadSettings();
  }

  async loadSettings() {
    const savedSettings = await this.storageService.getObject('app-settings');
    if (savedSettings) {
      this.settings = { ...this.settings, ...savedSettings };
    }
  }

  async saveSettings() {
    await this.storageService.setObject('app-settings', this.settings);
    console.log('Settings saved');
  }

  async resetSettings() {
    await this.storageService.remove('app-settings');
    this.settings = {
      notifications: true,
      darkMode: false,
      language: 'en'
    };
    console.log('Settings reset');
  }
}

Preferenze di condensatore

Traduzione:

Testing

Unit Testing

Traduzione:

E2E Testing

Traduzione:

Edilizia e distribuzione

Costruire comandi

Traduzione:

Android Deployment

Traduzione:

iOS Deployment

Traduzione:

Web Deployment

Traduzione:

Integrazione dei condensatori

Configurazione dei condensatori

Plugin di condensatore personalizzato

Traduzione:

Ottimizzazione delle prestazioni

Carico pigro

Traduzione:

Scrolling virtuale

Traduzione:

Ottimizzazione immagine

Traduzione:

<!-- Lazy loading template -->
<ion-content>
  <div *ngFor="let image of images" class="image-container">
    <img 
      [src]="image.src" 
      [class.loaded]="image.loaded"
      (load)="onImageLoad(image)"
      (error)="onImageError(image)"
      loading="lazy"
    />
    <ion-spinner *ngIf="!image.loaded" name="crescent"></ion-spinner>
  </div>
</ion-content>

Analisi Bundle

Traduzione:

Migliori Pratiche

Code Organization

Traduzione:

Guida alle prestazioni

Traduzione:

Migliori pratiche di sicurezza

Traduzione:

Risoluzione dei problemi

Questioni e soluzioni comuni

Build Issues

Traduzione:

Platform-Specific Issues

Traduzione:

Errori di runtime

Traduzione:


Sommario

Ionic è un potente framework per la costruzione di applicazioni mobili multipiattaforma utilizzando tecnologie web. I suoi principali vantaggi includono:

  • Cross-Platform Development: Scrivere una volta, eseguire su iOS, Android e web
  • Web Technologies: Utilizzare HTML familiare, CSS e JavaScript/TypeScript
  • Native Performance: Accedere alle caratteristiche del dispositivo nativo tramite Capacitor
  • Rich UI Components: Libreria completa di componenti ottimizzati per dispositivi mobili
  • ** Flessibilità del lavoro **: Funziona con angolare, reagire e Vue
  • Si'. Ciclo di sviluppo rapido con ricarica live
  • Strong Ecosystem: Ampio ecosistema plugin e supporto comunitario
  • Cos-Effective? Ridurre i tempi di sviluppo e i costi di manutenzione

Ionic eccelle per consentire agli sviluppatori web di costruire applicazioni mobili di qualità nativa, sfruttando le competenze di sviluppo web esistenti e mantenendo un unico codebase su più piattaforme.

Traduzione: copia funzioneToClipboard() {} const commands = document.querySelectorAll('code'); tutti i Comandi = ''; comandi. per ogni(cmd => AllCommands += cmd.textContent + '\n'); navigatore.clipboard.writeText(tutti iComandi); alert('Tutti i comandi copiati a clipboard!');

funzione generaPDF() { finestra.print();