Qu'est-ce que le modèle Client/Serveur lors de l'utilisation de l'Électron (l'Atome Shell)?
Je suis d'essayer d'envelopper ma tête autour de la façon dont Electron (anciennement Atome Shell) fonctionne.
Je viens de l'une traditionnelle, MVC-application web de type lorsqu'un Navigateur est d'appeler un d'Action du Contrôleur par le biais d'un Système de Routage, le Contrôleur récupère ensuite les données à partir d'un magasin (le Système de Fichiers, Base de Données, ...) et rend un Vue, qui est envoyé au Navigateur. Certaines Actions peuvent être de l'envoi de retour JSON au lieu de cela, comme ils sont appelés par JavaScript/AJAX au lieu du Navigateur en fait en naviguant à l'.
Je veux créer, mais comme une Croix-Plate-forme de l'Application de Bureau. Je sais que l'Atome Coque combine à la fois un Chrome Navigateur et d'un Nœud.js/v8 de l'exécution, mais je ne suis pas sûr de savoir comment ils communiquent.
Je suppose que j'ai pu faire tourner un serveur web (en gros, certains Node.js HTTP Middleware comme Express), mais qui crée un réseau accessible serveur (qui peut aussi voyage place de pare-feu) - l'une des raisons pour lesquelles je veux faire une application de bureau est précisément pour éviter l'exécution d'un serveur réel. La base, comme le MVP/pattern MVVM dans un "normal" d'applications de bureau.
Quelqu'un peut me donner quelques points de départ pour ce que je suis en train de faire? Comment le navigateur parler le nœud d'exécution (le "Client" comme ils l'appellent?) pour le dire "Hey, chercher mon le dossier avec l'ID 12345", et le Client de retour de rendu HTML, ou serait le navigateur suffit d'obtenir une goutte de JSON en arrière et rendre grâce à un JavaScript moteur de template?
- Juste une remarque, ce n'est pas exactement "de Github" Atome " Coquille, le code est hébergé sur Github 🙂
- Atom est un projet par le Github de l'entreprise 🙂
- Grande question. Ce lien doit être affiché sur l'Électron prise en main de la page (ici, j'ai la terre sur elle un an après je n'ai pas vraiment besoin de plus... aurait été agréable d'avoir à l'avant!)
Vous devez vous connecter pour publier un commentaire.
Électron ne semble pas à l'utiliser Node.js comme un serveur web, mais simplement comme un environnement pour exécuter en arrière-plan du code JavaScript, ce code peut utiliser un nœud de modules pour accéder au système. Dans le même temps, le Chrome fournit une interface utilisateur pour l'application, il affiche régulièrement des pages web qui s'exécutent à l'habitude bac à sable JavaScript. Les deux sont intégrés par l'Électron exécutable, l'ancien directement (Node.js peut être construit comme une bibliothèque statique), par libchromiumcontent. Dans un sens, Node.js est le contrôleur de la partie de l'application, alors que Chrome est le point de vue.
Généralement, le concept utilisé pour les pages web, ici, est que de une seule page applications: une page web représente une fenêtre de l'application et en tant que tel, il reste tant et aussi longtemps que cette fenêtre est visible (souvent pour l'ensemble de la durée de vie de l'application). Chaque fois qu'il doit afficher quelque chose de différent, il demande des données à partir du code qui s'exécutent en arrière-plan Node.js, tout comme les applications AJAX demande de données à partir du serveur. La page n'est pas rechargée, généralement JavaScript template sera utilisé pour mettre à jour le contenu.
Il n'est pas vraiment un client/serveur de relation ici, cependant, la communication peut effectivement aller dans les deux sens. Les deux côtés peuvent utiliser le
ipc
module pour envoyer des messages les uns aux autres (processus principal, convertisseur). Ces messages peuvent avoir tous les arguments qui y sont attachées, elles n'ont pas besoin d'être codé de façon explicite (c'est généralement mis en œuvre par l'utilisation de JSON à l'interne pour encoder les paramètres, je n'ai pas vérifier si c'est le cas avec d'Électrons). En interne, le message qui passe est mis en œuvre via une plate-forme spécifique CIB mécanismes, à l'aide de libuv pour être exact.Nous avons mis en œuvre entièrement fonctionnel serveur nodejs & angulaire de l'INTERFACE utilisateur avec sqlite3, sequelize ORM à l'aide de
*. https://github.com/theallmightyjohnmanning/electron-express
Certains Projets nous ont aidé beaucoup:
Windows Emballage: électron-emballeur": "github:électron-userland/electron-emballeur"