>> Tous droits si nous sommes de retour, un couple de buts pour aujourd'hui,
nous allons reprendre là où nous nous sommes quittés la dernière fois,
rappelons que nous avons ce qui en fait la succession
d'applications de serveur lié, super simple mais en utilisant un noeud JS
et puis aussi, plus récemment aide contact express AS
et ce qui était exprimé JS l' analogique dans le monde du PHP.
Donc express est plus près ...,
si expresse est essentiellement la Cadre MBC qui est assez
populaire dans le monde js de nœud,
Étagère que nous verrons plus aujourd'hui par Tim est un analogue
de l'éloquent qui est un ORM sur un mappeur de relation d'objet
qui facilite en fait pour éviter le code SQL de bas niveau
et en fait exprimer les relations parmi les différents objets.
Donc, un des plus cool les choses honnêtement
sur noeud js est juste comment il se prête facilement
à faire des applications en temps réel, des choses comme serveurs de chat
ou des serveurs de messagerie, Tout ce que vous les gars utilisent maintenant
comme Google ... G-chat ou Google Hangout
ou mises à jour de statut Facebook ou encore Twitter si vous êtes
sur leur page web tout est une sorte de temps réel
ou vous la donne illusion du temps réel
et c'est en fait une douleur dans le cou à voir avec quelque chose
comme PHP et My SQL droit qu'avons nous proposons
le lundi serait le moyen
par lequel vous pourriez mettre en œuvre la illusion du comportement en temps réel
avec un serveur de chat en PHP, que voulez-vous faire?
Alice envoie un message, frappe entrer où faut-il aller?
Ouais.
>> [Section Inaudible]
>> Dans une base de données, puis qu'est-ce que le navigateur de Bob ont
à faire pour voir réellement ce qu'Alice a dit, ouais?
>> [Section Inaudible]
>> Gardez vote de la base de données, droit, si une demande a ajax
à feu chaque seconde, chaque peu secondes ou nous avons parlé brièvement
mais ne regardez pas un exemple de quelque chose qui s'appelle longue scrutin,
n'importe rappeler comment
ce mécanisme ... sur un haut niveau fonctionne?
>> [Section Inaudible]
>> Exactement, oui si un navigateur fait encore une demande ajax
à un serveur, à un point de php foo mais foo point php semble juste
à accrocher, il se trouve essentiellement dans une boucle while pour autant
30 secondes et typiquement une seule fois le fichier point de php foo
réalise oh il ya une nouvelle ligne
dans la base de données ne il fait répondre
répondre avec un http.
Donc vous pensez que cela pourrait autrement accrocher le serveur
et il le fait dans une certaine mesure
mais cela signifie qu'il ya beaucoup moins de frais généraux
parce que vous n'avez pas besoin d'un nouveau tcp connexion, une nouvelle connexion htp
de demander effectivement les données du serveur.
Mais noeud js est livré avec une très bibliothèque populaire appelé socket
point io qui vous pourriez jamais utilisé est construite en haut
d'une technologie appelée Web prise qui est présent
dans les navigateurs les plus modernes et ce socket est io ne vous permet
pour créer essentiellement une connexion persistante
entre le navigateur et le serveur c'est très peu de frais généraux
vous n'avez donc pas nécessairement avoir les mêmes problèmes de mise à l'échelle
que vous pourriez, si vous êtes frapper en permanence le serveur
dans le monde du PHP et mon SQL, etc.
Même pour les anciens navigateurs
qui ne supportent pas prise Web cette prise de point de bibliothèque io peut
retomber sur clignote mise en oeuvre de douilles
et des prises est un réseau chose de CS143 par exemple.
Ou il peut même se replier sur longue scrutin lui-même afin qu'ils mettent en œuvre
même genre de travail
autour de fait le maintien l'illusion de cette connexion.
Alors socket [inaudible] io et c'est dans la forme
d'une bibliothèque de scripts java, essentiellement si vous l'utilisez
sous la forme d'un noeud de js l'application non seulement vous installez
comme un paquet en utilisant quelque chose comme mécanisme national de prévention que nous avons utilisé le lundi
et ou vous incluez aussi un dépouiller balise dans votre fichier html
qui dit utiliser le bibliothèque côté client.
Donc, il ya deux moitiés à et ce que nous avons fait ici
dans la quatrième itération de la séquence de lundi
des exemples est la suivante.
Donc, cette structure de fichier est rappelle d'un ensemble très commune
pour js exprimées et heureusement, il est plus simple
que lervo [transcription phonétique] a été, rappeler lorsque vous définissez
jusqu'à lervo vous avez un énorme méchant vider de tout un tas de fichiers,
répertoires de fournisseurs, lib et très poids lourds par rapport à cela.
Maintenant, en toute équité, nous avons dépouillé des trucs c'est à peu près une
distraction, mais tous les trucs juteux est vraiment
dans les modules de noeud.
Juste pour vous donner un goût si nous regardons
à des modules de noeud, il ya deux modules ou des bibliothèques
que je l'ai téléchargé, ce serait l'équivalent
du répertoire de fournisseurs, une est appelé express qui est
comme larevel mais dans le noeud
et io la douille celui que je viens de mentionner.
Donc, ceux qui existent afin que nous puissions procédez comme suit si j'ouvre
vous disons indice du point html, nous allons d'abord regarder le html,
cela va composer ce corps, mon super,
super simple serveur de chat.
Donc, il ya apparemment un ul avec une idée unique de messages
et c'est là que li une à la fois,
tous les messages instantanés sont vont apparaître entre Alice
et Bob et puis il ya un simple formulaire avec un champ de texte
et un bouton d'envoi par lequel Alice
ou Bob peut effectivement un message de l'autre.
Ainsi, l'effet net si Je lance cette application
en faisant application de l'espace noeud point js, si je tire un couple
de fenêtres de navigateur, c'est que Alice pourrait être sur la droite,
Bob pourrait être sur le gauche et juste
pour être clair, il n'ya pas de magie ici j'ai une fenêtre
incognito il n'est donc pas partage de cookies ou quoi que ce soit
comme ça, ce sont des deux utilisateurs distincts.
Je devrais être en mesure d'avoir Alice dire bonjour Bob, cliquez sur soumettre
et maintenant que vous voyez sur la gauche que le message d'Alice a été envoyé
et presque instantanément sur la droite.
Aucun vote apparemment impliqués, Bob a reçu le même message.
Maintenant Bob dit Say Hey Alice vous voyez l'effet inverse.
Alors qu'est-ce qui se passe réellement, comment beaucoup de code avons-nous besoin d'écrire
pour mettre en oeuvre ce serveur de chat,
que vous pouvez maintenant extrapoler mentalement que tout le monde
dans cette salle si ce n'étaient pas sur mon [inaudible]
mais foo dot com nous pourrions tous commencer à discuter instantanément
avec l'autre.
Alors, quel est impliqué et avant que je effacer cet écran c'est ce
est juste socket io étant un peu bruyant, c'est juste l'impression
informations de débogage à l'écran,
il n'y a vraiment rien d'autre là-bas.
Permettez-moi de m'ouvrir appli js de points, de sorte comme avant, nous avons un certain nombre de choses
dans la partie supérieure de l'image.
Un tas de besoins, si ceux-ci sont comme les bibliothèques
ou accentuer des indices ou exiger onces quel que soit le modèle mental que vous
veulent avoir et juste pour récapituler FS est utilisé
pour ce type de fonctionnalité?
Donc, le système de fichiers afin que les fichiers de lecture potentiellement des choses comme ça
et j'utilise ce dans un placer comme vous le verrez,
expresse de ce cours est cadre que nous utilisons,
il est strictement non nécessaire que nous pouvions
comme le lundi totalement créer notre propre serveur http à partir de zéro
en faisant créer serveur et tous de ce type de code d'avant
mais comme nous le verrons ce qui rend les choses un peu plus facile
car tout ce que j'ai à faire est de sur la ligne 3 ici instancier
et exprimer objet, je vais appeler il app, un peu arbitrairement,
Je vais donc dire à l'application de écouter sur le port 1337 arbitrairement,
qui pourraient être 80 par convention
puis enfin, j'ai un nouveau ligne aujourd'hui qui est dit
d'exiger la douille bibliothèque io puis
par cette approche de la chaîne serait cet opérateur de point je suis juste
appelant une leçon écouter c'est essentiellement dire la prise
bibliothèque io à également écouter le même serveur
ou web des connexions socket.
Alors maintenant, que, si ce qui est ce faisant, ces quatre lignes
de code ici qui devrait regarder rappelle larevel,
qu'est-ce que cela représente?
>> [Section Inaudible]
>> C'est un ... route, juste un itinéraire de façon à appli js de points,
aka js de points du serveur en fonction sur ce que les gens veulent appeler
dans leurs propres applications vous avez une convention
de faire la définition de vos routes,
signifie appli point chaque fois vous recevez une demande de rendez aller
à réduire littéralement pour aller de l'avant et appeler cette fonction anonyme
et la fonction anonyme ce cas prend par obligation
ou une demande et d'une réponse, potentiellement d'autres choses
mais peu les deux.
La demande vous donne un accès à des choses comme paramètres http
et en-têtes et autres choses juteuses
et ensuite la réaction est le mécanisme
par lequel vous pouvez répondre à l'utilisateur.
Donc, c'est super simple même si nous n'avons pas tout à fait
même code dernière fois, je suis à l'aide des modules de système de fichiers,
méthode de création de flux de lecture qui fait en substance que,
créer un courant de lecture qui signifie essentiellement commencer siphonage
les octets de l'index point html aussi efficacement que vous le pouvez
sans nécessairement attendre jusqu'à ce que votre lecture du fichier entier
et comme vous le faites que tuyau à la lettre
dans la barre verticale sens si vous êtes à l'aise
avec la ligne de commande de Linux,
tuyau pour la réponse de l'objet.
Il y avait donc deux exemples liés aux cours d'eau le lundi,
nous ne regardions mais vous êtes invités à regarder en arrière
au courant o et flux 1.
Volet 1 ... 0 ont fait quelque chose de semblable à ceci,
courant 1 a fait quelque chose presque exactement comme cela,
c'est juste une nappe un revêtement de dire tri
de slurp quelque chose en plus ici puis commencer à envoyer ici
en même temps, sans faire une masse d'accord
puis à droite massif,
cette approche est en général plus efficaces.
Donc, c'est le genre de vieux trucs même si il était neuf, le lundi
c'est tout ce qu'il faut pour mettre en place un serveur de chat
avec js de nœuds et plus socket spécifiquement dot io.
Alors, comment fait ce travail, permettez-moi de le déplacer un peu,
si io est juste une variable qui renvoie
au module nous requis plus tôt,
socket point est juste un propriété à l'intérieur de celui-ci
qui me donne prise fonctionnalités associées
On est une méthode commune se rapporte à ce que la notion générale?
Un événement ainsi de suite écouter alias dans certaines bibliothèques Cela signifie simplement
en entendant cet événement qui est appelé connexion
et maintenant vous savez ce que de en regardant la documentation,
celui qui a écrit la bibliothèque défini un événement appelé
connexion qui ne ce que votre croirait
quand Alice ou Bob se connecte.
Allez-y et appelez ce fonction anonyme prise passage
dans un argument au client qui est apparemment une sorte
de l'objet qui représente La connexion d'Alice
ou connexion de Bob ou Charlie ou quelqu'un d'autre
et maintenant nous faisons la suivante.
Nous disons au client après il ou elle est reliée
écouter spécifiquement
pour un message qui est complètement arbitrairement appelé un message
client du côlon.
C'est quelque chose que Tim et Je suis venu avec, il pourrait être foo
ou bar, c'est juste un peu chaîne unique que nous devions
de décider que les développeurs.
Chaque fois que Alice ou Bob entend
cet événement ce anonyme fonction doit être appelée
et les données, l' contenu de Alice
ou le message de Bob devrait être passé dans ce gestionnaire d'événements
et maintenant ce qui devrait l' client bien faire, vous pouvez genre
de lire ce assez intuitivement le client doit diffuser,
autrement connu comme émettent un un message appelé méthode serveur
signifiant ainsi ce message est envoyée par le serveur ne
à partir du navigateur, et ce serait ce message être,
c'est apparemment la charge utile de tout ce qui venait des clients
et nous allons juste arbitrairement appeler message.
Il ya donc beaucoup de cela est arbitraire
par appellation raisonnable conventions, Tim et moi sommes venus
avec, la plupart du temps Tim et nous ne sont tout simplement créer à terme un
discuter serveur qui fait quoi, quand Alice envoie un message
et résultats entrent quel événement apparemment obtient le feu,
Juste pour récapituler.
Types un message à Alice, vues entrer, un client de messagerie est tiré,
ce code entend cela et maintenant le serveur diffuse ce que,
quel est le résultat final de cette réalité?
Alice envoie le message maintenant le serveur rediffuse
efficacement à tout le monde sauf Alice, pourquoi tout le monde sauf
pour Alice si vous regardez
au niveau du client de documentation point diffusion point admettre,
ne fait littéralement que, diffuse le message
à tout le monde sauf la client qui vous a envoyé
que le message le plus récent.
Donc, c'est pourquoi vous ne voir une fois de chaque côté,
vous ne voyez pas Alice et Bob obtenir le message d'Alice.
Alors, c'est ça, ce est un agent de relais
si vous c'est tout simplement profiter de messages
et les rediffuser sur
et il est remarquablement évolutive je veux dire même
avec un super simple serveur et quelques lignes
de code que vous pourriez certainement gérer des centaines sinon des milliers
de messages simples simultanés va et vient comme ceci
et imaginez la complexité maintenant de le faire en PHD
ou Larevel ou mon SQL et la quantité de code que vous auriez
à écrire pour fait parvenir.
Or, dans l'équité de cette est pas droit persistante
si le serveur tombe en panne nous perdons toute l'histoire
il n'est donc pas tout à fait une traduction parfaite mais c'est
que l'avant droit.
Regardons le script Java Code nous avons sauté sur l'heure,
c'est Alice et Le client de Bob,
la page Web qu'ils utilisent maintenant Voyons ici pour un moment.
Il ya un peu plus de code
mais c'est à peu près juste jQuery ici afin avis
que, dans la page Web que j'ai tiré
il ya un moment, nous inclure la bibliothèque jQuery,
la prise io bibliothèque et que un préavis de côté la différence
ici, slash slash à le début d'un trajet
comme cela signifie quoi exactement,
où est jQuery point js sur ce serveur?
Ouais.
>> [Section Inaudible]
>> C'est sur internet oui Code littéralement appelé point jQuery
dot com alors pourquoi slash, slash, pourquoi ne pas simplement un slash,
où est le http ou le côlon, ce que cela signifie en général
si vous ne slash slash à le début de l'url?
C'est vraiment utile.
Bon alors ce qui est de toute évidence manquant http maintenant si nous raisonnons
à travers cette logique, en général, vous n'avez pas besoin
pour ne citer que les noms des serveurs droit
comme si il suffit d'utiliser slash jQuery point js ce qui est supposé
par le navigateur?
Que le fichier se trouve sur le même serveur afin de continuer ce genre
logique si vous ne dites pas il ce protocole ce qui est le
navigateur assumer, même protocole afin si vous avez déjà visité les sites Web
qui vous donnera une erreur sur les lignes de contenu non sécurisé
sur cette page, c'est parce que quelqu'un a codé en dur http
côlon slash slash URL d'un image ou un fichier de script Java
ou un fichier CSS, quelque chose comme ça dans le code source de la page
mais la page elle-même dans la navigateurs URL http s.
Donc, ce n'est que le peu en fantaisie
de dire que je ne sais pas quel est le protocole
que ces utilisateurs finaux allez utiliser
mais assurez-vous qu'il matchs de sorte que chrome
et d'autres navigateurs ne pas crier à l'utilisateur.
Le seul hic est le jQuery gens avaient mieux définir
https sur leur serveur.
Donc, ils sont en fait inscription sur 443.
Tous droits quant à ce un ici c'est un peu
de barre trompeuse prise io suggère
qu'il ya un répertoire appelé io prise de points sur mon serveur
mais il n'y a pas si nous poussons
autour, il ya le le répertoire de module de noeud
mais il n'y a rien publique à ce sujet,
quand nous avons configuré io socket à écouter sur les mêmes ports,
1337 essentiellement que la bibliothèque que quelqu'un d'autre a écrit est va
en quelque sorte de insérer du code dans l'environnement de noeud js
et il suffit d'écouter pour cette voie.
Cette bibliothèque a juste configuré une route pour cela,
ce n'est pas un véritable répertoire.
Il serait dans un emplacement standard.
Bon alors maintenant intéressant partie,
donc quand le document est prêt, comme indiqué
par ce jQuery construire, je vais d'abord aller de l'avant
et se connecter à une prise,
ce socket juste par ... le garder simple, je vais connecter
à réduire, c'est où l'utilisateur se trouve,
J'ai gardé l'exemple simple nous allons simplement se connecter
à exactement la même URL que le utilisateur a visité alors je vais
faire ce qui suit, je vais dire le navigateur d'Alice ou Bob
écouter pour la message du serveur.
Encore une fois cela aurait pu être foo
ou interdire tout moment vous entendre un message
de la il les données d'appel de serveur et puis faire ce code jQuery
qui je suppose plus si pas tout le monde est familier
ces jours, mais essentiellement une broche à la liste article
à l'UL existante qui a été appelé messages
qui dit littéralement quelle que soit la charge utile est
du message de discussion suivie d' un trait d'union, suivi par recevoir,
suivi d'un espace puis un temps de mise à jour et c'est pourquoi
pour être clair, si nous remontons
pour cela, vous obtenez ces supplémentaires balles encore et encore
et encore une fois avec des temps de date.
Pendant ce temps, si nous regardons ici nous avons juste
pour gérer la soumission du formulaire de sorte que c'était la réception
d'un message instantané, voici L'envoi et c'est en quelque sorte
de rien à voir avec js de nœud, écouter aux formes soumettre un événement.
Quand il arrive empêcher défaut, cela signifie simplement ne pas soumettre
au serveur de la manière habituelle Ainsi, recharger toute la page,
nous voulons faire tout cela via ajax.
Voici juste quelques codes jQuery
d'obtenir effectivement l'entrée dont le type est le message,
dont le nom est un message aller de l'avant
et se sa valeur alors vous allez de l'avant
et si vous avez fait un message, si Alice et Bob
ou Bob réellement types des Non 0 nombre de frappes émettent
sur la prise d'un message appelé client de messagerie avec cette charge utile
et puis vers le bas ici, ce n'est ce qui le rend vert par opposition
au rouge, nous avons simplement sortie côté de l'appareil [inaudible].
Alors, c'est ça, mais tout de c'est juste la mise en place,
la vraie substance nouvelle je voudrais argumenter est juste ces trois
ou cinq lignes de code ici et ce genre de trucs à la puissance
js de nœud et avec elle cette bibliothèque particulière.
Donc, nous allons jeter un rapide regarder points express js,
donc ce que je vais essayer de faire dans le couple restant
de minutes ici est mis en place un quelques idées, quelques techniques
qui prennent alors un couple pause minutes, Tim va mettre en place
et puis nous allons plonger plus profondément
à une plus intéressante exprimer la demande et aussi
à étagère, la bibliothèque Tim a effectivement écrit
pour la communauté open source
qui nous donne la lumière éloquent fonctionnalité avec mon SQL
et des transactions et d'autres comme caractéristiques et il va aussi plonger
dans un peu plus de la scénario langage Java lui-même,
comment son objet ou non-classe modèle fonctionne autrement savoir
comme un modèle prototype, un peu plus sur ce à venir.
Donc, nous allons jeter un oeil à deux dernière applications ici, serveur de cinq
et le serveur 6 qui sont tous sorte de similaire dans l'esprit,
ce ne sont pas des serveurs de clavardage mais ils utilisent expresse.
Donc, nous allons jeter un oeil à ce qu'il fait réellement,
Je vais aller de l'avant et ouvert ... Je vais exécuter cette application
avec app noeud js, je vais revenir à mon navigateur et recharger
et ce n'est apparemment tout ce serveur est fait,
c'est un serveur super simple c'est apparemment une recherche
moteur si je tape dans foo et présenter, aucun résultat de recherche
pour foo, je n'ai pas eu autour de mise en œuvre du sophistiqué
extrémité arrière, tout ça va
à faire est d'écho, peu importe ce que vous tapez aucun résultat pour foo,
pas de résultats pour bar alors comment pouvons-nous faire
parce qu'il ya une quelques morceaux, un,
il ya clairement un certain les entrées étant prévus
au serveur n'a pas Larevel bien sûr, mais js de nœud maintenant
nous devons donc en quelque sorte obtenir à ce paramètre Q,
nous clairement faire une sorte de vue ici,
nous rendre une vue si peut-être il ya une opportunité
pour les modèles ou variables interprelation [transcription phonétique]
prenons donc un coup d'oeil à ce qui suit.
Dans js appli pour ce particulier serveur c'est tout ce que nous avons.
Nous avons besoin d'un express lui-même, deux le module de trajet
qui fait que quelques-uns trucs utiles
comme se joindre à cordes ensemble et ainsi de suite pour moi,
J'écoute sur le port 1337 et maintenant ce qui est nouveau pour qu'il passe
que exprès comme Larevel soutient différents plug-ins
et les technologies et d'autres choses et un
des technologies que vous peut brancher un moteur d'affichage
ce qui signifie que tout ce gabarit moteur ne vous voulez utiliser,
Larevel avait sa propre chose, mais vous pouvez brancher
dans des choses différentes, différent cadres de pêche de P ont
différentes façons de templates, ejs est juste un commun
et un moteur assez simple qui nous vient de faire les choses
comme les accolades qui vous aviez dans la syntaxe Larevels
pour substituer des variables,
c'est un peu différent est syntaxiquement tous.
Alors maintenant, il ya cette chose appelée middleware afin que vous verrez
dans votre propre noeud équipes projet une middleware est juste sorte de code
ou bibliothèques que vous injectez
dans la [inaudible] réponse cycle de vie d'une application,
en d'autres termes ces deux lignes disent express
de faire un travail supplémentaire entre le temps qu'il reçoit une requête
et entre le moment où il envoie cette demande à votre propre itinéraire,
votre code que vous avez écrit.
Donc, en particulier cette ligne ici utiliser point express statique et tout
de cette complexité de cette juste signifie que si vous voyez une demande
qui vient dans un fichier statique comme JIF foo foo point ou point css
ou foo point js donc pas un itinéraire généré dynamiquement,
aller de l'avant et assumer elle vit dans le sous-répertoire du public,
c'est tout ce qui est à faire.
Il est une sorte de cartographie Larevel, tout à votre site
ou votre répertoire public plutôt Larevel.
Cette ligne suivante est juste disant que je veux utiliser des routes,
Je veux utiliser des choses comme application dot obtenir
que nous avons vu il ya un moment et nous le verrons dans un instant maintenant.
Donc point app obtenir des moyens écouter pour cette voie,
réduire lorsque vous l'obtenez appeler cette fonction anonyme qui prend
dans une requête et un réponse et maintenant juste
comme Larevel vous avez un moyen de rendre un modèle,
réponse dot rendu, citer indice Ils ont dit,
rendre est un modèle appelé index,
ça y est nous allons donc suspendre l' fil pour un simple regard moment
le contenu de le répertoire de vues
et notez ce trop est super simple pour le moment,
il ya index ejs de points et chercher ejs de points,
Je veux évidemment la première
parce que c'est celle que je viens fatigué à rendre et nous verrons
dans l'indice de vues ejs de points plus fait entièrement html
pour le moment, il n'y a fait pas de gabarits en cours.
J'ai donc fait techniquement pas même pas besoin de l'appeler ejs,
Je n'ai pas besoin de cette fonctionnalité mais je l'ai gardé uniforme,
si c'est ça, c'est ce que me donne cette forme super simple.
Donc, il ya seulement une autre voie, si nous regardons ici je l'ai dit
que c'est ce qui gère obtenir slash recherche pour le genre réelle
de Google comme gestionnaire pour l' formulaire de demande, quand vous obtenez
cette voie appeler cette fonction anonyme
et rendre le modèle appelé recherche
et quelle est la deuxième l'argument signifie probablement.
Il ressemble à un objet JSON de sortes ou objet de script Java.
Quel est le rôle de cette Le deuxième argument sans doute?
>> [Section Inaudible]
>> La requête réelle que le tapé utilisateur vit apparemment
en demande point requête, requête se référant à tout
après le point d'interrogation point q qui est le nom arbitraire
que je lui ai donné comme Google
et en attendant q côlon est juste dire passer dans le modèle,
ejs recherche de points, un clé de q et une valeur
quelle que soit sa réelle q valeur était.
Alors que les feuilles juste un fichier d'intérêt à vue,
ejs recherche de points je gardais ce super simple aussi,
C'est surtout juste html sauf pour une ligne assez remarquable
qui est cette syntaxe ici qui ressemble à un tas
de gabarits différents moteurs, cela signifie juste prise
de la valeur de q et le mettre en gras.
Donc il n'y a aucune recherche réelle fonctionnalité mais elle genre
de suggérer comment vous le feriez structurer un squelette
d'une demande de ce genre.
Pendant ce temps ... en fait je peut montrer une autre chose,
remarquerez que je n'ai une certaine html ici pour css
et les fichiers de script Java, il n'y a rien dans ces fichiers
au moment de remarquer que il est un répertoire public
comme je le disais plus tôt pour les fichiers statiques si je vais
là il ya mon répertoire css,
si je vais là-bas il ya des styles dot css
et il n'ya pas de contenu là-bas
mais c'est comme ça que vous le feriez avoir des fichiers publics accessibles.
Laissez bien un coup d'oeil à un autre variante ici
et puis nous introduisons une idée et pause.
Donc, c'est le serveur 6 dernier, alors ce qui est presque identique à l'exception
pour les deux dernières lignes qui ressemble à ceci.
Donc en fait il ya une troisième ligne qui est différent
mais j'ai caché ... alors laissez-moi légèrement de sorte que quelqu'un veut
de proposer ce qui se passe ici en termes simples
ou termes techniques Quoi de différente sur cette version
par rapport à ceux lignes dans les ganglions meilleurs.
Qu'est-ce que je n'ai sans doute fait ici et pourquoi?
Ouais, Sharon.
>> [Section Inaudible]
>> Ouais on dirait que je n'ai indice déplacé et recherche
si distincte directe ou quelque chose, J'ai factorisé-les
et c'est ainsi que beaucoup comme dans Larevel vous pourriez mettre tous
de la logique de votre contrôleur l'intérieur des itinéraires parsèment php
avec des fonctions anonymes encore et encore et encore
mais ce fichier de cours peut devenir assez massif
si dans les voies dot php ce que la plupart
de vous les gars ont fait c'est que vous avez spécifié le nom
d'une classe de traitement ou même le nom d'une méthode
Cela devrait obtenir appelé
de sorte que la même idée ici même si la syntaxe est un peu
différente si ici avis
que je n'ai apparemment mis en place mes propres js de nœud
module et un module est juste un fichier de script Java qui adhère
essentiellement à une convention que nous verrons dans un instant.
Supposons donc que tout mon la fonctionnalité pour l'indice
et de la recherche ont apparemment été mis dans ce répertoire
et maintenant je vais appeler que toute module ou package ou d'une bibliothèque,
ce que vous voulez à penser que,
que des itinéraires d'une variable appelé routes.
Donc, apparemment, dans là routes indice du point est une méthode appelée
index et apparemment il ya une autre méthode appelée la recherche
dans ce itinéraires modules ou une bibliothèque
et je suis en train de l'acheminer juste pour que je ne mets pas tout
de mon code anonyme l'intérieur de mon dossier de l'application.
Allons donc en routes avis il ya juste l'indice js de points
et si je regarde ici ce n'est la convention que je voulais dire plus tôt
si cela est assez arbitraire mais c'est la convention de noeud.
Chaque fois que vous implémentez votre propre bibliothèque de js de nœud,
aka module, vous pouvez essentiellement écrire du code de script Java vous
voulez dans ce fichier, il sera être sable très proprement en boîte
de sorte que toutes les variables vous choisissez sera pas en collision
à la bibliothèque de quelqu'un d'autre, variables ou méthodes ou quoi que ce soit
comme ça, mais rien vous souhaitez exposer
à l'extérieur d'une aile du nez méthode publique dans le script Java
ou php ou d'autres langues vous avez à l'intérieur plop
d'un objet global qui l' auteur de nœud appelé exportations.
Donc, en faisant exportations dot indice j'expose aux utilisateurs
de ce module une méthode appelée indice qui correspond à cette fonction
c'est tellement anonyme le côté droit
mais je suis effectivement en lui donnant un nom sur le côté gauche
et l'exporter dans le monde
de sorte que vous pouvez appeler indice du point ou la recherche de points.
Donc, pour être clair, si je devais aussi quelque chose comme fonction foo
ici que fait quelque chose
cette fonction serait absolument être opérationnel,
il pourrait être appelé à ce fichier mais ne
dans le monde extérieur froid jamais appeler foo
parce qu'il n'est pas été exporté par le biais de cette notation par points.
Donc, c'est tout ce qui se passe,
tout est bien nommer espacés pour vous.
Ainsi, le résultat final si je fais noeud de l'application et recharger la page est
que si je cherche maintenant
pour bar ... fonctionnellement ces applications sont les mêmes
mais c'est en quelque sorte d'une étape vers une mise en œuvre plus propre,
certainement lorsque vous démarrez écriture de plus en plus de code
et c'est tout ce que ceux-ci sont.
Évidemment pas particulièrement sophistiqué ou complexe
mais essentiellement un point de départ
pour ce qui sera de votre js première application de noeud.
Ce que nous ferons probablement plus tard cette semaine ou ce week-end
que vous finissez sur la applications PHP nous suivons
avec une assez simple demande de l'équipe de plongée
dans le même esprit que l'exercice d'échauffement pour php
qui sur la base du enquête semestre milieu,
les gens ne trouvent utiles en passant par l'exercice
de faire quelque chose assez simple
mais assez guidée avant fait face à quelque chose de plus
sur votre propre nous allons donc suivi avec qui
et sera essentiellement en raison d'une semaine et demi
désormais se chevaucher légèrement avec php délibérément.
Toutes les questions, puis sur exprimer, au io socket
ou la confusion reste du lundi peut-être.
Tous droits alors j'espère que l'un des le prendre-une façons jusqu'à présent est
qu'il ya pour certains d'entre eux choses certainement beaucoup moins
tête que vous pourriez ont été utilisées pour.
Alors permettez-moi de vous présenter une dernière idée,
donc un très commun programmation paradigme
dans le script Java qui est effectivement présents dans jQuery
dans les versions récentes de sorte pourrait avoir effectivement vu cette technique
avant, mais il est aussi tout à fait commun dans le monde js de nœud,
il est commun dans de Tim bibliothèque bibliothèque
donc nous nous pencherons sur ce en un exemple plus concret
dans un instant est une solution à coder comme ceci,
C'est représentant du Code nous avons vu lundi, afin de lire le fichier
dans ce contexte, n'est pas un vrai méthode c'est dans le même esprit
FS point de lire le fichier mais assumer que ce n'est que certains ont fait
jusqu'à procédé qui fait quelque chose de très similaire.
Donc, nous avons rencontré un peu questions le lundi en général
si ce qui est en quelque sorte ... pourquoi est-ce une pente glissante,
ce paradigme rappeler de programmation Java script
et appeler par retour paradigme Je veux juste dire cette technique
où vous ne retournez pas valeurs immédiatement
parce que la force bloquer le serveur
de faire quelque chose d'autre qui est utile, vous rappelez la place
comme les vibreurs à secouer Shack lorsque vous êtes prêt
pour passer en arrière une réponse comme argument.
C'est une pente glissante
où très rapidement devient ennuyeux pourquoi?
Ouais.
>> [Section Inaudible]
>> Ouais, il devient peu sorte de droit illisible
si vous avez tous les appels dos et si vous êtes adhérents
à bon style, il devient assez massivement en retrait
au fil du temps et je souligne ce cas exemple, si vous triez de lait écrémé
à travers elle vise simplement à ouvrir un fichier JSON et l'imprimer,
comme c'est ça et pourtant nous avoir des 8 ou 10 lignes ici
qui sont déjà de tri de méchamment en retrait,
nous avons essayer capture qui est
si vous n'êtes pas familier est un la technique de traitement des erreurs
qui vous permet d'essayer quelque chose
et si elle échoue, vous l'attrapez espérons
sans votre programme tout mettre fin mais il ya
tant la complexité comme vous type de devoir réfléchir à cela
et Dieu ne plaise que nous faisons un couple de d'autres appels de méthodes asynchrones,
la chose est déjà va être ici,
vous pourriez penser que c'est un peu d'une esthétique idiot, mais ce
car le rappel paradigme est si commun au moins
dans le code de noeud natif de cette très vite devenir fastidieux,
difficile à déboguer, l'indentation commence à la matière de sorte que vous pouvez trier
des choses de chasse vers le bas, il est tout simplement pas un moyen très heureux
de programmation.
Donc, ce que les gens ont fait
dans divers noeud de contexte parmi les est d'essayer de simplifier ce,
os par exemple des promesses est une autre façon de penser
sur l'écriture du code asynchrone qui transforme visuellement quelque chose
comme la version 1 en cette version 2.
Je prétends et c'est encore juste une sorte de mélange
entre le code réelle et pseudo code, ce n'est représentatif
de la façon dont vous souhaitez ré-implémenter exactement la même chose,
ouvrir un fichier JSON, analyser et imprimer
à l'aide de quelque chose appelé promesses
et la clé détail syntaxique est
qu'il ya un enchaînement passe ici.
Notez que le seul point-virgule
dans l'ensemble ... en réalité bien de laisser ... Je ne veux pas induire en erreur.
Ce n'est pas strictement nécessaire mais soyons cohérents,
remarquerez que le point-virgule qui se réfère à l'ouverture
de l'ensemble de cette déclaration est tout en bas ici.
Ainsi, alors que j'ai formaté ce genre de regarder ...
comme trois états, trois déclarations que vous pourriez voir
en Java ou d'autres langues qui ont try et catch
et la gestion des exceptions plus généralement.
Remarquez que je viens de chaîne la valeur de retour de chaque
ensemble de ces méthodes.
Donc ce qui se passe, lire le fichier s'il s'agit d'un procédé qui existe,
tente apparemment pour lire ce fichier,
point alors oui, alors c'est une très nom commun donné au monde
de promesses pour l' Procédé qui doit exécuter
si la chose précédente a réussi.
Donc, c'est un peu comme le succès gestionnaire, oui, alors json point parse,
bien json point parse est juste une méthode
dans la bibliothèque globale JSON et il adhère apparemment
dans ce cas, à l' modèle de promesse
si nous disons que nous pouvons juste supposer que ce type d'appel
et s'il réussit alors appeler ce gars et puis
si c'est effectivement exécute consoler suffit de vous connecter les données
en question.
Alors, où est l'erreur manipulation, j'ai remarqué sorte
de très aveuglément intensifié hors ce rebord
et vient d'appeler ce méthode et cette méthode
sans jamais vérifier de problèmes.
Eh bien, où sont ceux problème vraisemblablement manipulés dans ces ...
états de cache si différent bibliothèques utilisent différents
conventions, mais dans ce cas est alors tri
du gestionnaire de succès, cache est une sorte de gestionnaire d'erreur
et parce que nous n'avons pas cassé cette chaîne nous continuer à utiliser les
notation par points pour relier l'invocation de la méthode originale
de fichier en lecture et la fonction Invocation des erreurs de tri
de bulle leur chemin dans la chaîne
jusqu'à ce qu'ils soient effectivement traités qui est plus propre que d'essayer
pour faire face à chaque putain étape du chemin
afin que votre code très devient rapidement les données irréelles.
Dans ce cas, nous sommes affirmant que nous essayons
pour attraper ce qu'on appelle un erreur de syntaxe, il s'agit essentiellement d'un
une sous-classe de plus générique erreur et si cela arrive revendication
que c'est json invalide autrement si c'est une erreur plus générique
que nous ne nous attendions pas juste dire, plus généralement, ne peut pas
lire le fichier.
Maintenant c'est juste signifiait à être le code représentant
mais si vous avez programmé dans manuscrit brut Java ou Java
ou d'autres langues c'est code de procédure essentiellement,
il s'agit d'une tradition plus essayer de déclaration des captures
et c'est l'esthétique et la fonctionnalité qui promet
ou d'essayer de vous donner dans laquelle vous pouvez penser que c'est
comme on vient de l'écriture essai puis attraper et ensuite de prendre de ne pas avoir
à vous soucier à chaque seul point possible
où une erreur pourrait gérer ... arriver,
vous pouvez gérer tout cela à la mettre fin au besoin d'un petit bloc
de code, et vous pouvez même la distinction entre les erreurs
que vous pouvez dans ce cas ici.
Donc, la nomenclature que vous aurez voir dans la littérature peut-être
comme Tim présente certaines de ce genre de choses est aussi
que, idéalement, vous voulez promet de résoudre
et de résoudre un moyen de promesse qui a finalement revenir pour ainsi dire
mais pas d'une manière traditionnelle de valeur, de sorte qu'il soit réussit
pour l'essentiel échoue.
Tous droits des questions ensuite, il n'est pas censé être suffisant
d'exposition aux promesses mais juste un modèle mental
pour le code va commencer à voir.