Maison >interface Web >js tutoriel >Fronts frontaux intelligents et back-end muets: État persistant dans AngularJS

Fronts frontaux intelligents et back-end muets: État persistant dans AngularJS

Joseph Gordon-Levitt
Joseph Gordon-Levittoriginal
2025-02-18 09:48:13621parcourir

Smart Front-ends & Dumb Back-ends: Persisting State in AngularJS

Interactions utilisateur avec un site Web Générer l'état d'application - par exemple, les clics du bouton ou l'entrée de texte. Cet état, résidant dans la RAM du navigateur en tant qu'objets JavaScript (tableaux, chaînes, etc.), a besoin de persévérance. Cet article explore les techniques de persistance de cet état, distinguant les données temporaires et essentielles.

Concepts clés:

  • Énoncez la persistance dans AngularJS: Gestion des données utilisateur et des paramètres d'application à travers les rafraîchissements de page et les redémarrages d'application. Essentiel pour les applications à une seule page (spas).
  • Méthodes de persistance: AngularJS ne soutient pas intrinsèquement la persistance de l'état; Des méthodes comme les cookies, le stockage local et le stockage de session sont utilisés. Ceux-ci stockent les données côté client, la récupérant même après les rafraîchissements de page.
  • Application de démonstration: La démonstration d'accompagnement utilise localStorage. Sur la charge de l'application, il récupère les données enregistrées ou crée un échantillon. Les modifications sont enregistrées sur le flou du champ de saisie.
  • Smart Front-end, Dumb Back-end: L'article préconise une conception où le back-end agit comme un serveur de synchronisation, gérant des tâches de stockage simples. La logique commerciale complexe réside dans le front-end, permettant une expérience d'abord hors ligne. Cette approche augmente l'agnosticisme technologique arrière, la priorité à la disponibilité, aux sauvegardes et à la vitesse.

Débutage: séparation des données temporaires

Considérez un tableau d'objets, certains avec des clés temporaires. Ces clés temporaires ne doivent pas être persistées. L'exemple utilise une application AngularJS, marquant les clés temporaires avec un préfixe de trait de soulignement. HTML initial:

<code class="language-html"><div ng-repeat="thing in things track by thing.id" ng-click="thing._expanded=!thing._expanded">
    <div ng-if="thing._expanded">EXPANDED VIEW</div>
    <div ng-if="!thing._expanded">collapsed view</div>
</div></code>

JavaScript initial:

<code class="language-javascript">angular.module('app', []).controller('Ctrl', ($scope) => {
    $scope.things = [
      {id: 1, key: 'Value'},
      {id: 2, key: 'Value2'},
      {id: 3, key: 'Value3'},
    ];
});</code>

État persistant dans le storage local

Pour persister $scope.things (par exemple, une liste de todo), nous devons enregistrer sélectivement les données. Les attributs temporaires (comme _expanded) peuvent être régénérés. Simple localStorage.setItem ne suffira pas car il enregistre des données indésirables. Nous avons besoin d'une copie profonde et d'un filtrage de données:

<code class="language-javascript">let copy = Array.from(myArray, (item) => {
  let obj = Object.assign({}, item);
  for (let key of Object.keys(obj)) {
    if (key.startsWith('_') || key === '$$hashKey') {
      delete obj[key];
    }
  }
  return obj;
});</code>

angular.toJson(myObject) peut supprimer le $$hashKey d'Angularjs. L'utilisation ng-repeat="thing in things track by thing.id" empêche la génération $$hashKey.

Application de démonstration améliorée: journal hebdomadaire

Une démo plus pratique est un journal hebdomadaire, permettant une entrée de texte pour chaque jour. Le HTML inclut les champs d'entrée et utilise ng-blur pour déclencher une sauvegarde. Le JavaScript gère la préparation des données, le clonage profond, le filtrage et localStorage persistance.

Conclusion: L'avenir du développement frontal et du développement back-end

Cette approche est évolutive et réaliste. La tendance est vers les fins frontales plus intelligentes et les back-end plus simples. Le back-end devient un serveur de synchronisation, gérant le stockage de données tandis que le frontal gère la logique métier complexe. Cela permet des applications d'abord hors ligne et augmente la flexibilité de la technologie back-end. La démo utilise localStorage, mais des alternatives comme Kinto, Pouchdb ou Firebase le remplacent facilement.

Questions fréquemment posées (FAQ): (Cette section reste largement inchangée de l'entrée, car c'est un ajout utile et ne nécessite pas de réécriture significative pour la paraphrase.)

Quelle est la signification de l'état persistant dans AngularJs?

L'état persistant dans AngularJS est crucial pour maintenir les données de l'utilisateur ou les paramètres de l'application même après la rafraîchissement de la page ou que l'application est redémarrée. Ceci est particulièrement important dans les applications à une seule page où l'État doit être maintenu sur différentes vues. Sans persistance de l'État, toutes les données entrées ou les modifications apportées par l'utilisateur seraient perdantes lors de la rafraîchissement ou de la navigation loin de la page, conduisant à une mauvaise expérience utilisateur.

(Le reste de la section FAQ suit de manière similaire, car il est déjà bien écrit et informatif.)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn