Maison >interface Web >js tutoriel >Création d'une batterie à savoir en utilisant Node.js: Client
<span><span><span><script</span> id<span>='meterVizTemplate'</span> type<span>='text/ractive'</span>></span><span><span></script</span>></span></span>Type = 'Text / Racactive' n'aurait en fait aucun sens pour votre navigateur, car il ignorera le script à moins que vous ajoutiez également le script de Racactive à votre page:
<span><span><span><script</span> src<span>='http://cdn.ractivejs.org/latest/ractive.js'</span>></span><span><span></script</span>></span></span>Désormais, à l'intérieur du script ROCTIVE, vous pouvez ajouter des balises HTML et des variables de modèle et des conditionnels / boucles. RACTIVE.JS s'occupera d'évaluer tout dans les groupes {{}}.
<span><span><span><script</span> id<span>='meterVizTemplate'</span> type<span>='text/ractive'</span>></span><span> </span></span><span><span> <span>{{#batteryState}} </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><div class='battery-div'> </span></span></span><span><span> <span><div class='battery-shell'> </span></span></span><span><span> <span><div class='battery-percent-text'>{{batteryPercent.toFixed(1) + '%'}}</div> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span><div class='battery-level'> </span></span></span><span><span> <span><div class='battery-mask' style="width:{{(100 - batteryPercent) + '%'}};"> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span>{{#batteryCharging}} </span></span></span><span><span> <span><div class='battery-plug' intro-outro='fade:1000'></div> </span></span></span><span><span> <span>{{/batteryCharging}} </span></span></span><span><span> <span>{{#batteryPercent <= batteryRedThreshold}} </span></span></span><span><span> <span><div class='battery-warning' intro-outro='fade:1000'></div> </span></span></span><span><span> <span>{{/batteryLife}} </span></span></span><span><span> <span></div> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><span class='key'>Battery state:</span> <span class='value {{batteryStateClass(batteryState)}}'>{{batteryState}}</span> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span>{{#batteryLife}} </span></span></span><span><span> <span><span class='key'>Time to empty:</span> <span class='value {{batteryLifeClass(batteryPercent)}}'>{{batteryLife}}</span> </span></span></span><span><span> <span>{{/batteryLife}} </span></span></span><span><span> <span>{{/batteryState}} </span></span></span><span><span> <span>{{^batteryState}} </span></span></span><span><span> <span><br> </span></span></span><span><span> <span>LOADING... </span></span></span><span><span> <span>{{/batteryState}} </span></span></span><span><span></span><span><span></script</span>></span></span>Dans l'exemple ci-dessus, vous pouvez voir:
<span><span><span><script</span> id<span>='meterVizTemplate'</span> type<span>='text/ractive'</span>></span><span><span></script</span>></span></span>Les options que nous transmettons au constructeur sont assez importantes. Tout d'abord, El doit correspondre à l'ID d'un élément DOM à l'intérieur de laquelle Racactive.js rendra le modèle. Dans ce cas, nous devons ajouter un div pour sortir la page HTML:
<span><span><span><script</span> src<span>='http://cdn.ractivejs.org/latest/ractive.js'</span>></span><span><span></script</span>></span></span>Le point où vous insérez cette balise est importante. Ce sera l'élément Parent pour tous les éléments rendus par système de modèles Racactive.js. Le deuxième paramètre important dont vous devez faire attention est le modèle. Sa valeur devra correspondre à l'ID du script texte / ratifiant sur votre page. Enfin, nous attribuons aux données d'un objet dont les clés sont des noms de variables que nous référentes dans notre modèle ou les fonctions que nous appelons. Avec Racactive.js, nous pouvons même définir des événements personnalisés auxquels la bibliothèque répondra:
<span><span><span><script</span> id<span>='meterVizTemplate'</span> type<span>='text/ractive'</span>></span><span> </span></span><span><span> <span>{{#batteryState}} </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><div class='battery-div'> </span></span></span><span><span> <span><div class='battery-shell'> </span></span></span><span><span> <span><div class='battery-percent-text'>{{batteryPercent.toFixed(1) + '%'}}</div> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span><div class='battery-level'> </span></span></span><span><span> <span><div class='battery-mask' style="width:{{(100 - batteryPercent) + '%'}};"> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span></div> </span></span></span><span><span> <span>{{#batteryCharging}} </span></span></span><span><span> <span><div class='battery-plug' intro-outro='fade:1000'></div> </span></span></span><span><span> <span>{{/batteryCharging}} </span></span></span><span><span> <span>{{#batteryPercent <= batteryRedThreshold}} </span></span></span><span><span> <span><div class='battery-warning' intro-outro='fade:1000'></div> </span></span></span><span><span> <span>{{/batteryLife}} </span></span></span><span><span> <span></div> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span><span class='key'>Battery state:</span> <span class='value {{batteryStateClass(batteryState)}}'>{{batteryState}}</span> </span></span></span><span><span> <span><br> </span></span></span><span><span> <span>{{#batteryLife}} </span></span></span><span><span> <span><span class='key'>Time to empty:</span> <span class='value {{batteryLifeClass(batteryPercent)}}'>{{batteryLife}}</span> </span></span></span><span><span> <span>{{/batteryLife}} </span></span></span><span><span> <span>{{/batteryState}} </span></span></span><span><span> <span>{{^batteryState}} </span></span></span><span><span> <span><br> </span></span></span><span><span> <span>LOADING... </span></span></span><span><span> <span>{{/batteryState}} </span></span></span><span><span></span><span><span></script</span>></span></span>En quelques lignes, nous avons mis en place un mécanisme pour faire une pause / reprendre nos mises à jour. Cependant, nous devons encore définir le UpdateBatteryStatus () fonction.
ractive <span>= new Ractive({ </span> <span>el: 'panels', </span> <span>template: '#meterVizTemplate', </span> <span>data: { </span> <span>// Percentage at which the battery goes to 'red' zone (export for Ractive templates) </span> <span>batteryRedThreshold: BATTERY_RED_THRESHOLD, </span> <span>// Percentage at which the battery enters 'yellow' zone (export for Ractive templates) </span> <span>batteryYellowThreshold: BATTERY_YELLOW_THRESHOLD, </span> <span>// The capacity of the battery, in percentage. Initially empty </span> <span>batteryPercent: NaN, </span> <span>// How much more time can the battery last? </span> <span>batteryLife: "", </span> <span>// True <=> the update daemon for the battery has been paused </span> <span>batteryPaused: false, </span> <span>// True <=> the update daemon for the battery has reported an error at its last try </span> <span>batteryUpdateError: false, </span> <span>// Is the battery connected to power? </span> <span>batteryCharging: false, </span> <span>batteryStateClass: function (state) { </span> <span>return state === 'discharging' ? BATTERY_RED_CLASS : BATTERY_GREEN_CLASS; </span> <span>}, </span> <span>batteryLifeClass: function (percent) { </span> <span>return percent <= BATTERY_RED_THRESHOLD ? BATTERY_RED_CLASS : (percent <= BATTERY_YELLOW_THRESHOLD ? BATTERY_YELLOW_CLASS : BATTERY_GREEN_CLASS); </span> <span>} </span> <span>} </span><span>});</span>
Pour obtenir l'état de la batterie à l'aide de JavaScript, vous pouvez utiliser l'API d'état de la batterie. Cette API fournit des informations sur le niveau de charge de la batterie du système et vous permet d'être informé par des événements qui sont envoyés lorsque le niveau de la batterie ou l'état de charge change. Voici un exemple simple de la façon de l'utiliser:
Navigator.getBattery (). Puis (fonction (batterie) {
console.log ("Niveau de la batterie:" Battery.Level * 100 "%" );
});
Ce code enregistrera le niveau actuel de la batterie à la console.
La méthode Navigator.getBattery fait partie de l'API d'état de la batterie. Il renvoie une promesse qui se résout à un objet BatteryManager, qui fournit des informations sur le niveau de charge de la batterie du système et vous permet d'être notifié par des événements qui sont envoyés lorsque le niveau de la batterie ou l'état de charge change.
Pour visualiser les données d'état de la batterie, vous pouvez utiliser n'importe quelle bibliothèque de cartes JavaScript, telles que chart.js ou d3.js. Ces bibliothèques vous permettent de créer différents types de graphiques et de graphiques à partir de vos données. Vous pouvez également utiliser HTML et CSS pour créer une barre ou un graphique à tarte simple.
L'API d'état de la batterie est prise en charge par la plupart des navigateurs modernes, mais pas tous. Il convient également de noter que certains appareils, tels que les ordinateurs de bureau, peuvent ne pas fournir d'informations précises ou aucune information d'état de la batterie.
Vous pouvez gérer les modifications d'état de la batterie en ajoutant des auditeurs d'événements à l'objet BatteryManager. L'API d'état de la batterie propose plusieurs événements, tels que «Chargingchange», «Levelchange», «ChargingtimeChange» et «DischargingtimeChange». Voici un exemple de la façon d'utiliser ces événements:
Navigator.getBattery (). Puis (fonction (batterie) {
batterie.addeventListener ('NIVLEACHANGE', function () {
console. Log ("Niveau de la batterie:" Battery.level * 100 "%");
});
});
Ce code enregistrera le nouveau niveau de batterie au Console chaque fois que le niveau de la batterie change.
Node.js n'a pas de moyen intégré d'obtenir l'état de la batterie. Cependant, vous pouvez utiliser un processus enfant pour exécuter une commande système qui obtient l'état de la batterie, puis analyser la sortie. La commande spécifique dépend de votre système d'exploitation.
Oui, l'API d'état de la batterie ne nécessite aucune autorisation de l'utilisateur à utiliser. Cependant, c'est toujours une bonne pratique pour informer vos utilisateurs si vous collectez des données sur leur système.
Le niveau de batterie fourni par l'API d'état de la batterie est un nombre entre 0,0 et 1,0, représentant le niveau de batterie actuel comme une fraction de la charge complète. La précision de cette valeur dépend de l'appareil et de sa batterie.
Oui, l'API d'état de la batterie peut être utilisé dans un travailleur Web. Cependant, gardez à l'esprit que tous les navigateurs ne prennent pas en charge les travailleurs Web, et tous les navigateurs qui prennent en charge les travailleurs Web ne prennent pas en charge l'API d'état de la batterie dans un travailleur Web.
Si l'API d'état de la batterie n'est pas prise en charge, vous ne pouvez pas faire grand-chose pour obtenir l'état de la batterie. Vous pouvez utiliser la détection des fonctionnalités pour vérifier si l'API est prise en charge et fournir une fonctionnalité alternative ou un message à l'utilisateur si ce n'est pas le cas.
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!