1 00:00:00,000 --> 00:00:02,862 >> [Speel van musiek] 2 00:00:02,862 --> 00:00:10,030 3 00:00:10,030 --> 00:00:11,580 >> David Malan: Dit is CS50. 4 00:00:11,580 --> 00:00:12,880 Dit is die begin van die week nege. 5 00:00:12,880 --> 00:00:15,797 En dit is wat wil hê was mnr Boole se 200 verjaarsdag. 6 00:00:15,797 --> 00:00:17,630 So dit is die metgeselle aan wie ons verwys 7 00:00:17,630 --> 00:00:21,800 geruime tyd oor die gebruik van Boolese veranderlikes ware en valse, 8 00:00:21,800 --> 00:00:22,910 1 en 0 en so. 9 00:00:22,910 --> 00:00:25,270 En dit was Google huldeblyk aan hom vandag. 10 00:00:25,270 --> 00:00:26,489 Hy sou draai 200. 11 00:00:26,489 --> 00:00:28,280 So as jy wil saam met ons vir CS50 middagete, 12 00:00:28,280 --> 00:00:30,279 'n blik op die skakel op die webwerf die kursus se. 13 00:00:30,279 --> 00:00:33,580 En sodanige gesigte en vriende as hierdie wag jy hier in Cambridge. 14 00:00:33,580 --> 00:00:35,360 Gesigte soos dié wag jy in New Haven. 15 00:00:35,360 --> 00:00:37,800 En, in werklikheid, Ken in New Haven vriendelik gemaak 16 00:00:37,800 --> 00:00:41,594 wat genoem 'n geanimeerde GIF van Eli hier by 'n onlangse lunch-- n GIF nog 17 00:00:41,594 --> 00:00:44,260 'n ander grafiese lêer formaat, waarmee jy familiar-- dat 18 00:00:44,260 --> 00:00:46,300 lyk 'n bietjie iets soos hierdie. 19 00:00:46,300 --> 00:00:48,179 Dus net 'n reeks of-- OK. 20 00:00:48,179 --> 00:00:49,720 Niemand hier in Cambridge lag. 21 00:00:49,720 --> 00:00:51,720 Maar in New Haven, hierdie is regtig snaaks, reg? 22 00:00:51,720 --> 00:00:52,350 Alles reg. 23 00:00:52,350 --> 00:00:53,940 >> So nie daar by ons aansluit. 24 00:00:53,940 --> 00:00:55,900 Hier by Harvard, spesifiek, hierdie Woensdag 25 00:00:55,900 --> 00:00:59,480 as jy 'n stage of eerstejaars even-- of selfs junior-- denke van die maak van 26 00:00:59,480 --> 00:01:01,563 'n skakelaar in rekenaar wetenskap, weet dat daar sal 27 00:01:01,563 --> 00:01:04,440 word 'n CS adviseer billike hierdie Woensdag, kort ná die klas 28 00:01:04,440 --> 00:01:08,040 by 04:00 in die rekenaar wetenskap gebou Maxwell Dworkin. 29 00:01:08,040 --> 00:01:11,890 Ons sal dit op die loop se sit webwerf môre, as well. 30 00:01:11,890 --> 00:01:14,430 Donuts, ek vertel, sal bedien word. 31 00:01:14,430 --> 00:01:15,180 >> Alles reg. 32 00:01:15,180 --> 00:01:18,790 So snaaks story-- ek skeer rondom op die internet, 33 00:01:18,790 --> 00:01:23,575 en ek het 'n paar ou argiewe van my voormalige webwerf. 34 00:01:23,575 --> 00:01:25,950 En dit blyk out-- om hierdie tyd, dit lyk baie tydige 35 00:01:25,950 --> 00:01:28,910 want ek verstaan ​​dat die UC verkiesings is oor rat weer. 36 00:01:28,910 --> 00:01:32,230 So ek het vir UC, verloor klaaglik. 37 00:01:32,230 --> 00:01:34,770 En miskien was dit in 'n deel hoekom. 38 00:01:34,770 --> 00:01:37,600 So dit was my webwerf op die oomblik. 39 00:01:37,600 --> 00:01:40,477 Vir een of ander rede, het ek gedink dit was 'n goeie idee, voordat die mense te vertel 40 00:01:40,477 --> 00:01:43,310 wat my platform was en waarom hulle moet stem vir my, dat hulle 41 00:01:43,310 --> 00:01:47,770 kliek om te betree om uit te vind wat inligting, wat in retrospek is 42 00:01:47,770 --> 00:01:48,660 soort creepy. 43 00:01:48,660 --> 00:01:50,910 Ek weet nie regtig wat dit was. 44 00:01:50,910 --> 00:01:53,140 >> Maar dit het beslis nie help my veldtog. 45 00:01:53,140 --> 00:01:56,874 Ek het ook gevind dat deur die senior year-- Ek het hierdie Muppet kalender. 46 00:01:56,874 --> 00:01:58,540 Muppets was soort van in die mode terug daarna. 47 00:01:58,540 --> 00:01:59,456 Of miskien was hulle nie. 48 00:01:59,456 --> 00:02:01,790 Ek het 'n Muppet kalender terug daarna. 49 00:02:01,790 --> 00:02:04,860 En ek het gedink dit sou cool wees om naam my rekenaar op die netwerk Harvard se 50 00:02:04,860 --> 00:02:07,460 frogman.student.harvard.edu. 51 00:02:07,460 --> 00:02:10,370 Op die oomblik, ons almal uniek gehad identifiseerbare gasheer name. 52 00:02:10,370 --> 00:02:13,150 En jy kan 'n paar nietigheid kies noem in plaas van jou eie naam. 53 00:02:13,150 --> 00:02:15,580 En ek het met duiker vir een of ander rede. 54 00:02:15,580 --> 00:02:19,040 >> En dan started-- ek ek spandeer baie van die tyd te kliek deur middel van hierdie skakels 55 00:02:19,040 --> 00:02:20,280 vanoggend. 56 00:02:20,280 --> 00:02:24,690 En dit was my oor bladsy wat nou soort van lyk adorable. 57 00:02:24,690 --> 00:02:28,210 Maar dit getuig ook net hoe ver tegnologie het gekom. 58 00:02:28,210 --> 00:02:30,310 Ek bedoel, terug in die dag, 'n 486 was iets. 59 00:02:30,310 --> 00:02:34,090 Hierdie dae, dit is super, super, super stadig en goed minder 60 00:02:34,090 --> 00:02:36,216 as jy dalk in jou eie sakke hierdie dae. 61 00:02:36,216 --> 00:02:38,465 Daar is meer op wat daar was selfs meer verleentheid. 62 00:02:38,465 --> 00:02:39,770 So ek sal dit laat. 63 00:02:39,770 --> 00:02:42,640 Maar dit was my eerste inval in web-- O, nee. 64 00:02:42,640 --> 00:02:43,180 Dit was nie. 65 00:02:43,180 --> 00:02:47,000 My eerste werklike inval in web ontwikkeling was hierdie webtuiste, wat ek net vergeet. 66 00:02:47,000 --> 00:02:50,620 Op 'n sekere punt, het ek geleer hoe om maak herhalende agtergrond beelde. 67 00:02:50,620 --> 00:02:55,260 En so het ek gevind dat hierdie teël effektiewe, soos rugby speler, sokker, gholf en 68 00:02:55,260 --> 00:02:58,040 bal, of wat ook al dit is vir die Frosh kitsboodskappe webwerf. 69 00:02:58,040 --> 00:03:01,390 En dit was eintlik, werklik die eerste web-gebaseerde projek wat ek het on-- 70 00:03:01,390 --> 00:03:03,880 Ek dink miskien stage jaar, junior year-- 71 00:03:03,880 --> 00:03:07,622 nadat CS50 en CS51, een van die gemeenskaplike opvolg klasse. 72 00:03:07,622 --> 00:03:09,330 Ek het opgemerk in soek deur die argiewe 73 00:03:09,330 --> 00:03:12,150 dat een van my opvolgers en vriende, Lee, soort verander 74 00:03:12,150 --> 00:03:13,480 die kopiereg homself. 75 00:03:13,480 --> 00:03:17,520 Maar dit was inderdaad iets wat Ek moet die verleentheid te besit. 76 00:03:17,520 --> 00:03:19,370 Maar op die oomblik, hierdie was die eerste webwerf, 77 00:03:19,370 --> 00:03:22,220 soos ek gesê het 'n paar weke gelede, waardeur groentjie kon 78 00:03:22,220 --> 00:03:24,350 registreer vir binnemuurse sport hier. 79 00:03:24,350 --> 00:03:27,950 En so dit blyk dié agtergrond beelde 80 00:03:27,950 --> 00:03:29,530 soos dit is nie so 'n goeie idee. 81 00:03:29,530 --> 00:03:31,840 Maar die web was nuut, en ons is almal eksperimenteer. 82 00:03:31,840 --> 00:03:34,310 En dit is wat ek blykbaar het in die tyd. 83 00:03:34,310 --> 00:03:34,810 Alles reg. 84 00:03:34,810 --> 00:03:38,020 So sonder verdere uitstel het, skakel ons ratte vandag om jou te gee, regtig, 85 00:03:38,020 --> 00:03:42,250 die finale stuk wat jy kan vind veral nuttig vir finale projekte 86 00:03:42,250 --> 00:03:44,780 maar ook wat sal begin om maak die hele wêreld wye web 87 00:03:44,780 --> 00:03:46,680 voel 'n bietjie meer verstaanbaar. 88 00:03:46,680 --> 00:03:49,460 Inderdaad, ons gaan stel een programmeertaal 89 00:03:49,460 --> 00:03:52,474 genoem JavaScript wat soortgelyk en verskillende maniere in verskillende 90 00:03:52,474 --> 00:03:54,140 van tale wat ons het gekyk na wat tot dusver. 91 00:03:54,140 --> 00:03:55,807 >> So C, onthou, is dit saamgestel taal. 92 00:03:55,807 --> 00:03:57,473 Jy het om dit te doen deur middel van 'n samesteller. 93 00:03:57,473 --> 00:03:59,810 Jy kry bronkode om beswaar kode, of nulle en ene. 94 00:03:59,810 --> 00:04:03,000 En dit is dié wat nulle en jou CPU, Central Processing Unit, 95 00:04:03,000 --> 00:04:04,360 eintlik verstaan. 96 00:04:04,360 --> 00:04:06,610 PHP, daarenteen, is nie 'n saamgestel taal. 97 00:04:06,610 --> 00:04:08,772 Dit is 'n wat? 98 00:04:08,772 --> 00:04:09,980 Dit is 'n geïnterpreteer taal. 99 00:04:09,980 --> 00:04:11,750 So is daar 'n program genoem 'n tolk wat 100 00:04:11,750 --> 00:04:13,708 moet it-- top lees onder, links na right-- 101 00:04:13,708 --> 00:04:16,519 en uit te vind wat al jou sintaksis doen en beteken, 102 00:04:16,519 --> 00:04:20,200 of dit 'n lus of 'n voorwaarde of enige ander getal programmering 103 00:04:20,200 --> 00:04:20,740 bou. 104 00:04:20,740 --> 00:04:22,210 So dit is 'n geïnterpreteer taal. 105 00:04:22,210 --> 00:04:23,910 >> Toe lei ons HTML. 106 00:04:23,910 --> 00:04:26,440 En HTML is nie eens 'n programmeertaal. 107 00:04:26,440 --> 00:04:28,110 Ons sal dit wat noem? 108 00:04:28,110 --> 00:04:31,650 A opmaak taal, wat net 'n soort van fancy manier om te sê dit 109 00:04:31,650 --> 00:04:35,820 nie programmering konstrukte soos het Ons het selfs terug in die dag van nuuts af. 110 00:04:35,820 --> 00:04:36,720 Daar is geen loops. 111 00:04:36,720 --> 00:04:37,920 Daar is geen voorwaardes. 112 00:04:37,920 --> 00:04:40,820 Dit is regtig 'n taal oor die nasien van jou data 113 00:04:40,820 --> 00:04:43,620 en om dit te formateer of strukturering dit in een of ander manier. 114 00:04:43,620 --> 00:04:46,147 >> CSS, intussen, insgelyks nie 'n programmeertaal. 115 00:04:46,147 --> 00:04:47,730 Dit is selfs meer esteties georiënteerd. 116 00:04:47,730 --> 00:04:50,470 En dit laat jou soort verfyn dinge soos die grootte en kleure font 117 00:04:50,470 --> 00:04:51,850 en plasing en al van dat. 118 00:04:51,850 --> 00:04:52,370 Dan het ons 119 00:04:52,370 --> 00:04:53,160 >> SQL. 120 00:04:53,160 --> 00:04:56,010 So SQL is inderdaad 'n programmering taal in 'n sekere sin, 121 00:04:56,010 --> 00:04:59,330 hoewel maat spesifiek tot databasisse. 122 00:04:59,330 --> 00:05:03,347 Maar selfs al het ons jy net bekend te stel aan kies en voeg en te verwyder en werk 123 00:05:03,347 --> 00:05:05,430 en 'n paar van die ander, blyk jy kan eintlik 124 00:05:05,430 --> 00:05:07,380 skryf funksies of prosedures, soos hulle is 125 00:05:07,380 --> 00:05:11,270 genoem, in SQL wat lyk en optree hou PHP en C funksies. 126 00:05:11,270 --> 00:05:12,390 So weet dat diegene bestaan ​​nie. 127 00:05:12,390 --> 00:05:15,348 Maar ons het nie eens die moeite met hulle soos ons krap net die oppervlak hier. 128 00:05:15,348 --> 00:05:18,600 En dan JavaScript, die laaste van ons tale formeel bekendgestel. 129 00:05:18,600 --> 00:05:21,029 So JavaScript, te, is 'n geïnterpreteer taal. 130 00:05:21,029 --> 00:05:23,070 En diegene wat vertroud is, doen jy wil om dit te onderskei 131 00:05:23,070 --> 00:05:26,960 met 'n paar kenmerkende van beide C en PHP? 132 00:05:26,960 --> 00:05:28,300 Wat maak dit anders? 133 00:05:28,300 --> 00:05:29,650 >> GEHOOR: Dit is nie saamgestel. 134 00:05:29,650 --> 00:05:29,930 >> David Malan: Weer sê? 135 00:05:29,930 --> 00:05:31,200 >> GEHOOR: Dit is nie saamgestel. 136 00:05:31,200 --> 00:05:31,930 >> David Malan: Dit is nie saamgestel. 137 00:05:31,930 --> 00:05:33,450 So is dit ook vertolk word. 138 00:05:33,450 --> 00:05:34,760 So dit is nie saamgestel. 139 00:05:34,760 --> 00:05:37,210 Maar wat maak dit 'n bietjie soos PHP. 140 00:05:37,210 --> 00:05:39,545 Maar dit is nog steeds verskil van PHP in sommige treffende manier, 141 00:05:39,545 --> 00:05:40,920 ten minste in die manier sal ons dit gebruik. 142 00:05:40,920 --> 00:05:41,205 Ja? 143 00:05:41,205 --> 00:05:41,940 >> GEHOOR: Dit loop kliënt-kant. 144 00:05:41,940 --> 00:05:44,000 >> David Malan: Dit loop kliënt-kant, gewoonlik. 145 00:05:44,000 --> 00:05:47,190 Dit is inderdaad die onderskeidende kenmerkend is vir ons nou. 146 00:05:47,190 --> 00:05:51,170 C was bediener-kant in die sin dat ons alles in CS50 IDE. 147 00:05:51,170 --> 00:05:53,630 PHP tot dusver was bediener-kant sover 148 00:05:53,630 --> 00:05:56,550 soos dit ook kry interpreted-- nie saamgestel nie, maar interpreted-- 149 00:05:56,550 --> 00:06:00,690 binnekant CS50 IDE, wat van die kursus is net 'n bediener of bedieners in die wolk. 150 00:06:00,690 --> 00:06:03,070 >> Maar JavaScript, selfs al is jy jy gaan 151 00:06:03,070 --> 00:06:07,000 om te begin skryf dit, sê, pset agt en miskien finale projects-- jy 152 00:06:07,000 --> 00:06:09,620 gaan om dit reg in CS50 IDE en stoor dit 153 00:06:09,620 --> 00:06:14,760 in lêers binne CS50 IDE, CS50 IDE en op sy beurt, het die wolk bedieners 154 00:06:14,760 --> 00:06:19,160 waarop dit aangebied, gaan nie interpreteer of voer jou kode. 155 00:06:19,160 --> 00:06:23,880 Inteendeel, dit gaan in gestuur word Onveranderde af na die leser. 156 00:06:23,880 --> 00:06:26,990 En dit is dan gaan IE wees of Chrome of Firefox of Safari 157 00:06:26,990 --> 00:06:30,697 of wat ook al wat eintlik interpreteer dit, bo na onder, links na regs. 158 00:06:30,697 --> 00:06:32,780 So het die sleutel onderskeidende eienskap vir vandag 159 00:06:32,780 --> 00:06:36,110 is dat JavaScript is kliënt-kant en PHP, byvoorbeeld, 160 00:06:36,110 --> 00:06:37,690 is bediener-kant. 161 00:06:37,690 --> 00:06:40,920 Nou, dit het interessante implikasies vir, soos, intellektuele eiendom 162 00:06:40,920 --> 00:06:42,660 en wie kan eintlik sien jou kode. 163 00:06:42,660 --> 00:06:44,860 En inderdaad, kan jy gaan op die web en sien die meeste 164 00:06:44,860 --> 00:06:47,530 enige kode wat iemand het geskryf in JavaScript. 165 00:06:47,530 --> 00:06:50,230 Soms is dit leesbaar, soms is dit verborge. 166 00:06:50,230 --> 00:06:52,550 Maar meer oor dit op die regte tyd. 167 00:06:52,550 --> 00:06:57,530 >> So JavaScript, mooi genoeg nie, is super soortgelyke, sintakties, C. 168 00:06:57,530 --> 00:06:59,364 En baie soos PHP, daar is geen hooffunksie. 169 00:06:59,364 --> 00:07:02,113 As jy wil begin skryf JavaScript-kode, soos jy sal sien vandag 170 00:07:02,113 --> 00:07:03,270 jy net begin skryf nie. 171 00:07:03,270 --> 00:07:06,910 Maar dit is nie, sal jy sien, veral nuttig in die konteks van webblaaiers. 172 00:07:06,910 --> 00:07:09,820 Maar my klein disclaimer-- gewoonlik earlier-- 173 00:07:09,820 --> 00:07:13,790 was om te sê dat jy kan toenemend vandag gebruik JavaScript bediener-kant 174 00:07:13,790 --> 00:07:17,655 gebruik van 'n fancy raamwerk genoem Node.js dat sommige van eie programme CS50 se 175 00:07:17,655 --> 00:07:18,280 geskryf in. 176 00:07:18,280 --> 00:07:20,640 Check 50 eintlik gebruik Node.js. 177 00:07:20,640 --> 00:07:24,140 Maar ons gaan om te fokus op JavaScript kliënt-kant hier op uit. 178 00:07:24,140 --> 00:07:26,750 >> So hier is 'n stel van voorwaardes in PHP. 179 00:07:26,750 --> 00:07:29,350 Jammer, in-- eintlik, verklaring, ook korrek is. 180 00:07:29,350 --> 00:07:32,200 Hier is ook 'n stel van toestande in JavaScript. 181 00:07:32,200 --> 00:07:35,560 Sintakties, is dit identies aan C en PHP. 182 00:07:35,560 --> 00:07:39,040 Mnr Boole se uitdrukkings is, Net so, sintakties 183 00:07:39,040 --> 00:07:41,190 identies aan beide C en PHP. 184 00:07:41,190 --> 00:07:44,100 Ons het ook in skakelaars JavaScript wat identies lyk. 185 00:07:44,100 --> 00:07:46,350 Ons het vir sirkelroetes is identies gestruktureer, 186 00:07:46,350 --> 00:07:48,140 terwyl loops, doen terwyl loops. 187 00:07:48,140 --> 00:07:49,980 >> Hierdie een is 'n bietjie anders. 188 00:07:49,980 --> 00:07:53,120 PHP het die vir elke konstruk dat jy kan wees met behulp van 189 00:07:53,120 --> 00:07:55,320 of sal gebruik in pset sewe, miskien. 190 00:07:55,320 --> 00:07:59,460 JavaScript het hierdie spesiale weergawe van vir waar jy letterlik iets te sê 191 00:07:59,460 --> 00:08:03,864 soos vir veranderlike sleutel voorwerp, wat is 'n baie bondige manier om te sê, 192 00:08:03,864 --> 00:08:06,780 as ek 'n object-- het en ons sal praat oor hierdie weer in 'n moment-- 193 00:08:06,780 --> 00:08:10,370 en ek wil Itereer oor al van die sleutel waarde pare binne, 194 00:08:10,370 --> 00:08:13,620 Ek het nie 'om uit te vind hoe om te numeries indeks hulle met 'n nul, een, 195 00:08:13,620 --> 00:08:14,580 twee, drie. 196 00:08:14,580 --> 00:08:15,900 >> Ek kan dit letterlik te sê. 197 00:08:15,900 --> 00:08:20,740 En op elke iterasie, JavaScript vir my sal die veranderlike sleutel werk 198 00:08:20,740 --> 00:08:24,810 die eerste sleutel, dan is die volgende sleutel, dan is die volgende sleutel, dan is die volgende sleutel, 199 00:08:24,810 --> 00:08:25,510 en so meer. 200 00:08:25,510 --> 00:08:30,000 En ek kan op sy waarde kry deur die behandeling van 'n voorwerp in JavaScript, soos ons sal sien, 201 00:08:30,000 --> 00:08:32,584 asof dit 'n assosiatiewe skikking in PHP. 202 00:08:32,584 --> 00:08:35,750 Inderdaad, as jy uiteindelik toegedraai jou omgee oor wat 'n assosiatiewe skikking is 203 00:08:35,750 --> 00:08:40,140 in PHP, kan jy dink dit vir nou as identies aan 'n voorwerp in JavaScript. 204 00:08:40,140 --> 00:08:42,030 Maar dit is 'n bietjie van 'n oorvereenvoudiging. 205 00:08:42,030 --> 00:08:47,230 >> Skikkings kyk, mooi genoeg nie, identies PHP behalwe vir een karakter. 206 00:08:47,230 --> 00:08:51,425 Daar is een ding ontbreek hier dat ons gesien het verlede week met PHP. 207 00:08:51,425 --> 00:08:52,050 Wat weggelaat? 208 00:08:52,050 --> 00:08:53,310 Ja? 209 00:08:53,310 --> 00:08:54,090 Geen dollar teken. 210 00:08:54,090 --> 00:08:56,240 So ons is terug na 'n meer normale wêreld waar 211 00:08:56,240 --> 00:08:58,050 veranderlikes nie dollar tekens. 212 00:08:58,050 --> 00:09:00,810 Maar jy doen voorvoegsel hulle met var, tipies. 213 00:09:00,810 --> 00:09:02,230 En var beteken veranderlike. 214 00:09:02,230 --> 00:09:06,440 En baie soos PHP is losweg typed-- waardeur daar tipes, 215 00:09:06,440 --> 00:09:10,120 daar is getalle en stringe en dryf en so forth-- 216 00:09:10,120 --> 00:09:11,570 JavaScript het insgelyks tipes. 217 00:09:11,570 --> 00:09:15,470 Maar dit is losweg getik in dat ons die programmeerders het nie aan hulle te gee. 218 00:09:15,470 --> 00:09:18,980 Ons het net om bewus te wees dat die verskillende tipes bestaan. 219 00:09:18,980 --> 00:09:21,690 >> Veranderlikes, meanwhile-- hier is hoe ons kan verklaar "hello, wêreld" 220 00:09:21,690 --> 00:09:22,230 as 'n string. 221 00:09:22,230 --> 00:09:24,890 Let daarop dat dit is identies aan PHP maar geen teken dollar. 222 00:09:24,890 --> 00:09:27,120 En dit is iets wat ons sal begin vandag meer sien, 223 00:09:27,120 --> 00:09:30,990 waardeur jy 'n voorwerp het met sleutels en waardes. 224 00:09:30,990 --> 00:09:32,990 En as jy wil om te probeer om af te lei van die vorige week-- 225 00:09:32,990 --> 00:09:34,730 die sintaksis is 'n bietjie anders. 226 00:09:34,730 --> 00:09:39,740 Maar 'n bietjie gesonde verstand check-- hoeveel sleutels nie hierdie voorwerp lyk het? 227 00:09:39,740 --> 00:09:40,850 So ek sien vier. 228 00:09:40,850 --> 00:09:43,560 Ek sien twee. 229 00:09:43,560 --> 00:09:44,680 >> So dit is eintlik twee. 230 00:09:44,680 --> 00:09:47,260 So, dit is 'n versameling van twee belangrike waarde pare. 231 00:09:47,260 --> 00:09:49,820 Die sleutel is simbool waarvan die waarde is FB. 232 00:09:49,820 --> 00:09:52,620 Die sleutel is die prys waarvan die waarde is 101,53. 233 00:09:52,620 --> 00:09:54,230 So dit is twee belangrike waarde pare. 234 00:09:54,230 --> 00:09:58,120 En onthou, PHP-- en dit is weer net soort van sintaktiese verskil. 235 00:09:58,120 --> 00:10:00,170 Dit is nie al wat intellektueel interessant. 236 00:10:00,170 --> 00:10:04,610 PHP kan dieselfde geskryf het iets soos follows-- quote, gelyk. 237 00:10:04,610 --> 00:10:06,730 En ek hierdie verander na vierkantige hakies. 238 00:10:06,730 --> 00:10:11,240 En dit dan verander ek 'n aangehaal woord "prys." 239 00:10:11,240 --> 00:10:12,500 En dan het ek nog nie 'n kolon te gebruik. 240 00:10:12,500 --> 00:10:15,060 Wat het ek verlede week gebruik? 241 00:10:15,060 --> 00:10:18,290 Ja, die gelyk teken arrow funky notasie. 242 00:10:18,290 --> 00:10:21,470 >> En dan het ek hier dieselfde ding. 243 00:10:21,470 --> 00:10:23,580 Dieselfde ding hier. 244 00:10:23,580 --> 00:10:24,240 En dit is al. 245 00:10:24,240 --> 00:10:27,752 So dit is goed as dit het nie ingesink geheue net 246 00:10:27,752 --> 00:10:29,960 nog, want dit is regtig intellektueel oninteressant. 247 00:10:29,960 --> 00:10:31,660 Dis net sintaktiese verskille. 248 00:10:31,660 --> 00:10:33,230 Maar die idees is presies dieselfde. 249 00:10:33,230 --> 00:10:35,910 Binnekant van hierdie veranderlike aanhaling in JavaScript 250 00:10:35,910 --> 00:10:39,020 is 'n versameling van die belangrikste waarde pare waarvan een is simbool, waarvan een 251 00:10:39,020 --> 00:10:39,690 is die prys. 252 00:10:39,690 --> 00:10:42,340 En ek kan kry by daardie waardes met die volgende sintaks. 253 00:10:42,340 --> 00:10:46,280 Net soos in PHP, ek kon iets te doen like-- laat 254 00:10:46,280 --> 00:10:48,590 my maak die boks 'n bietjie groter. 255 00:10:48,590 --> 00:10:52,750 Net soos in PHP, ek kon maak this-- oh, dammit. 256 00:10:52,750 --> 00:10:53,250 Kom op. 257 00:10:53,250 --> 00:10:56,350 258 00:10:56,350 --> 00:11:00,800 >> Net soos in PHP-- OK, sal ons net gebruik die aanbieder notas. 259 00:11:00,800 --> 00:11:06,010 Net soos in PHP, ek kan doen $ quote $ quote ["simbool"], 260 00:11:06,010 --> 00:11:08,860 en dit sal my kry die waarde van "simbool." 261 00:11:08,860 --> 00:11:12,800 In JavaScript, dit gaan om identies, waardeur ek kan net dit te doen. 262 00:11:12,800 --> 00:11:14,850 Die enigste ding wat ontbreek is die dollar-teken. 263 00:11:14,850 --> 00:11:17,470 >> So mooi genoeg nie, dan is daar nie veel nuwe sintaksis. 264 00:11:17,470 --> 00:11:21,025 So, wat ons vandag fokus op, regtig, is sommige van die idees en die aansoeke. 265 00:11:21,025 --> 00:11:22,900 En die eerste sodanige program wat jy dalk 266 00:11:22,900 --> 00:11:26,090 gesien as jy duik in pset sewe reeds is dit sintaksis. 267 00:11:26,090 --> 00:11:28,980 So in pset sewe, as jy het gesien of dit nog nie gesien het nie, 268 00:11:28,980 --> 00:11:33,570 weet dat daar is 'n lêer wat ons gee jy config.json-- JavaScript genoem 269 00:11:33,570 --> 00:11:34,661 Beswaar notasie. 270 00:11:34,661 --> 00:11:35,160 Hoekom? 271 00:11:35,160 --> 00:11:39,540 Ons wou in staat wees om jou te voorsien met 'n sjabloon met 'n paar belangrike waarde pare. 272 00:11:39,540 --> 00:11:44,290 Ons wou in staat wees om jou 'n lys van die leër, die naam van die bediener. 273 00:11:44,290 --> 00:11:46,710 Ons wou 'n te gee plekhouer vir jou gebruikersnaam 274 00:11:46,710 --> 00:11:48,210 en 'n plekhouer vir jou wagwoord. 275 00:11:48,210 --> 00:11:49,410 As jy nie sien nie hierdie nog nie te bekommer nie. 276 00:11:49,410 --> 00:11:51,340 Meer hieroor in pset sewe [? spec. ?] En toe, 277 00:11:51,340 --> 00:11:53,173 natuurlik, ons wil hê jy in die tot-dos te vul 278 00:11:53,173 --> 00:11:55,310 want as jy teken in CS50 IDE, elkeen van julle 279 00:11:55,310 --> 00:11:57,630 jou eie gebruikersnaam en wagwoord. 280 00:11:57,630 --> 00:12:00,910 >> So kan ons 'n half dosyn gebruik het of meer verskillende lêer formate. 281 00:12:00,910 --> 00:12:02,940 Ons kan 'n txt lêer gebruik het. 282 00:12:02,940 --> 00:12:04,570 Ons kan 'n CSV-lêer gebruik. 283 00:12:04,570 --> 00:12:06,745 Ons kon gebruik het 'n INI-lêer, 'n XML-lêer, 284 00:12:06,745 --> 00:12:09,370 'n hele klomp meer akronieme wat jy dalk nie nog ooit gehoor het. 285 00:12:09,370 --> 00:12:11,244 Dit is soort van arbitrêre aan die einde van die dag. 286 00:12:11,244 --> 00:12:16,030 Maar super gewild hierdie dae is 'n teks formaat genoem JSON-- JavaScript Object 287 00:12:16,030 --> 00:12:18,460 Notation-- wat lyk soos hierdie. 288 00:12:18,460 --> 00:12:20,890 Dit is 'n bietjie kripties, maar kennis van die patrone. 289 00:12:20,890 --> 00:12:24,180 Jy begin met 'n oop krullerige stut, en jy eindig met dieselfde. 290 00:12:24,180 --> 00:12:26,550 Binnekant van dit is iets. 291 00:12:26,550 --> 00:12:27,920 Dit is 'n belangrike waarde paar. 292 00:12:27,920 --> 00:12:30,580 So, dit is 'n voorwerp wat ek is kyk na die skerm hier op 293 00:12:30,580 --> 00:12:33,690 wat een van die belangrikste, watter een waarde. 294 00:12:33,690 --> 00:12:37,610 En net afleidings gebaseer op die vorige patroon, wat is die sleutel hier? 295 00:12:37,610 --> 00:12:39,790 Databasis, die ding om die linkerkant van die kolon. 296 00:12:39,790 --> 00:12:43,500 >> Nou, die waarde gebeur om te wees 'n veelvuldige lyne hierdie tyd. 297 00:12:43,500 --> 00:12:46,760 Maar die waarde begin met 'n krullerige stut en eindig met 'n krullerige brace. 298 00:12:46,760 --> 00:12:49,480 So, wat sou jy voorstel is die tipe van die waarde van die databasis? 299 00:12:49,480 --> 00:12:52,160 300 00:12:52,160 --> 00:12:54,670 'N woordeboek of net meer saaklik, 'n voorwerp. 301 00:12:54,670 --> 00:12:55,170 Reg? 302 00:12:55,170 --> 00:13:00,010 Dit is 'n soort van 'n struktuur wat data kan ander strukture gebruik binne homself. 303 00:13:00,010 --> 00:13:02,750 So as hierdie hele ding is ons roep 'n object-- en 'n voorwerp 304 00:13:02,750 --> 00:13:07,101 is net 'n klomp van die sleutel-waarde pairs-- die waarde van die databasis self is 'n voorwerp. 305 00:13:07,101 --> 00:13:10,350 Die waarde van die databasis het 'n hele klomp van die belangrikste waarde pare waarvan die eerste 306 00:13:10,350 --> 00:13:13,130 is gasheer, dan noem, dan gebruikersnaam, dan wagwoord 307 00:13:13,130 --> 00:13:17,550 elk van wie waardes, intussen, is dit net 'n vervelige string in dubbele aanhalingstekens. 308 00:13:17,550 --> 00:13:19,770 >> So selfs as dit is nie super duidelik net nog nie, 309 00:13:19,770 --> 00:13:22,740 weet dat dit net 'n standaard, redelik vervelige manier 310 00:13:22,740 --> 00:13:25,190 stoor data in 'n standaard formaat. 311 00:13:25,190 --> 00:13:27,700 Maar die algemene foute wat jy kan maak, selfs in pset sewe 312 00:13:27,700 --> 00:13:32,120 is bietjie dom dinge, soos as jy per ongeluk die komma daar weg te laat. 313 00:13:32,120 --> 00:13:34,900 Wat gaan lei tot die lêer nie noodwendig leesbare. 314 00:13:34,900 --> 00:13:38,191 Indien jy per ongeluk dinge soos die laat aanhalings, dit gaan nie leesbaar te wees. 315 00:13:38,191 --> 00:13:41,654 So dit is 'n mooi nitpicky lêer formaat, maar dit is een wat super algemeen. 316 00:13:41,654 --> 00:13:44,820 En ons gebeur om dit te gebruik, selfs al is jy enige JavaScript andersins gebruik nie, 317 00:13:44,820 --> 00:13:46,330 in pset sewe. 318 00:13:46,330 --> 00:13:46,860 >> Alles reg. 319 00:13:46,860 --> 00:13:48,110 So onthou hierdie foto. 320 00:13:48,110 --> 00:13:51,657 Ons het gepraat oor, in HTML, wat die kode kan lyk. 321 00:13:51,657 --> 00:13:54,740 Dit is die HyperText Markup Language [Onhoorbaar] vir net "hello, wêreld." 322 00:13:54,740 --> 00:13:57,570 Maar dan voorgestelde ons ruk terug dat as dit help, 323 00:13:57,570 --> 00:14:00,210 jy dalk wil om te begin dink oor hierdie reeds soos 'n boom. 324 00:14:00,210 --> 00:14:03,730 Trouens, die inkeping dat ons gebruik net ter wille van leesbaarheid se 325 00:14:03,730 --> 00:14:05,610 of ter wille van styl se links kan soort van 326 00:14:05,610 --> 00:14:10,040 vertaal word in hierdie boom, waar jy het 'n paar spesiale wortel node dat ons sal 327 00:14:10,040 --> 00:14:16,860 generies genoem dokument, onder wie is die wortel HTML element of tag, HTML, 328 00:14:16,860 --> 00:14:19,980 wat het dan twee kinders, kop en liggaam. 329 00:14:19,980 --> 00:14:21,750 >> En dan op sy beurt, kop het 'n titel. 330 00:14:21,750 --> 00:14:23,440 En die titel het 'n teks waarde. 331 00:14:23,440 --> 00:14:26,130 En liggaam het insgelyks 'n teks waarde. 332 00:14:26,130 --> 00:14:29,220 So as jy gemaklik gesegde dat ja, jy kan hierdie HTML neem 333 00:14:29,220 --> 00:14:32,080 en trek 'n prentjie soos hierdie, die regterkant 334 00:14:32,080 --> 00:14:35,910 is 'n mooi geestelike model, want nou dat ons JavaScript, 'n programmeertaal 335 00:14:35,910 --> 00:14:39,960 taal wat implementeer kan voer en te interpreteer vir jou, 336 00:14:39,960 --> 00:14:42,690 dit blyk dat wat ons is om te doen, in die kode 337 00:14:42,690 --> 00:14:45,320 is begin om hierdie manipuleer boom struktuur in die geheue. 338 00:14:45,320 --> 00:14:47,070 Ons hoef nie te bou die boom in die geheue. 339 00:14:47,070 --> 00:14:49,880 Ons hoef nie te soort van doen pset vyf-style data struktuur 340 00:14:49,880 --> 00:14:50,650 kompleksiteit. 341 00:14:50,650 --> 00:14:54,610 Die leser, mooi genoeg nie, op interpretasie van HTML bo na onder, 342 00:14:54,610 --> 00:14:58,600 links of regs, is letterlik gaan oorhandig ons die ekwivalent van 'n wyser 343 00:14:58,600 --> 00:15:00,840 dat die hele boom gratis. 344 00:15:00,840 --> 00:15:02,150 Dit maak al die harde werk. 345 00:15:02,150 --> 00:15:05,520 Dit is wat Mozilla en Apple en ander het vir ons gedoen. 346 00:15:05,520 --> 00:15:09,400 >> En met JavaScript gaan ons in staat wees om te beheer en te verander en doen 347 00:15:09,400 --> 00:15:12,910 interessante dinge om daardie boom, andersins bekend 348 00:15:12,910 --> 00:15:15,880 as 'n DOM of Document Object Model. 349 00:15:15,880 --> 00:15:17,110 Watter soort dinge? 350 00:15:17,110 --> 00:15:19,030 Wel, dit blyk dat in JavaScript, daar is 351 00:15:19,030 --> 00:15:22,800 hierdie wasgoed lys van gebeure wat kan plaasvind. 352 00:15:22,800 --> 00:15:26,330 En ons het nie regtig gebruik dat woord sedert week nul en pset 353 00:15:26,330 --> 00:15:28,240 nul wanneer ons gepraat oor Scratch. 354 00:15:28,240 --> 00:15:31,390 Die meeste van julle het waarskynlik nie gebruik 'n gebeurtenis in jou Scratch projek. 355 00:15:31,390 --> 00:15:33,850 Maar jy kan onthou die eenvoudige Marco Polo 356 00:15:33,850 --> 00:15:36,760 Byvoorbeeld, waar ons het twee sprites, van wie een sê Marco. 357 00:15:36,760 --> 00:15:40,180 Die ander van wie dan op luister en hoor dat gebeurtenis, het gesê, Polo. 358 00:15:40,180 --> 00:15:42,080 Indien nie, voel vry om terugkyk dat ver terug. 359 00:15:42,080 --> 00:15:44,450 >> Maar dit is net om sê, en jy kan soort van 360 00:15:44,450 --> 00:15:47,730 aflei uit die name van hierdie dinge, JavaScript, dit blyk, 361 00:15:47,730 --> 00:15:53,200 gaan ons 'n manier om te luister gee vir die muis om af te gaan of muis gaan op 362 00:15:53,200 --> 00:15:57,920 of sleutel om af te gaan of sleutel going up of onSubmit onselect 363 00:15:57,920 --> 00:15:59,740 of onresizing iets. 364 00:15:59,740 --> 00:16:03,060 Met ander woorde, 'n fisiese aksie dat 'n mens kan doen met 'n leser 365 00:16:03,060 --> 00:16:08,210 dat jy elke dag te doen, kan jy skryf kode vir wat luister vir diegene gebeure 366 00:16:08,210 --> 00:16:10,220 en dan doen iets gepas. 367 00:16:10,220 --> 00:16:14,130 >> Byvoorbeeld, as jy Google Maps te gebruik, wat gebeur as jy op en skuif 368 00:16:14,130 --> 00:16:16,250 die muis, tipies? 369 00:16:16,250 --> 00:16:17,758 As jy kliek en sleep? 370 00:16:17,758 --> 00:16:18,258 Ja? 371 00:16:18,258 --> 00:16:21,701 372 00:16:21,701 --> 00:16:22,200 Presies. 373 00:16:22,200 --> 00:16:23,159 Die kaart begin om te beweeg. 374 00:16:23,159 --> 00:16:25,616 Sodat jy kan soort van sien wat hier, wat is daar. 375 00:16:25,616 --> 00:16:27,130 En hoe Google implementeer? 376 00:16:27,130 --> 00:16:29,421 Wel, vermoedelik, hulle is met behulp van 'n paar van hierdie gebeurtenis 377 00:16:29,421 --> 00:16:31,720 luisteraars, een wat sê, luister op die muis 378 00:16:31,720 --> 00:16:35,410 down-- sodat wanneer die gebruiker fisies stoot sy trackpad of sy of haar muis 379 00:16:35,410 --> 00:16:36,010 af. 380 00:16:36,010 --> 00:16:38,350 En dan is ons op soek na iets soos beweging 381 00:16:38,350 --> 00:16:41,145 of 'n ander gebeurtenis wat kan ons drag te vang. 382 00:16:41,145 --> 00:16:45,910 En in die feit, sleep is insgelyks in hierdie dot dot dot lys van moontlike opsies. 383 00:16:45,910 --> 00:16:49,140 >> So dit gaan 'n kragtige te wees manier om te begin reageer op die gebruiker 384 00:16:49,140 --> 00:16:52,824 selfs voor hy of sy eintlik druk iets eksplisiete soos voorlê. 385 00:16:52,824 --> 00:16:55,240 Maar ons gaan stel 'n paar onderwerpe om daar te kom. 386 00:16:55,240 --> 00:16:58,570 Maar eers, laat se oorgang sommige werklike kode. 387 00:16:58,570 --> 00:17:01,450 So ek gaan om te gaan voor en maak dom-0, 388 00:17:01,450 --> 00:17:05,869 wat is 'n baie eenvoudige voorbeeld hier dat as ek in net zoom 389 00:17:05,869 --> 00:17:08,500 het hierdie insette hier vir my. 390 00:17:08,500 --> 00:17:12,410 En ek gaan om voort te gaan en tik in "David" vir my naam en klik op Submit. 391 00:17:12,410 --> 00:17:17,940 >> En dan, al is dit soort van goedkoop, ek hierdie vinnige wat verskyn wat sê, 392 00:17:17,940 --> 00:17:19,244 "hello, David!" 393 00:17:19,244 --> 00:17:21,740 So dit is 'n soort van soos ons "hello, wêreld" 394 00:17:21,740 --> 00:17:25,150 dat ons het 'n rukkie terug in C en selfs in PHP, want ek het dinamies 395 00:17:25,150 --> 00:17:26,310 outputted my naam. 396 00:17:26,310 --> 00:17:28,230 Ek kan die naam van iemand anders se hier doen. 397 00:17:28,230 --> 00:17:31,240 Ek kon dit eenvoudig verander, soos Hanna, kliek Stuur. 398 00:17:31,240 --> 00:17:33,780 En inderdaad, die klein pop-up veranderinge. 399 00:17:33,780 --> 00:17:36,650 >> Nou, pop-ups is een van die mees misbruikte kenmerke van die web. 400 00:17:36,650 --> 00:17:38,520 En in die feit, terug in die dag pop-up blockers 401 00:17:38,520 --> 00:17:40,820 in die mode gekom omdat jy sou gaan om 'n paar website-- 402 00:17:40,820 --> 00:17:43,604 dalk 'n twyfelagtige place-- wat sou dan skielik 403 00:17:43,604 --> 00:17:46,020 begin her jou skerm met 'n hele klomp van die pop-ups. 404 00:17:46,020 --> 00:17:49,700 En so hierdie vermoë om pop-up vensters in die voorkant van die gebruiker 405 00:17:49,700 --> 00:17:52,372 het veral nie gewees goed ontvang deur die mensdom. 406 00:17:52,372 --> 00:17:54,080 So dit is waarom jy sien voorkom ding, 407 00:17:54,080 --> 00:17:55,706 wat maak net hierdie hele ding lelik. 408 00:17:55,706 --> 00:17:57,996 So ons gaan 'n behoefte beter manier om die gebruiker te vinnig. 409 00:17:57,996 --> 00:17:59,350 Maar vir nou, wat blyk te werk. 410 00:17:59,350 --> 00:18:03,320 Dus net intuïtief, wat lyk hier om te gebeur? 411 00:18:03,320 --> 00:18:07,870 Ek gaan voort en klik, en dan is daar iets gebeur, duidelik. 412 00:18:07,870 --> 00:18:12,870 Maar wat gebeur nie dit het gebeur verlede week enige tyd wat ek gekliek Stuur? 413 00:18:12,870 --> 00:18:15,940 Wat het nie gebeur nie op die skerm? 414 00:18:15,940 --> 00:18:17,170 Jammer? 415 00:18:17,170 --> 00:18:18,010 Herlaai. 416 00:18:18,010 --> 00:18:19,720 Die URL het glad nie verander nie. 417 00:18:19,720 --> 00:18:22,250 Ek het gesê dit was dom-0, en ek is nog op dom-0. 418 00:18:22,250 --> 00:18:26,890 Gewoonlik, wil ons verander kry om 'n ander URL, soos register.php of die wil. 419 00:18:26,890 --> 00:18:29,560 >> Maar selfs toe ek ontslaan hierdie ding deur te kliek OK, 420 00:18:29,560 --> 00:18:32,310 sien dat die URL bly heeltemal sit. 421 00:18:32,310 --> 00:18:35,350 En, in werklikheid, as ek 'n bietjie skepties, laat my oop Chrome. 422 00:18:35,350 --> 00:18:36,860 Laat my oop te maak die blad Network. 423 00:18:36,860 --> 00:18:38,360 En sien dit is leeg op die oomblik. 424 00:18:38,360 --> 00:18:40,700 Laat my gaan voort en weer Maria. 425 00:18:40,700 --> 00:18:42,810 Daar is geen netwerk verkeer hoegenaamd nie. 426 00:18:42,810 --> 00:18:44,320 So daar is geen HTTP. 427 00:18:44,320 --> 00:18:47,620 >> So ja, as ek kyk na die bronkode vir this-- laat my hierdie venster toe 428 00:18:47,620 --> 00:18:49,480 en gaan na View Bron. 429 00:18:49,480 --> 00:18:50,400 Interessant. 430 00:18:50,400 --> 00:18:53,520 Dit lyk asof daar is 'n paar nuwe etikette, onder hulle script. 431 00:18:53,520 --> 00:18:57,490 So laat ons 'n blik binne CS50 IDE presies wat ek gestuur aan die gebruiker. 432 00:18:57,490 --> 00:19:00,690 >> So hier is-- laat fokus op net die HTML. 433 00:19:00,690 --> 00:19:03,500 Hier is die onderste helfte van dom-0.html. 434 00:19:03,500 --> 00:19:07,830 En sien dat dit het 'n titel, 'n kop tag, 'n liggaam tag, 'n vorm tag. 435 00:19:07,830 --> 00:19:11,257 Maar wat spring uit om jou as anders, veral as jy nog nooit 436 00:19:11,257 --> 00:19:12,590 geskryf jouself enige JavaScript. 437 00:19:12,590 --> 00:19:14,920 Laat my blaai 'n bietjie om die reg hier. 438 00:19:14,920 --> 00:19:18,330 Ek het 'n inset het, 'n ander insette vir voorlê. 439 00:19:18,330 --> 00:19:21,410 Ek het 'n ID, wat is 'n soort van nuwe. 440 00:19:21,410 --> 00:19:22,790 Maar ons het dit sien met CSS. 441 00:19:22,790 --> 00:19:24,480 Wat anders is beslis nuut? 442 00:19:24,480 --> 00:19:24,980 Ja? 443 00:19:24,980 --> 00:19:30,580 444 00:19:30,580 --> 00:19:32,140 Lekker. 445 00:19:32,140 --> 00:19:32,760 >> Alles reg. 446 00:19:32,760 --> 00:19:35,630 So waar dit onSubmit sê, sien wat lyk om te volg. 447 00:19:35,630 --> 00:19:38,740 Dit is 'n kenmerk in HTML naam. 448 00:19:38,740 --> 00:19:40,944 Die waarde is hierdie aangehaal string hier. 449 00:19:40,944 --> 00:19:42,860 En dit lyk 'n bietjie weird met die eerste oogopslag. 450 00:19:42,860 --> 00:19:44,050 Dit is nie HTML. 451 00:19:44,050 --> 00:19:45,240 Dit is nie CSS. 452 00:19:45,240 --> 00:19:47,580 Dit is, as jy kan raai, JavaScript. 453 00:19:47,580 --> 00:19:51,850 Dus blyk dit dat ingeboude webblad is 'n funksie genoem groet. 454 00:19:51,850 --> 00:19:54,250 En ek afleidings wat net want dit is 'n woord, groet. 455 00:19:54,250 --> 00:19:55,880 Dit het 'n oop hakie, naby hakie, kommapunt. 456 00:19:55,880 --> 00:19:58,095 Lyk soos 'n C-funksie, lyk soos 'n PHP funksie. 457 00:19:58,095 --> 00:20:00,370 >> En inderdaad, dit gaan 'n JavaScript-funksie. 458 00:20:00,370 --> 00:20:01,440 Dan is terug ek vals is. 459 00:20:01,440 --> 00:20:03,440 Ons sal terug te kom wat in net 'n oomblik. 460 00:20:03,440 --> 00:20:05,320 Maar waar is die funksie gedefinieer? 461 00:20:05,320 --> 00:20:07,950 Wel laat ek blaai up na die top van die lêer. 462 00:20:07,950 --> 00:20:11,710 En selfs al is dit 'n lang lyn, dit is relatief eenvoudig. 463 00:20:11,710 --> 00:20:15,000 Laat my hier zoom uit en fokus op die vier lyne. 464 00:20:15,000 --> 00:20:17,137 >> So in JavaScript, net soos PHP, jy net 465 00:20:17,137 --> 00:20:19,720 sê, letterlik, die woord "funksie" die naam van die funksie, 466 00:20:19,720 --> 00:20:22,700 en dan hakies met enige arguments-- geen argumente in hierdie geval. 467 00:20:22,700 --> 00:20:25,290 En daar is geen return type in JavaScript, net soos PHP. 468 00:20:25,290 --> 00:20:29,470 So dit is 'n bietjie losser as C. Open krullerige brace, naby krullerige brace. 469 00:20:29,470 --> 00:20:33,270 Gebou in JavaScript is 'n function-- nie 'n aanbevole function-- 470 00:20:33,270 --> 00:20:35,730 maar 'n funksie genoem waarskuwing wie se enigste doel in die lewe 471 00:20:35,730 --> 00:20:38,620 is om te trek wat mooi lelike gevra dat ons 'n oomblik gelede gesien het. 472 00:20:38,620 --> 00:20:40,950 >> Nou is hierdie soort van 'n mondvol. 473 00:20:40,950 --> 00:20:42,560 Wat gaan hier aan? 474 00:20:42,560 --> 00:20:45,840 So laat ons begin om beklemtoon hier alles. 475 00:20:45,840 --> 00:20:48,540 Dit is dieselfde argument te waarsku. 476 00:20:48,540 --> 00:20:49,530 En wat gaan aan? 477 00:20:49,530 --> 00:20:51,200 Dit lyk net soos 'n string. 478 00:20:51,200 --> 00:20:59,180 En dit blyk, in teenstelling met PHP en in teenstelling C, beteken dit nie saak nie in JavaScript 479 00:20:59,180 --> 00:21:01,090 as jy aanhalingstekens of dubbele aanhalingstekens. 480 00:21:01,090 --> 00:21:02,060 Hulle sal gelykstaande wees. 481 00:21:02,060 --> 00:21:03,769 En eerlik, dit is net gewild hierdie dae 482 00:21:03,769 --> 00:21:06,726 vir JavaScript programmeerders om altyd Gebruik aanhalingstekens vir een of ander rede. 483 00:21:06,726 --> 00:21:07,840 Dis net die ding om te doen. 484 00:21:07,840 --> 00:21:09,710 Maar ons kon dubbele aanhalingstekens gebruik, as well. 485 00:21:09,710 --> 00:21:11,540 >> So plus is 'n nuwe karakter. 486 00:21:11,540 --> 00:21:14,512 Maar dié van julle wat gedoen het dit voor, wat beteken plus beteken? 487 00:21:14,512 --> 00:21:16,440 Ja. 488 00:21:16,440 --> 00:21:17,120 Koppel. 489 00:21:17,120 --> 00:21:18,570 So het ons dit in PHP. 490 00:21:18,570 --> 00:21:20,315 Daar is net die dot operateur in PHP dat 491 00:21:20,315 --> 00:21:22,000 sal twee stringe saam koppel. 492 00:21:22,000 --> 00:21:24,000 C was 'n pyn in die nek om dit te doen. 493 00:21:24,000 --> 00:21:27,310 Onthou van pset ses, wat was 'n especial pyn in die nek, 494 00:21:27,310 --> 00:21:29,470 jy wil hê om te gebruik iets soos strcat 495 00:21:29,470 --> 00:21:31,660 ná die toekenning van geheue op die stapel of die hoop. 496 00:21:31,660 --> 00:21:34,243 Jy het om te spring deur hoops net twee stringe koppel. 497 00:21:34,243 --> 00:21:36,040 In JavaScript, dit is super maklik. 498 00:21:36,040 --> 00:21:38,030 Net gebruik van die plus operateur tussen hulle. 499 00:21:38,030 --> 00:21:41,420 >> So het die komplekse soek ding blyk te wees van hierdie 500 00:21:41,420 --> 00:21:43,490 want op die einde van hierdie hele string, ek het net 501 00:21:43,490 --> 00:21:45,797 koppel op 'n uitroepteken. 502 00:21:45,797 --> 00:21:48,380 So as wat knal is "hello, David," "hello, Hannah," 503 00:21:48,380 --> 00:21:52,740 "hello, Maria," en so meer, duidelik wat middel ding tussen die twee 504 00:21:52,740 --> 00:21:55,215 plus punte moet my toegang tot wat gee? 505 00:21:55,215 --> 00:21:58,855 506 00:21:58,855 --> 00:22:01,991 Wat is daar vir seker? 507 00:22:01,991 --> 00:22:02,490 Ja. 508 00:22:02,490 --> 00:22:05,090 So ek sal hier die voorgee beantwoord hul naam, reg? 509 00:22:05,090 --> 00:22:10,380 So hul naam opgeduik in die finale gevolg. So, wat beteken dit? 510 00:22:10,380 --> 00:22:15,080 Wel, ek het vroeër in die voorgestelde prentjie wat die sogenaamde DOM 511 00:22:15,080 --> 00:22:18,580 het hierdie spesiale wortel element pad tot bo genoem dokument. 512 00:22:18,580 --> 00:22:21,660 En nou, dit blyk, wat gaan om 'n spesiale globale veranderlike 513 00:22:21,660 --> 00:22:25,250 in JavaScript, gebou in wat 'n hele klomp van nuttige funksies. 514 00:22:25,250 --> 00:22:31,770 Onder die nuttige funksie is die vermoë om te kry op enige afstammeling knoop. 515 00:22:31,770 --> 00:22:37,760 Diegene vierkante of reghoeke of ellipse is net nodusse in 'n boom, om so te praat. 516 00:22:37,760 --> 00:22:41,850 >> So dit blyk dat gebou in JavaScript se dokument voorwerp 517 00:22:41,850 --> 00:22:47,300 is 'n funksie, andersins bekend as 'n metode, wat genoem getElementById. 518 00:22:47,300 --> 00:22:50,410 Die sintaksis vir die roeping 'n funksie in JavaScript 519 00:22:50,410 --> 00:22:55,220 wat is die binnekant van 'n voorwerp of 'n veranderlike is net met die dot-notasie. 520 00:22:55,220 --> 00:22:57,950 En ons het dit gesien in C wat die struct sintaksis. 521 00:22:57,950 --> 00:23:03,530 Jy sien dit in pset sewe soort, soort, wanneer jy sien CS50 :: navraag. 522 00:23:03,530 --> 00:23:08,070 Die kolon kolon in PHP is 'n ander manier van die roeping van 'n funksie wat 523 00:23:08,070 --> 00:23:09,260 binnekant van 'n paar voorwerp. 524 00:23:09,260 --> 00:23:11,960 >> Maar vir nou in JavaScript, dit is net 'n punt. 525 00:23:11,960 --> 00:23:14,170 En so hierdie funksie, mooi genoeg, soort 526 00:23:14,170 --> 00:23:16,810 sê wat dit does-- kry element deur ID. 527 00:23:16,810 --> 00:23:20,280 'N element is net 'n ander naam vir 'n tag of node in die DOM. 528 00:23:20,280 --> 00:23:26,900 En so kry element deur ID "naam" beteken this-- hier is my HTML. 529 00:23:26,900 --> 00:23:31,910 En op grond van hierdie HTML, wat node of wat HTML tag ek 530 00:23:31,910 --> 00:23:35,097 gaan programmaties handed wees deur te bel document.getElementById? 531 00:23:35,097 --> 00:23:37,650 532 00:23:37,650 --> 00:23:38,500 >> Ja, presies. 533 00:23:38,500 --> 00:23:42,670 Ek gaan die insette te kry element daar wie ID is "naam." 534 00:23:42,670 --> 00:23:45,140 So spesifiek, kan jy dink van hierdie funksie, 535 00:23:45,140 --> 00:23:49,560 getElementById, as 'n manier om terug 'n wyser na daardie spesifieke node 536 00:23:49,560 --> 00:23:50,060 in die boom. 537 00:23:50,060 --> 00:23:51,980 Ons het dit nie geteken boom, maar dit is 'n manier 538 00:23:51,980 --> 00:23:54,900 om toegang tot daardie reghoek of reghoek 539 00:23:54,900 --> 00:23:58,090 deur uniek identifiseer dit deur sy ID. 540 00:23:58,090 --> 00:23:59,760 >> Nou, hoekom is dit nuttig? 541 00:23:59,760 --> 00:24:01,510 Wel, dit blyk dat jy een keer gekry 542 00:24:01,510 --> 00:24:07,220 dat knoop, wat reghoek uit die prentjie, wat node binnekant van dit, 543 00:24:07,220 --> 00:24:10,660 op sy beurt, het 'n hele klomp van die properties-- sleutel waarde pare 544 00:24:10,660 --> 00:24:13,480 of data, waarvan een is waarde genoem. 545 00:24:13,480 --> 00:24:16,500 So letterlik, dit is soort van 'n mondvol om die hele ding te verduidelik. 546 00:24:16,500 --> 00:24:19,370 Maar aan die einde van die dag, al dit doen is gee jou 547 00:24:19,370 --> 00:24:23,070 'n string wat die gebruiker getik in in hierdie hiërargiese manier. 548 00:24:23,070 --> 00:24:24,820 Maar ek hou nie van 'n paar van hierdie dinge. 549 00:24:24,820 --> 00:24:27,590 Of liewer, daar is 'n paar nuuskierigheid steeds. 550 00:24:27,590 --> 00:24:28,870 Al wat was om te werk. 551 00:24:28,870 --> 00:24:33,420 Hoekom dink jy is ek terug valse na die roeping groet? 552 00:24:33,420 --> 00:24:35,910 Dit lyk 'n bietjie lelik, wat Ek het twee state is daar 553 00:24:35,910 --> 00:24:38,730 deur kommapunte geskei. 554 00:24:38,730 --> 00:24:39,310 Neem 'n raaiskoot. 555 00:24:39,310 --> 00:24:44,390 As ek verwyder terugkeer vals is, wat kan gebeur, net instinktief? 556 00:24:44,390 --> 00:24:46,990 557 00:24:46,990 --> 00:24:49,460 Jammer, sê weer? 558 00:24:49,460 --> 00:24:50,530 >> Open 'n klomp van die Windows. 559 00:24:50,530 --> 00:24:52,780 So potensieel dalk iets soos dit sou gebeur. 560 00:24:52,780 --> 00:24:54,422 Wat anders? 561 00:24:54,422 --> 00:24:55,630 Kan 'n versoek in te dien waar? 562 00:24:55,630 --> 00:24:59,109 563 00:24:59,109 --> 00:25:00,510 Na dieselfde bladsy. 564 00:25:00,510 --> 00:25:03,110 So, in werklikheid, dit is wat hoe nader beantwoord hier 565 00:25:03,110 --> 00:25:05,890 selfs al, in teenstelling in die verlede, ek het nie 566 00:25:05,890 --> 00:25:09,300 gespesifiseerde die kenmerk aksie, wat normaalweg wat ons moet doen. 567 00:25:09,300 --> 00:25:11,780 Blyk daar is 'n standaard. As jy nie aksie spesifiseer, 568 00:25:11,780 --> 00:25:15,370 dit is soos om te sê quote, unquote of die naam van die lêer self, 569 00:25:15,370 --> 00:25:17,850 wat in hierdie geval sou wees soos dom-0.html. 570 00:25:17,850 --> 00:25:20,420 Dit is net soort van afgelei, of eerder geïmpliseer. 571 00:25:20,420 --> 00:25:22,420 >> En so as ek dit nie doen nie, laat ons sien. 572 00:25:22,420 --> 00:25:23,230 Laat my dit te red. 573 00:25:23,230 --> 00:25:25,270 En ek het terug valse verwyder. 574 00:25:25,270 --> 00:25:27,759 Laat my terug te gaan na hierdie voorbeeld en krag herlaai nie. 575 00:25:27,759 --> 00:25:30,800 En jy kan my sien raai hierdie op CS50 Bespreek 'n klomp van die tye. 576 00:25:30,800 --> 00:25:34,560 As daar iets ooit optree funky en die leser is nie optree as jy verwag, 577 00:25:34,560 --> 00:25:37,410 dikwels jy wil om te hou Skuif en klik Reload. 578 00:25:37,410 --> 00:25:41,480 Dit sal elke lêer te dwing om te herlaai en plaaslike cache gebruik nie 579 00:25:41,480 --> 00:25:47,032 of 'n afskrif sodat nou, laat my gaan voort en open my Inspekteur, die blad Network. 580 00:25:47,032 --> 00:25:48,740 Ek gaan om te kliek Bewaar Meld want ek 581 00:25:48,740 --> 00:25:51,660 wil dit nie die rye verwyder nadat ek elders kry geklits weg. 582 00:25:51,660 --> 00:25:54,650 >> Laat my hier gaan voort en tipe in Andi, kliek Stuur. 583 00:25:54,650 --> 00:25:55,150 Alles reg. 584 00:25:55,150 --> 00:25:56,480 Dit lyk soos verwag. 585 00:25:56,480 --> 00:25:57,440 Dit sê "hallo, Andi." 586 00:25:57,440 --> 00:25:59,420 Laat my klik OK. 587 00:25:59,420 --> 00:26:00,610 Interessant. 588 00:26:00,610 --> 00:26:05,100 Let daarop dat die bladsy verander, hoewel die oorspronklike blad. 589 00:26:05,100 --> 00:26:06,770 Let op die URL soort verander het. 590 00:26:06,770 --> 00:26:09,430 Dit het bygevoeg 'n vraagteken, wat gewoonlik 'n aanduiding 591 00:26:09,430 --> 00:26:11,260 dat ons probeer om iets te dien. 592 00:26:11,260 --> 00:26:13,570 En dan aan die onderkant, selfs meer uitdruklik, 593 00:26:13,570 --> 00:26:17,570 hier is die werklike HTTP-versoek, wat 'n reaksie van 200 het dat 594 00:26:17,570 --> 00:26:18,490 het my terug hier. 595 00:26:18,490 --> 00:26:20,250 >> So dit is nie wat ons wil, reg te doen? 596 00:26:20,250 --> 00:26:22,166 Want ek wil nie herlaai die hele bladsy. 597 00:26:22,166 --> 00:26:24,970 Ek plaas wou terugkeer valse sodat kortsluiting 598 00:26:24,970 --> 00:26:28,840 verstek gedrag van die leser se, wat was, natuurlik, na die bladsy te dien. 599 00:26:28,840 --> 00:26:31,700 >> So laat ons neem 'n blik op 'n effens beter voorbeeld. 600 00:26:31,700 --> 00:26:33,920 Dit is dom weergawe een. 601 00:26:33,920 --> 00:26:36,680 En kennis van die volgende. 602 00:26:36,680 --> 00:26:39,150 Dit is OK as jy nie grok al die reëls van die kode. 603 00:26:39,150 --> 00:26:41,750 Maar wat is fundamenteel verskil oor hierdie implementering? 604 00:26:41,750 --> 00:26:44,690 Ek sal stipuleer dit optree die dieselfde, doen dieselfde ding. 605 00:26:44,690 --> 00:26:49,320 606 00:26:49,320 --> 00:26:51,570 Wat het ek natuurlik anders gedoen het? 607 00:26:51,570 --> 00:26:52,266 Ja? 608 00:26:52,266 --> 00:26:53,182 >> GEHOOR: [onhoorbaar]. 609 00:26:53,182 --> 00:27:03,421 610 00:27:03,421 --> 00:27:04,170 David Malan: Ja. 611 00:27:04,170 --> 00:27:08,620 So die funksie gedefinieer differently-- Met ander woorde, afwesig van die vorm, 612 00:27:08,620 --> 00:27:13,180 daar op die lyn 7-- of eerder, lyn 8-- nie meer 613 00:27:13,180 --> 00:27:15,070 Het ek die onSubmit kenmerk. 614 00:27:15,070 --> 00:27:16,750 In die vorige voorbeeld, ek het hierdie. 615 00:27:16,750 --> 00:27:18,530 En dan het ek letterlik geskryf hier my kode. 616 00:27:18,530 --> 00:27:20,210 En dan sê ek terugkeer onwaar. 617 00:27:20,210 --> 00:27:22,180 En as dit nie vryf jy nog op die verkeerde manier, 618 00:27:22,180 --> 00:27:26,140 dit moet begin om sover as, net soos in HTML, 619 00:27:26,140 --> 00:27:29,530 toe ons begin om saam te meng dit met CSS in styl eienskappe, 620 00:27:29,530 --> 00:27:32,890 dit het net begin om 'n bietjie te kry slordig of voel 'n bietjie verkeerd. 621 00:27:32,890 --> 00:27:35,020 >> Net so hier, as jy begin om HTML, 622 00:27:35,020 --> 00:27:37,419 en dan sal jy outomaties plop sommige JavaScript-kode 623 00:27:37,419 --> 00:27:40,460 in die middel van 'n string aangehaal, dit is gaan nie baie onderhoubare te wees. 624 00:27:40,460 --> 00:27:40,630 Reg? 625 00:27:40,630 --> 00:27:43,690 Dit is nie eens duidelik op die eerste plaas waar die JavaScript-kode is. 626 00:27:43,690 --> 00:27:46,590 So sou dit regtig mooi as wees 'n beginsel van 'n beter ontwerp, 627 00:27:46,590 --> 00:27:50,500 laat heeltemal hou ons HTML skei van ons JavaScript. 628 00:27:50,500 --> 00:27:53,150 >> So om dit te doen, wat ons het hier gedoen is die following-- 629 00:27:53,150 --> 00:27:56,790 ons net gebruik HTML slegs vir opmaak. 630 00:27:56,790 --> 00:28:00,730 En so in die weergawe een van hierdie, al Ek het 'n vorm van 'n unieke ID. 631 00:28:00,730 --> 00:28:04,630 En dan af hier, ek neem voordeel van 'n spesiale kenmerk van JavaScript 632 00:28:04,630 --> 00:28:08,480 waardeur ek kan kry wat is genoem 'n anonieme funksie. 633 00:28:08,480 --> 00:28:14,150 So dit blyk dat as ek roep document.getElementById van 'demo' 634 00:28:14,150 --> 00:28:18,890 dit is soos gee my 'n wyser na hierdie node in my boom die vorm element, 635 00:28:18,890 --> 00:28:20,100 om so te praat. 636 00:28:20,100 --> 00:28:22,220 >> Nou, ek weet net van wetende 'n bietjie van HTML 637 00:28:22,220 --> 00:28:26,330 nou is ons gelees het sommige aanlyn verwysing, wat 'n vorm element ondersteun 638 00:28:26,330 --> 00:28:29,950 'n hele klomp van die geval listeners-- in ander woorde, die wasgoed lys van gebeurtenis 639 00:28:29,950 --> 00:28:31,700 luisteraars dat ons 'n oomblik gelede gesien het. 640 00:28:31,700 --> 00:28:35,950 Ek weet uit die lees van die dokumentasie dat onSubmit is 'n geldige geval 641 00:28:35,950 --> 00:28:38,520 luisteraar vir 'n vorm element. 642 00:28:38,520 --> 00:28:41,480 >> So wanneer ek weet dat, dit is veilig vir my om te doen 643 00:28:41,480 --> 00:28:45,390 die following-- dat node kry van die boom, die vorm element, 644 00:28:45,390 --> 00:28:48,070 en toegang sy sogenaamde onSubmit eiendom. 645 00:28:48,070 --> 00:28:49,880 So het die dot beteken net dit is 'n eiendom, 646 00:28:49,880 --> 00:28:52,180 soos 'n spesiale waarde binnekant van dit. 647 00:28:52,180 --> 00:28:55,590 En wat data tipe is ek toeken, blykbaar, 648 00:28:55,590 --> 00:28:58,900 om onSubmit, wat effektief 'n veranderlike binne 649 00:28:58,900 --> 00:29:01,010 van daardie node in die boom? 650 00:29:01,010 --> 00:29:04,100 Dit is 'n veld binne daardie struct. 651 00:29:04,100 --> 00:29:05,810 Wat is die tipe data? 652 00:29:05,810 --> 00:29:07,030 >> 'N funksie, ja. 653 00:29:07,030 --> 00:29:08,607 Dit blyk dat PHP het hierdie. 654 00:29:08,607 --> 00:29:10,440 En selfs al het ons het jy nie vertel oor dit, 655 00:29:10,440 --> 00:29:16,240 C het ook funksie wysers, die vermoë om te slaag en toewys funksies 656 00:29:16,240 --> 00:29:18,330 as waardes hulself veranderlikes. 657 00:29:18,330 --> 00:29:20,280 En ons gaan nie om terug te agteruitgang C. 658 00:29:20,280 --> 00:29:23,250 Maar vir nou, dit blyk dat op die regte kant hier, 659 00:29:23,250 --> 00:29:26,260 selfs al is dit lyk 'n bietjie funky, Dit beteken hey leser, 660 00:29:26,260 --> 00:29:27,550 gee my 'n funksie. 661 00:29:27,550 --> 00:29:30,560 Ek gaan nie eens die moeite om te gee dit 'n naam, want ek is letterlik 662 00:29:30,560 --> 00:29:34,450 gaan wys kom ons noem dit die adres van hierdie funksie 663 00:29:34,450 --> 00:29:35,994 onmiddellik onSubmit. 664 00:29:35,994 --> 00:29:39,160 Met ander woorde, die leser, het jy nie nodig om te weet wat hierdie funksie genoem. 665 00:29:39,160 --> 00:29:41,890 Jy hoef net te weet waar dit in die geheue. 666 00:29:41,890 --> 00:29:44,210 En so is dit voldoende om net het 'n gelyke teken daar 667 00:29:44,210 --> 00:29:48,240 en nie te pla noem hierdie, soos cat of groet of enige ander woord. 668 00:29:48,240 --> 00:29:50,150 En nou is dit net 'n stilistiese ding. 669 00:29:50,150 --> 00:29:53,100 Ek kon dit krullerige brace beweeg op the-- sorry-- volgende reël 670 00:29:53,100 --> 00:29:54,750 soos ons gewoonlik doen CS50. 671 00:29:54,750 --> 00:29:57,550 Maar in JavaScript, dit is eintlik stilisties algemene 672 00:29:57,550 --> 00:30:00,450 om net te hou die krullerige brace, die eerste een, op daardie eerste lyn. 673 00:30:00,450 --> 00:30:02,620 >> Maar hierna, daar is niks interessant nie. 674 00:30:02,620 --> 00:30:05,830 Wat oop krullerige brace net afbaken die begin van my funksie. 675 00:30:05,830 --> 00:30:09,320 Die funksie is nou identies, behalwe as ek het 676 00:30:09,320 --> 00:30:11,452 ingesluit die terugkeer valse binnekant van hierdie funksie. 677 00:30:11,452 --> 00:30:13,160 Omdat dit blyk out-- en jy sou net 678 00:30:13,160 --> 00:30:14,980 weet dit uit te lees die documentation-- 679 00:30:14,980 --> 00:30:19,740 dat indien die funksie wat jy ken die onSubmit hanteerder terug vals 680 00:30:19,740 --> 00:30:23,420 die leser net weet en stem die vorm nie te onderwerp aan 'n bediener. 681 00:30:23,420 --> 00:30:27,210 As dit waar terugkom, sal dit in te dien dit na 'n bediener vir redes wat ons sal sien 682 00:30:27,210 --> 00:30:28,700 is nuttig in net 'n oomblik. 683 00:30:28,700 --> 00:30:31,000 >> En dan is die kommapunt ná die krullerige brace net daar 684 00:30:31,000 --> 00:30:32,541 beteken ek klaar die definisie van die funksie. 685 00:30:32,541 --> 00:30:36,600 Jy weet wat om so gou bel as jy hoor 'n voorlegging. 686 00:30:36,600 --> 00:30:37,100 Alles reg. 687 00:30:37,100 --> 00:30:40,650 Dit is nog steeds waarskynlik soort lelik. 688 00:30:40,650 --> 00:30:42,190 So, wat meer kan ons doen? 689 00:30:42,190 --> 00:30:45,000 >> Wel, dit blyk dan in weergawe twee, wat is die last-- 690 00:30:45,000 --> 00:30:46,780 en ons sal net blik op hierdie. 691 00:30:46,780 --> 00:30:49,850 Aan die risiko van die maak van dit leliker, dit blyk 692 00:30:49,850 --> 00:30:52,160 dat daar 'n biblioteek in die wêreld genoem jQuery. 693 00:30:52,160 --> 00:30:54,900 En jQuery is 'n super gewilde JavaScript biblioteek 694 00:30:54,900 --> 00:30:57,930 dit is so gewild dat die meeste enige JavaScript-- dit is nie 695 00:30:57,930 --> 00:31:00,540 ongewoon vir mense om te verwar jQuery met JavaScript. 696 00:31:00,540 --> 00:31:01,070 Hoekom? 697 00:31:01,070 --> 00:31:04,990 JavaScript self het baie verbose maniere om things-- 698 00:31:04,990 --> 00:31:07,820 document.getElementById, dadadadadada. 699 00:31:07,820 --> 00:31:10,510 Jy eindig met baie lang lyne van die kode. 700 00:31:10,510 --> 00:31:15,550 >> So 'n mede naam John Residensie el, wat eintlik werk vir 'n begin 701 00:31:15,550 --> 00:31:18,630 up hierdie dae, kom uit met hierdie biblioteek jaar 702 00:31:18,630 --> 00:31:22,070 gelede dat baie mense het bygedra om jQuery genoem dat veranderinge 703 00:31:22,070 --> 00:31:23,449 die sintaksis in die volgende manier. 704 00:31:23,449 --> 00:31:25,740 En net so het jy dit gesien het, want jy altyd 705 00:31:25,740 --> 00:31:28,140 sien dit as 'n doen web-gebaseerde finale projek, 706 00:31:28,140 --> 00:31:33,270 dit sou die ekwivalent manier wees uitvoering van hierdie funksie met behulp van dieselfde 707 00:31:33,270 --> 00:31:34,630 hierdie spesiale biblioteek. 708 00:31:34,630 --> 00:31:36,680 >> Nou, eerder as terg dit uitmekaar in sy geheel, 709 00:31:36,680 --> 00:31:38,520 laat ons net kyk na sommige patrone. 710 00:31:38,520 --> 00:31:44,850 Dit sintaksis blyk te hê hoeveel anonieme funksies 711 00:31:44,850 --> 00:31:49,584 of naamlose funksies of AKA lambda funksies? 712 00:31:49,584 --> 00:31:50,190 Twee, reg? 713 00:31:50,190 --> 00:31:52,690 En jy weet dat, selfs al jy is nie super gemaklike met hierdie, 714 00:31:52,690 --> 00:31:55,780 net deur die feit dat dit sê funksie () twee keer. 715 00:31:55,780 --> 00:31:58,172 >> En dit blyk dat wat hierdie kode is doing-- 716 00:31:58,172 --> 00:32:01,255 en ons sal verwys na aanlyn verwysings, uiteindelik vir 'n paar help met hierdie. 717 00:32:01,255 --> 00:32:04,480 Dit beteken net dat wanneer die dokument gereed is, 718 00:32:04,480 --> 00:32:07,490 gaan voort en registreer die volgende funksie 719 00:32:07,490 --> 00:32:12,064 as die stuur hanteerder vir die HTML element wie unieke idee is demo. 720 00:32:12,064 --> 00:32:14,480 En dan, wanneer dit gebeur, noem hierdie twee reëls van die kode. 721 00:32:14,480 --> 00:32:18,677 En dit is tragies, 'n meer verbose manier om te sê terugkeer onwaar. 722 00:32:18,677 --> 00:32:21,510 En ons het dit al net omdat jy sal sien kode soos hierdie aanlyn. 723 00:32:21,510 --> 00:32:23,140 En dit is niks om te word afgeskrik deur. 724 00:32:23,140 --> 00:32:26,057 Maar eerder, in gedagte hou dat wat is gaan algemeen in JavaScript 725 00:32:26,057 --> 00:32:26,765 is hierdie paradigma. 726 00:32:26,765 --> 00:32:29,510 En so dit is hoekom ons wys dit vir nou. 727 00:32:29,510 --> 00:32:30,010 Alles reg. 728 00:32:30,010 --> 00:32:32,730 So sonder te woon veel op daardie sintaksis, 729 00:32:32,730 --> 00:32:37,800 is daar enige vrae oor hierdie voorbeelde of idees tot dusver? 730 00:32:37,800 --> 00:32:38,300 Alles reg. 731 00:32:38,300 --> 00:32:40,220 So kom ons gebruik dit vir iets nuttig. 732 00:32:40,220 --> 00:32:47,070 Maak 'n webblad wat net sê hello, so en so is nie al wat interessant, 733 00:32:47,070 --> 00:32:47,830 nie underwhelm. 734 00:32:47,830 --> 00:32:51,038 Hierdie een gaan nie mooi wees, maar dit gaan om iets nuttigs doen. 735 00:32:51,038 --> 00:32:56,350 Laat my terug te gaan na my gids hier en maak, sê, vorm 0.html. 736 00:32:56,350 --> 00:32:59,320 >> So dink dit is die groentjie binnemuurse sport registrasie bladsy 737 00:32:59,320 --> 00:33:01,780 sonder enige CSS of enige sin van die ontwerp. 738 00:33:01,780 --> 00:33:05,404 En ek wil om voort te gaan en registreer hier met 'n wagwoord. 739 00:33:05,404 --> 00:33:08,320 En ek gaan akkoord met die voorwaardes en voorwaardes en klik Register. 740 00:33:08,320 --> 00:33:11,700 En nou het die webwerf sê: "Jy is geregistreer! (Wel, nie regtig nie.) " 741 00:33:11,700 --> 00:33:15,070 Dit lyk soos dit het gewerk, maar laat my gaan voort en dwing herlaai. 742 00:33:15,070 --> 00:33:18,720 >> En laat my sê, nee, jy doen nie moet my werklike e-pos adres. 743 00:33:18,720 --> 00:33:21,820 Of miskien sal ons net pos sê daar. 744 00:33:21,820 --> 00:33:25,080 Wagwoord sal wees, soos, 12345. 745 00:33:25,080 --> 00:33:28,810 En dan, net omdat ek 'n idioot, is dit nou 123456789. 746 00:33:28,810 --> 00:33:31,150 En ek is nie van plan om jou boks. 747 00:33:31,150 --> 00:33:31,850 >> Hmm. 748 00:33:31,850 --> 00:33:32,350 Alles reg. 749 00:33:32,350 --> 00:33:34,920 So is daar 'n hele paar geleenthede vir verbetering hier. 750 00:33:34,920 --> 00:33:39,070 En jy weet, of sal in pset sien sewe, dat julle code-- kan skryf 751 00:33:39,070 --> 00:33:41,890 en jy het om te skryf kode in PHP-- te verdedig 752 00:33:41,890 --> 00:33:45,780 teen hierdie soort van die gebruiker foute omdat die gebruiker duidelik 753 00:33:45,780 --> 00:33:46,790 het nie saam. 754 00:33:46,790 --> 00:33:49,680 En hy of sy het jou nie gegee al die waardes wat jy wou of selfs in die formaat 755 00:33:49,680 --> 00:33:50,630 dat jy hulle wou hê. 756 00:33:50,630 --> 00:33:53,250 So jy sien in pset sewe wat ons kon seker 'n paar 757 00:33:53,250 --> 00:33:55,680 indien toestande wat sê As die e-posadres 758 00:33:55,680 --> 00:33:59,450 is nie 'n username@something.edu, ons kon net 759 00:33:59,450 --> 00:34:02,575 sê jammer en vra om verskoning vir die gebruiker baie, soos jy kan wees in pset sewe. 760 00:34:02,575 --> 00:34:05,700 Of as hulle nie het bewys dat boks, blyk in PHP, kan jy ontdek dat, 761 00:34:05,700 --> 00:34:06,200 ook. 762 00:34:06,200 --> 00:34:09,389 En seker as die wagwoorde nie ooreenstem as in register.php 763 00:34:09,389 --> 00:34:11,521 vir pset sewe, kan jy ontdek dat. 764 00:34:11,521 --> 00:34:13,770 Maar dit is 'n pyn in die nek in wat nou vra hulle 765 00:34:13,770 --> 00:34:15,510 ons al die pad na die bediener. 766 00:34:15,510 --> 00:34:17,053 Die gebruiker word in kennis gestel van die fout. 767 00:34:17,053 --> 00:34:19,219 En ten minste nie, tensy jy gebruik sommige liefhebber tegnieke, 768 00:34:19,219 --> 00:34:20,929 nou het hulle te kliek die pyltjie terug. 769 00:34:20,929 --> 00:34:23,300 Sou dit nie lekker wees, soos 'n baie webwerwe vandag 770 00:34:23,300 --> 00:34:26,190 as jy meer onmiddellike het terugvoer, onmiddellik? 771 00:34:26,190 --> 00:34:31,389 >> Met ander woorde, laat my gaan na weergawe een wat gaan geen mooier. 772 00:34:31,389 --> 00:34:33,469 Maar dit het hierdie funksie. 773 00:34:33,469 --> 00:34:39,590 Malan, 12345, 123456789, nie gaan na die boks, Register. 774 00:34:39,590 --> 00:34:41,330 Wagwoorde stem nie ooreen nie. 775 00:34:41,330 --> 00:34:44,459 So selfs al is hierdie pop-up is ugly-- ons kan dit uiteindelik te vervang 776 00:34:44,459 --> 00:34:47,000 met iets soos Skoenlus, wat jy sien in pset sewe 777 00:34:47,000 --> 00:34:50,239 is 'n baie gewilde library-- ek gedoen het ontdek dat die wagwoorde stem nie ooreen nie. 778 00:34:50,239 --> 00:34:50,739 Alles reg. 779 00:34:50,739 --> 00:34:52,530 Wel, laat ek dit regmaak as die gebruiker. 780 00:34:52,530 --> 00:34:55,460 Laat my gaan voort en sê 12.345, 12.345. 781 00:34:55,460 --> 00:34:57,780 Steeds nie die beheer van die ooreenkoms. 782 00:34:57,780 --> 00:35:00,210 Jy moet saamstem met die terme en voorwaardes. 783 00:35:00,210 --> 00:35:01,760 So hoekom? 784 00:35:01,760 --> 00:35:04,100 >> As ons reeds het gepostuleer dat daar 'n manier, 785 00:35:04,100 --> 00:35:07,260 en ons het jou nodig pset sewe fout op te spoor 786 00:35:07,260 --> 00:35:09,780 voorwaardes soos hierdie bediener-kant, waarom sou ek 787 00:35:09,780 --> 00:35:13,940 pla dit ook doen in JavaScript? 788 00:35:13,940 --> 00:35:15,850 Wat is 'n argument in gunste van die toevoeging van wat 789 00:35:15,850 --> 00:35:18,760 jy oor om te sien as some-- is daar is bykomende kompleksiteit. 790 00:35:18,760 --> 00:35:23,610 791 00:35:23,610 --> 00:35:25,930 >> Miskien is daar geen onderstebo. 792 00:35:25,930 --> 00:35:26,924 Wat kan dit wees? 793 00:35:26,924 --> 00:35:27,840 GEHOOR: [onhoorbaar]. 794 00:35:27,840 --> 00:35:31,132 795 00:35:31,132 --> 00:35:32,340 David Malan: O, interessant. 796 00:35:32,340 --> 00:35:33,530 Potensiaal optree. 797 00:35:33,530 --> 00:35:37,540 So seker nie, as jy nie die hantering van foutiewe toevoer van die gebruiker wat 'n groot, 798 00:35:37,540 --> 00:35:40,170 miskien is dit al hoe beter as dit nie eens jou bediener te bereik. 799 00:35:40,170 --> 00:35:42,160 Ek sou terug te stoot en daar sê, jy moet waarskynlik 800 00:35:42,160 --> 00:35:43,284 los beide van hierdie probleme. 801 00:35:43,284 --> 00:35:44,140 Maar dit is regverdig. 802 00:35:44,140 --> 00:35:44,710 Wat anders? 803 00:35:44,710 --> 00:35:45,626 >> GEHOOR: [onhoorbaar]. 804 00:35:45,626 --> 00:35:47,970 805 00:35:47,970 --> 00:35:49,014 >> David Malan: Ja. 806 00:35:49,014 --> 00:35:51,680 Hierdie kode, soos ons vantevore gesê het, is geïnterpreteer op die kliënt-kant. 807 00:35:51,680 --> 00:35:53,846 Dit maak nie die bediener pla, wat beteken dat dit nie 808 00:35:53,846 --> 00:35:55,930 impak vrag of kapasiteit van die bediener se. 809 00:35:55,930 --> 00:35:59,840 En nou, vir klein ou my dit het geen betekenisvolle effek 810 00:35:59,840 --> 00:36:01,970 want ek het 'n gebruiker op die oomblik. 811 00:36:01,970 --> 00:36:04,010 >> Maar as jy 'n webwerf van ordentlike grootte, 812 00:36:04,010 --> 00:36:07,400 veral die grootste, soos Facebook, hoe meer jy kan mense af te hou 813 00:36:07,400 --> 00:36:09,927 van jou bediener beter omdat 'n bediener, natuurlik, 814 00:36:09,927 --> 00:36:12,510 het slegs 'n beperkte hoeveelheid RAM, 'n eindige aantal gigahertz, 815 00:36:12,510 --> 00:36:16,340 'n eindige aantal van die dinge dit kan doen per eenheid van tyd. 816 00:36:16,340 --> 00:36:19,170 So as daar is meer mense in die wêreld slaan jou bediener, 817 00:36:19,170 --> 00:36:21,750 per ongeluk aan te meld verkeerd, net so goed as jy 818 00:36:21,750 --> 00:36:23,254 kan daardie las af te hou jou bediener. 819 00:36:23,254 --> 00:36:25,420 Plus, veral op 'n mobiele device-- As jy al ooit 820 00:36:25,420 --> 00:36:29,190 meld in my.harvard of Yale se netid of die wil, 821 00:36:29,190 --> 00:36:32,330 daar is dit die latency met 'n baie webtuistes soos dié waardeur dit neem, 822 00:36:32,330 --> 00:36:34,110 soos 'n damn sekonde of twee soms. 823 00:36:34,110 --> 00:36:37,979 En dan, my God, as jy verkeerd intik, dan moet jy om terug te slaan en oordoen dit. 824 00:36:37,979 --> 00:36:40,520 So is daar latency, veral op stadiger konneksies netwerk. 825 00:36:40,520 --> 00:36:43,030 Maar JavaScript, want dit loop op die kliënt 826 00:36:43,030 --> 00:36:46,720 en nie nodig het om terug te gaan en weer oor 'n potensieel stadig internet 827 00:36:46,720 --> 00:36:49,780 verband, kan jy byna onmiddellik terugvoer. 828 00:36:49,780 --> 00:36:50,760 >> So laat ons kyk na hierdie. 829 00:36:50,760 --> 00:36:54,280 Laat my oopmaak vorm-0 en kyk na die HTML hier. 830 00:36:54,280 --> 00:36:56,040 En laat ons sien net wat aangaan. 831 00:36:56,040 --> 00:36:59,460 Dit is 'n vorm waarvan aksie is register.php. 832 00:36:59,460 --> 00:37:01,530 Ek is net die gebruik van te kry sodat dat ek die URL kon sien. 833 00:37:01,530 --> 00:37:05,030 Maar vir wagwoorde, wil ons seker wil om dit te verander om te post in die werklikheid. 834 00:37:05,030 --> 00:37:06,910 Hier is 'n invoer veld van die tipe teks. 835 00:37:06,910 --> 00:37:09,050 Hier is 'n ander insette gebied van die tipe wagwoord. 836 00:37:09,050 --> 00:37:13,150 Hier is, as jy nog nooit gesien het nie, 'n inset van die tipe boks. 837 00:37:13,150 --> 00:37:15,250 >> Maar daar is geen JavaScript hier hoegenaamd nie. 838 00:37:15,250 --> 00:37:18,170 Dit is net HTML wat gaan na register.php. 839 00:37:18,170 --> 00:37:21,020 Maar in die weergawe een, waar ek begin om diegene pop-ups te kry, 840 00:37:21,020 --> 00:37:23,010 Kom ons kyk wat eintlik hier gebeur. 841 00:37:23,010 --> 00:37:26,757 In weergawe een, wat Ek gaan see-- ek 842 00:37:26,757 --> 00:37:29,340 gedink ek kon genoeg stalletjie met genoeg woorde nie, maar ek het uitgehardloop. 843 00:37:29,340 --> 00:37:35,180 844 00:37:35,180 --> 00:37:38,590 >> In weergawe one-- daar gaan ons. 845 00:37:38,590 --> 00:37:43,180 In weergawe een, kennis van die following-- en is nie die beste implementering, 846 00:37:43,180 --> 00:37:44,420 maar dit is my eerste. 847 00:37:44,420 --> 00:37:47,680 Let daarop dat die onderstaande vorm, ek het 'n script tag. 848 00:37:47,680 --> 00:37:49,430 En 'n script tag beteken, hey, die leser, hier 849 00:37:49,430 --> 00:37:52,340 kom 'n paar kode in, Tipies, JavaScript. 850 00:37:52,340 --> 00:37:54,420 En nou, let op wat ek doen. 851 00:37:54,420 --> 00:37:59,070 Op line-- kan ek skaars lees it-- lyn 32, dit sê, 852 00:37:59,070 --> 00:38:01,420 var form-- so gee my 'n veranderlike genaamd vorm. 853 00:38:01,420 --> 00:38:05,049 En dan kry document.getElementId van die "registrasie". 854 00:38:05,049 --> 00:38:05,590 Wat is hierdie? 855 00:38:05,590 --> 00:38:07,290 Wel, laat ek rewind hier. 856 00:38:07,290 --> 00:38:11,510 En kennisgewing, ah, ek het die vorm element 'n arbitrêre maar beskrywende idee 857 00:38:11,510 --> 00:38:13,050 van registrasie. 858 00:38:13,050 --> 00:38:16,820 So dit gee my 'n veranderlike wat laat my toe om dit node gryp, 859 00:38:16,820 --> 00:38:19,580 dat reghoek in die boom genoem vorm. 860 00:38:19,580 --> 00:38:24,460 form.onsubmit middel, hey leser, registreer 'n gebeurtenis luisteraar 861 00:38:24,460 --> 00:38:25,470 op hierdie vorm. 862 00:38:25,470 --> 00:38:28,890 Met ander woorde, wanneer hierdie vorm ingedien is, voer die volgende kode. 863 00:38:28,890 --> 00:38:30,810 Dit het nie 'n naam, want nodig Hoekom het jy nodig om die naam ken? 864 00:38:30,810 --> 00:38:32,880 Jy hoef net te weet wat om te voer, ergo 865 00:38:32,880 --> 00:38:35,610 dit is 'n anonieme of lambda funksie. 866 00:38:35,610 --> 00:38:37,632 En daardie funksie is al hierdie lyne hier. 867 00:38:37,632 --> 00:38:40,840 En nou, om eerlik te wees, selfs al is jy dalk nie ooit geskryf het JavaScript 868 00:38:40,840 --> 00:38:44,200 voor, dit is net C en PHP logika. 869 00:38:44,200 --> 00:38:51,720 So as form.email.value == "" - so as die e-pos veld is leeg, 870 00:38:51,720 --> 00:38:54,980 gil op die gebruiker met 'n "Jy moet bied jou e-posadres. " 871 00:38:54,980 --> 00:38:58,980 Anders as form.password.value is leeg gil op die gebruiker, 872 00:38:58,980 --> 00:39:00,400 "Jy moet jou wagwoord te voorsien." 873 00:39:00,400 --> 00:39:04,240 >> Meer interessant logies, As form.password.value nie 874 00:39:04,240 --> 00:39:08,630 gelyke form.confirmation.value-- waar het bevestiging vandaan? 875 00:39:08,630 --> 00:39:09,470 Laat my rewind. 876 00:39:09,470 --> 00:39:12,870 Wel, ek het hierdie insette gebied hier wagwoord. 877 00:39:12,870 --> 00:39:15,180 En Ek het hierdie een hier bevestiging. 878 00:39:15,180 --> 00:39:17,850 Ek kon dit genoem wagwoord twee of enigiets anders. 879 00:39:17,850 --> 00:39:20,560 Ek is net logies nagaan dat hierdie twee is dieselfde. 880 00:39:20,560 --> 00:39:25,760 Else-- dit blyk dit is mnr Boole again-- 'n Boolese waarde, die boks. 881 00:39:25,760 --> 00:39:29,810 So as ek sê, uitroepteken point-- Indien nie form.agreement.checked, 882 00:39:29,810 --> 00:39:31,820 gil op die gebruiker sowel. 883 00:39:31,820 --> 00:39:34,470 >> So hierdie sintaksis jy sal sien is baie algemeen in JavaScript, 884 00:39:34,470 --> 00:39:35,970 waar jy hierdie stippellyn notasie. 885 00:39:35,970 --> 00:39:37,460 Jy begin met 'n voorwerp hier. 886 00:39:37,460 --> 00:39:41,430 Jy duik in dieper om 'n te 'n eiendom soos wagwoord. 887 00:39:41,430 --> 00:39:43,280 En dan kry jy op die werklike waarde. 888 00:39:43,280 --> 00:39:45,830 En weer, hier is die insette. 889 00:39:45,830 --> 00:39:47,310 Hier is die naam wagwoord. 890 00:39:47,310 --> 00:39:50,860 En die waarde daarvan is ongeag die menslike eintlik getik. 891 00:39:50,860 --> 00:39:53,610 >> So in al hierdie gevalle, is ek terug onwaar. 892 00:39:53,610 --> 00:39:55,800 Maar indien nie, ek terugkeer waar. 893 00:39:55,800 --> 00:39:58,030 En so nou sien ons 'n dwingende gebruik van toe 894 00:39:58,030 --> 00:40:00,620 sou jy valse terugkeer stop wat die gebruiker se doen 895 00:40:00,620 --> 00:40:03,200 en maak hom of haar kies weer of weer te tik. 896 00:40:03,200 --> 00:40:05,870 Anders, ons terugkeer waar. 897 00:40:05,870 --> 00:40:08,585 >> En laat my stel een ander variant van hierdie regverdige 898 00:40:08,585 --> 00:40:13,140 sommige begrip daarvan saad. 899 00:40:13,140 --> 00:40:16,850 Wel, in die weergawe 2 van hierdie, vorm 2-- Ek sal dit doen met 'n golf van 'n hand. 900 00:40:16,850 --> 00:40:19,920 Dit is, vir diegene nuuskierig, die jQuery weergawe, 901 00:40:19,920 --> 00:40:23,330 dié van julle wat dalk wil ploeteraars in daardie spesifieke biblioteek. 902 00:40:23,330 --> 00:40:25,145 Maar laat ons start-- en enige vrae? 903 00:40:25,145 --> 00:40:29,230 Laat my breek vir oomblik, want dit was vinnig en baie. 904 00:40:29,230 --> 00:40:32,610 >> Maar die lekker ding hier is dat alle van die kode is pretty much dieselfde. 905 00:40:32,610 --> 00:40:33,985 Die nuwe dinge is wat is die dom? 906 00:40:33,985 --> 00:40:35,115 Wat is hierdie reghoeke? 907 00:40:35,115 --> 00:40:35,990 Wat is hierdie nodes? 908 00:40:35,990 --> 00:40:37,540 Wat is 'n anonieme funksie? 909 00:40:37,540 --> 00:40:38,830 Wat is 'n event handler? 910 00:40:38,830 --> 00:40:43,480 Maar gelukkig is die meeste van dit is net volle sirkel van, sê, week nul. 911 00:40:43,480 --> 00:40:43,980 Alles reg. 912 00:40:43,980 --> 00:40:46,070 So iets effens meer interessant? 913 00:40:46,070 --> 00:40:49,340 Wel, die eerste van alles, laat my gaan voor en maak Google Maps. 914 00:40:49,340 --> 00:40:53,360 En jy sal sien dat vir 'n oomblik, op die split sekonde, 915 00:40:53,360 --> 00:40:55,930 sien wat gebeur wanneer Ek klik vinnig genoeg nie. 916 00:40:55,930 --> 00:40:59,720 En hierdie verband aan die Harvard is so vinnig dat jy nie regtig agterkom nie. 917 00:40:59,720 --> 00:41:04,469 Maar wat doen jy soort van soort sien as ek kliek en sleep baie vinnig? 918 00:41:04,469 --> 00:41:07,010 Diegene van julle aanlyn kyk, as jy dit stadig om 0.5x spoed, 919 00:41:07,010 --> 00:41:09,640 jy kan dit beter te sien. 920 00:41:09,640 --> 00:41:13,550 >> Wat gebeur het net voordat ek gekliek en gesleep? 921 00:41:13,550 --> 00:41:15,900 Kom ek probeer here-- laat my doen iets anders, soos 90210. 922 00:41:15,900 --> 00:41:17,550 Kom ons gaan ver weg. 923 00:41:17,550 --> 00:41:19,000 Dit was regtig vinnig ook. 924 00:41:19,000 --> 00:41:22,460 Hoe oor Disney World? 925 00:41:22,460 --> 00:41:23,190 Daar gaan ons. 926 00:41:23,190 --> 00:41:23,690 OK. 927 00:41:23,690 --> 00:41:26,030 Wat het jy gesien vir 'n split sekonde? 928 00:41:26,030 --> 00:41:27,200 Net soos, vierkante, reg? 929 00:41:27,200 --> 00:41:28,930 Plekhouers vir teëls? 930 00:41:28,930 --> 00:41:30,270 >> Wel, wat gaan hier aan? 931 00:41:30,270 --> 00:41:35,410 Google Maps is 'n mooi voorbeeld van hierdie tegnologie wat genoem AJAX. 932 00:41:35,410 --> 00:41:38,510 En dit is waar ons sal begin om gebruik die JavaScript in 'n besonder 933 00:41:38,510 --> 00:41:39,277 aanloklike manier. 934 00:41:39,277 --> 00:41:41,610 Terug in die dag, was daar hierdie webwerf genoem MapQuest. 935 00:41:41,610 --> 00:41:44,120 En ek moet geneem 'n kiekie van hierdie uit die 1990's, 936 00:41:44,120 --> 00:41:45,820 waar as jy wou kyk hier op die kaart, 937 00:41:45,820 --> 00:41:48,590 sou jy letterlik op 'n pyl by die top dat jy het 938 00:41:48,590 --> 00:41:49,870 'n ander vierkant van die kaart. 939 00:41:49,870 --> 00:41:51,790 As jy wil skuif na links, jy gekliek 'n pyl wat jy het 940 00:41:51,790 --> 00:41:53,210 'n ander vierkant van die kaart. 941 00:41:53,210 --> 00:41:54,840 En 'n paar webtuistes nog steeds doen dit vandag. 942 00:41:54,840 --> 00:41:57,820 Maar selfs MapQuest gekry beter, soos Google Maps. 943 00:41:57,820 --> 00:42:01,880 >> In plaas daarvan, wat is beter hierdie dae is webwerwe wat AJAX gebruik. 944 00:42:01,880 --> 00:42:04,510 AJAX-- andersins bekend as Asynchrone JavaScript en XML, 945 00:42:04,510 --> 00:42:08,370 wat net 'n fancy manier om te sê 'n tegnologie of tegniek wat 946 00:42:08,370 --> 00:42:14,200 kan 'n leser met behulp van JavaScript om bykomende HTTP versoeke 947 00:42:14,200 --> 00:42:16,390 na die bladsy gelaai is. 948 00:42:16,390 --> 00:42:17,479 So, wat beteken dit? 949 00:42:17,479 --> 00:42:19,270 Wel, sou dit soort irriterende in Gmail 950 00:42:19,270 --> 00:42:21,103 As elke keer as jy wil om jou pos te gaan, 951 00:42:21,103 --> 00:42:24,940 jy letterlik getref Control-R of Opdrag-R of kliek op die herlaai knoppie 952 00:42:24,940 --> 00:42:26,580 en die hele darn bladsy sal herlaai. 953 00:42:26,580 --> 00:42:26,800 Reg? 954 00:42:26,800 --> 00:42:28,460 Dit sou wit flits waarskynlik vir die tweede. 955 00:42:28,460 --> 00:42:30,043 Jy sal die dom progress bar te sien. 956 00:42:30,043 --> 00:42:33,170 En net om te sien of jy 'n nuwe het pos, die hele webblad en die URL 957 00:42:33,170 --> 00:42:34,580 jy by sou hê om op te laai. 958 00:42:34,580 --> 00:42:35,960 >> Maar dit is nie wat gebeur in Gmail. 959 00:42:35,960 --> 00:42:36,459 Reg? 960 00:42:36,459 --> 00:42:40,300 Wanneer jy 'n nuwe e-in te kry Gmail, wat gebeur op die skerm? 961 00:42:40,300 --> 00:42:41,480 Dit wys net op, reg? 962 00:42:41,480 --> 00:42:44,280 Dit is net mettertyd verskyn as 'n nuwe ry in die tabel. 963 00:42:44,280 --> 00:42:47,030 Wat eintlik behels 'n ordentlike bedrag van kompleksiteit. 964 00:42:47,030 --> 00:42:51,892 In werklikheid, as jy dink oor hierdie boom, wat selfs al is 'n eenvoudige een hier, 965 00:42:51,892 --> 00:42:54,100 Gmail-- en ek wil hê om te kyk by die kode om sure-- wees 966 00:42:54,100 --> 00:42:58,710 het waarskynlik 'n HTML-tabel of miskien 'n On-geordende lys dat dit lewer 967 00:42:58,710 --> 00:43:01,060 elk van jou posbus e-pos as. 968 00:43:01,060 --> 00:43:04,050 >> En so as jy dit daar dink is 'n boom in die geheue wanneer jy 969 00:43:04,050 --> 00:43:09,050 die gebruik van Gmail wat lyk soort van soort soos hierdie, wanneer Google besef, ooh, 970 00:43:09,050 --> 00:43:12,770 jy het 'n nuwe e, is dit nie wil die hele boom te herbou. 971 00:43:12,770 --> 00:43:16,430 Inteendeel, dit wil die node vind in Die boom wat jou posbus verteenwoordig 972 00:43:16,430 --> 00:43:18,580 en net voeg 'n nuwe knoop. 973 00:43:18,580 --> 00:43:24,640 >> So baie soortgelyk aan pset vyf, waar jy kan moes nodes te voeg in 'n gemors tafel, 974 00:43:24,640 --> 00:43:28,410 insgelyks doen Google, via JavaScript kode wat dit geskryf het, 975 00:43:28,410 --> 00:43:31,890 traverse hierdie boom, uit te vind waar is dat posbus deel van die venster, 976 00:43:31,890 --> 00:43:33,440 en voeg 'n nuwe ry dan. 977 00:43:33,440 --> 00:43:37,460 En 'n nuwe ry beteken net een of meer nuwe nodes in 'n boom. 978 00:43:37,460 --> 00:43:41,340 >> En so AJAX is hierdie tegniek wat voorsiening maak vir presies dit. 979 00:43:41,340 --> 00:43:44,440 Sodra jy 'n URL besoek het, egter gek lank dit is, 980 00:43:44,440 --> 00:43:46,472 en sodra die bladsy het gelaai is, kan jy nog steeds 981 00:43:46,472 --> 00:43:48,430 gryp meer inligting van die internet-- of dit nou 982 00:43:48,430 --> 00:43:52,460 'n e-pos of 'n teël van 'n map-- gryp dit agter die skerms 983 00:43:52,460 --> 00:43:55,290 en plaas dit dan in die bladsy sodat die menslike nie regtig 984 00:43:55,290 --> 00:43:56,910 moet wag vir dit. 985 00:43:56,910 --> 00:43:58,980 >> Facebook Messenger werk op dieselfde manier. 986 00:43:58,980 --> 00:44:01,562 Enige aantal ander websites-- oh, eintlik, selfs dit. 987 00:44:01,562 --> 00:44:04,270 Ek bedoel, dit is, eerlik, soort 'n irriterende funksie van hierdie dae. 988 00:44:04,270 --> 00:44:07,500 As ek begin soek vir hierdie cats-- is 'n soort van 'n verskriklike gebruikers ervaring. 989 00:44:07,500 --> 00:44:08,990 Dit begin net soek vir my. 990 00:44:08,990 --> 00:44:10,050 Wel, wat doen dit? 991 00:44:10,050 --> 00:44:12,920 Die URL het nie regtig verander sedert ek begin tik. 992 00:44:12,920 --> 00:44:17,330 Maar wat gaan oor die wire-- OK, hmm interessant. 993 00:44:17,330 --> 00:44:20,470 Wat gaan oor die draad hier net nog vreemder. 994 00:44:20,470 --> 00:44:21,090 >> OK. 995 00:44:21,090 --> 00:44:24,670 So laat my gaan voort en inspekteer element en gaan na die blad Network 996 00:44:24,670 --> 00:44:27,040 en probeer om hierdie te maak tegniese en minder oor katte. 997 00:44:27,040 --> 00:44:32,595 As ek tik, letterlik, katte and-- wat gebeur 998 00:44:32,595 --> 00:44:37,710 per-- Ek gaan nie om te kliek nie. 999 00:44:37,710 --> 00:44:38,210 Alles reg. 1000 00:44:38,210 --> 00:44:44,280 So af hier, wat gebeur elke keer as ek tik 'n karakter, blykbaar? 1001 00:44:44,280 --> 00:44:45,000 Soos, lae vlak? 1002 00:44:45,000 --> 00:44:47,860 Wat gebeur met elkeen van daardie karakters ek tik op my sleutelbord? 1003 00:44:47,860 --> 00:44:48,359 Ja? 1004 00:44:48,359 --> 00:44:50,950 GEHOOR: [onhoorbaar]. 1005 00:44:50,950 --> 00:44:52,340 >> David Malan: Presies. 1006 00:44:52,340 --> 00:44:55,600 Elkeen van die karakters is gaan Google, een op 'n tyd. 1007 00:44:55,600 --> 00:44:58,490 Hulle is besig om 'n string op hul bediener wat verteenwoordig 1008 00:44:58,490 --> 00:44:59,936 alles wat ek tot dusver in getik. 1009 00:44:59,936 --> 00:45:01,810 En elke keer as ek tik ander karakter, het hulle 1010 00:45:01,810 --> 00:45:04,530 gebruik om hul geheime kruie van 'n soek algoritme en uit te vind, 1011 00:45:04,530 --> 00:45:07,370 bedoel hy hierdie kat bladsy of kat bladsy of die wil? 1012 00:45:07,370 --> 00:45:10,620 So in 'n sekere sin, bied dit my met 'n beter ervaring in dat ek dit nie doen nie, selfs 1013 00:45:10,620 --> 00:45:11,860 moet my denke te voltooi. 1014 00:45:11,860 --> 00:45:14,440 En inderdaad, dit is 'n nuttige ding, outovoltooiing in die algemeen. 1015 00:45:14,440 --> 00:45:17,690 As hul algoritmes is goed genoeg en as my soektogte is voor die hand liggend genoeg 1016 00:45:17,690 --> 00:45:19,300 Ek het nie die hele woord te tik. 1017 00:45:19,300 --> 00:45:22,110 Hulle gaan om my te vertel wat dit is ek eintlik soek. 1018 00:45:22,110 --> 00:45:25,940 So, wat Google oproepe direkte soek is net die gebruik van AJAX, 1019 00:45:25,940 --> 00:45:30,820 die gebruik van kode wat hulle toelaat om te versoek addisionele inhoud via 'n webblaaier 1020 00:45:30,820 --> 00:45:34,026 agter die skerms die gebruik van hierdie nuwe taal, JavaScript. 1021 00:45:34,026 --> 00:45:35,400 So ons het 'n paar minute oor. 1022 00:45:35,400 --> 00:45:37,710 En laat my bel my buddy Colton het op die verhoog, 1023 00:45:37,710 --> 00:45:40,090 aangesien dit gelyk veral pret laaste keer 1024 00:45:40,090 --> 00:45:42,290 om 'n tegnologie in te voer dat sommige van julle 1025 00:45:42,290 --> 00:45:44,769 'n belangstelling uitgespreek het in vir die finale projekte. 1026 00:45:44,769 --> 00:45:47,310 Ons het gedink dit sal pret wees om te bring sou 'n vrywilliger, al is, vandag 1027 00:45:47,310 --> 00:45:50,074 om jou te wys 'n toevoeging tot dit dat you-- toelaat ja, 1028 00:45:50,074 --> 00:45:50,990 Ek het gesien hoe die eerste hierdie hand. 1029 00:45:50,990 --> 00:45:52,900 Kom up. 1030 00:45:52,900 --> 00:45:53,560 Baie goed gedoen. 1031 00:45:53,560 --> 00:45:55,035 Goeie werk. 1032 00:45:55,035 --> 00:45:57,410 Ek gaan hierdie projek op die skerm in net 'n oomblik. 1033 00:45:57,410 --> 00:45:58,150 Wat is jou naam vir almal? 1034 00:45:58,150 --> 00:45:59,180 >> EFA: Ek is Efa. 1035 00:45:59,180 --> 00:45:59,410 >> David Malan: Etha? 1036 00:45:59,410 --> 00:45:59,785 >> EFA: Efa. 1037 00:45:59,785 --> 00:46:00,160 >> David Malan: Efa? 1038 00:46:00,160 --> 00:46:00,730 >> EFA: Ja. 1039 00:46:00,730 --> 00:46:01,250 >> David Malan: Nice om jou te sien. 1040 00:46:01,250 --> 00:46:01,600 Alles reg. 1041 00:46:01,600 --> 00:46:02,590 Laat my dit gereed is. 1042 00:46:02,590 --> 00:46:04,423 Kom oor na die middel met Colton hier. 1043 00:46:04,423 --> 00:46:07,050 Wat Colton het in sy hande vandag is 'n remote control. 1044 00:46:07,050 --> 00:46:10,440 So eerder as om net daar staan ​​in 'n drie-dimensionele wêreld rondkyk 1045 00:46:10,440 --> 00:46:14,080 as Colton het, nou kan Efa eintlik rond te loop deur te gaan op, 1046 00:46:14,080 --> 00:46:16,689 af, links, en regs soos 'n Nintendo of Xbox kontroleerder. 1047 00:46:16,689 --> 00:46:18,230 EFA: Ek gaan om te val af die verhoog. 1048 00:46:18,230 --> 00:46:20,500 David Malan: Ek wil staan ​​rofweg hier. 1049 00:46:20,500 --> 00:46:21,991 Maar dit is 'n risiko. 1050 00:46:21,991 --> 00:46:22,490 OK. 1051 00:46:22,490 --> 00:46:25,690 So gaan voort en sit die mense op. 1052 00:46:25,690 --> 00:46:29,315 Laat my gaan voort en oorskakel na die skerm hier. 1053 00:46:29,315 --> 00:46:30,670 Laat my die ligte verdof. 1054 00:46:30,670 --> 00:46:32,780 En Colton, laat my kom staan ​​langs jou. 1055 00:46:32,780 --> 00:46:35,520 >> Wil jy om te verduidelik met die mic wat ons doen? 1056 00:46:35,520 --> 00:46:36,380 Hier gaan jy. 1057 00:46:36,380 --> 00:46:37,280 >> COLTON: Natuurlik. 1058 00:46:37,280 --> 00:46:39,980 So nou is ons laai die oculus, 1059 00:46:39,980 --> 00:46:43,070 Ek dink nie operating-- bedryf stelsel, maar die belangrikste program, waar 1060 00:46:43,070 --> 00:46:46,630 kan jy toegang tot al die speletjies en apps wat in jou biblioteek. 1061 00:46:46,630 --> 00:46:50,060 So nou is, moet dit sê tap die touchpad te begin. 1062 00:46:50,060 --> 00:46:53,430 Touchpad gaan wees op die regterkant van die headset. 1063 00:46:53,430 --> 00:46:54,569 So gaan voort en tap-- 1064 00:46:54,569 --> 00:46:55,110 EFA: Ag, man. 1065 00:46:55,110 --> 00:46:56,443 David Malan: Ja, daar gaan jy. 1066 00:46:56,443 --> 00:47:00,340 1067 00:47:00,340 --> 00:47:02,460 Die kwaliteit Efa is om te sien is veel hoër gehalte. 1068 00:47:02,460 --> 00:47:03,831 Dit is net die Wi-Fi hier. 1069 00:47:03,831 --> 00:47:05,580 COLTON: So, wat is jy gaan wil doen 1070 00:47:05,580 --> 00:47:08,350 is kyk na die top regterkant van die skerm. 1071 00:47:08,350 --> 00:47:10,420 Yep, wat spel op die heel bo regs. 1072 00:47:10,420 --> 00:47:14,780 En dan wanneer jy kies dit, tik die touchpad weer. 1073 00:47:14,780 --> 00:47:17,010 Ek dink dat sy Dreadhalls. 1074 00:47:17,010 --> 00:47:20,820 En dan is hier hier a--, laat my jou bril te hou vir jou. 1075 00:47:20,820 --> 00:47:24,420 1076 00:47:24,420 --> 00:47:25,790 >> So ek het hom net 'n kontroleerder. 1077 00:47:25,790 --> 00:47:28,886 So nou kan hy die wedstryd te beheer. 1078 00:47:28,886 --> 00:47:30,510 Hy kan rond en dinge beweeg soos dit. 1079 00:47:30,510 --> 00:47:31,968 So gaan voort en kyk op na die top. 1080 00:47:31,968 --> 00:47:33,640 Jy moet New Game sien. 1081 00:47:33,640 --> 00:47:36,310 So gaan voort en jy kan dit doen. 1082 00:47:36,310 --> 00:47:39,320 Nou, moet jy in staat wees om te beheer jouself met die kontroles, 1083 00:47:39,320 --> 00:47:43,860 sowel, so gou as die spel vragte hier op. 1084 00:47:43,860 --> 00:47:46,356 Dit mag wees 'n bietjie scary. 1085 00:47:46,356 --> 00:47:47,300 >> EFA: My nou vertel. 1086 00:47:47,300 --> 00:47:50,132 OK. 1087 00:47:50,132 --> 00:47:51,080 >> COLTON: Alle reg. 1088 00:47:51,080 --> 00:47:52,650 So bevestig dat jy kan rondbeweeg. 1089 00:47:52,650 --> 00:47:52,750 OK. 1090 00:47:52,750 --> 00:47:53,583 Jy kan rond te beweeg. 1091 00:47:53,583 --> 00:47:54,300 Volmaak. 1092 00:47:54,300 --> 00:47:56,470 So as jy kyk af, jy het 'n kaart. 1093 00:47:56,470 --> 00:47:58,170 Kaart wys jou waar jy is. 1094 00:47:58,170 --> 00:47:59,720 Jy kan kyk in die kamer rond. 1095 00:47:59,720 --> 00:48:01,440 Jy kan heeltemal omdraai. 1096 00:48:01,440 --> 00:48:02,128 Ja, presies. 1097 00:48:02,128 --> 00:48:02,627 Draai om. 1098 00:48:02,627 --> 00:48:05,370 1099 00:48:05,370 --> 00:48:07,125 >> So kyk na jou linkerkant. 1100 00:48:07,125 --> 00:48:09,875 Ek dink daar is iets wat jy kan af te haal op 'n vat in die kamer. 1101 00:48:09,875 --> 00:48:11,709 >> EFA: Hoe kry ek die karteer uit die pad? 1102 00:48:11,709 --> 00:48:12,375 COLTON: Kyk op. 1103 00:48:12,375 --> 00:48:12,980 Kyk net op. 1104 00:48:12,980 --> 00:48:13,480 Alles reg. 1105 00:48:13,480 --> 00:48:13,765 Daar gaan jy. 1106 00:48:13,765 --> 00:48:15,181 Nou gaan voort en net omdraai. 1107 00:48:15,181 --> 00:48:21,460 1108 00:48:21,460 --> 00:48:24,620 So kyk verder links. 1109 00:48:24,620 --> 00:48:25,530 Bly beweeg links. 1110 00:48:25,530 --> 00:48:26,960 Hou op soek gelaat. 1111 00:48:26,960 --> 00:48:27,541 Hou aan. 1112 00:48:27,541 --> 00:48:28,040 Ja. 1113 00:48:28,040 --> 00:48:28,720 >> EFA: O, dat die pad. 1114 00:48:28,720 --> 00:48:29,261 >> COLTON: Ja. 1115 00:48:29,261 --> 00:48:30,999 Wandel teenoor dit met die beheerder. 1116 00:48:30,999 --> 00:48:31,540 Daar gaan jy. 1117 00:48:31,540 --> 00:48:32,790 Nou is dit moet sê dit kom haal. 1118 00:48:32,790 --> 00:48:33,360 Daar gaan jy. 1119 00:48:33,360 --> 00:48:34,290 Tel dit op. 1120 00:48:34,290 --> 00:48:35,550 Alles reg. 1121 00:48:35,550 --> 00:48:38,286 Nou, laat ons kry uit hierdie kamer. 1122 00:48:38,286 --> 00:48:42,209 Gaan voort en loop na die deur. 1123 00:48:42,209 --> 00:48:45,000 So jy gaan hold-- dit sê hou die knoppie om dit te dwing oop. 1124 00:48:45,000 --> 00:48:46,333 So gaan voort en hou die knoppie. 1125 00:48:46,333 --> 00:48:48,250 Yep, dwing dit oop te maak. 1126 00:48:48,250 --> 00:48:48,750 Alles reg. 1127 00:48:48,750 --> 00:48:49,410 Goeie werk. 1128 00:48:49,410 --> 00:48:50,826 Nou is ons loop uit die kamer. 1129 00:48:50,826 --> 00:48:56,970 1130 00:48:56,970 --> 00:49:01,366 So ek gaan die res oorlaat om jou en kyk wat jy uit te vind. 1131 00:49:01,366 --> 00:49:02,865 EFA: Ek gaan nie in die donker kamer. 1132 00:49:02,865 --> 00:49:07,315 1133 00:49:07,315 --> 00:49:07,815 O, wag. 1134 00:49:07,815 --> 00:49:09,314 Nou het ek om te gaan die donker saal? 1135 00:49:09,314 --> 00:49:10,785 OK, ek gaan terug [onhoorbaar]. 1136 00:49:10,785 --> 00:49:15,520 1137 00:49:15,520 --> 00:49:16,270 COLTON: Alle reg. 1138 00:49:16,270 --> 00:49:17,560 Sommige meer items te haal. 1139 00:49:17,560 --> 00:49:19,370 Lyk soos 'n paar munte. 1140 00:49:19,370 --> 00:49:22,242 Dit is 'n slot pick. 1141 00:49:22,242 --> 00:49:24,200 So as jy 'n geslote deur, kan jy gebruik dit. 1142 00:49:24,200 --> 00:49:27,755 1143 00:49:27,755 --> 00:49:28,380 Is jy bang? 1144 00:49:28,380 --> 00:49:29,371 >> EFA: Nog nie. 1145 00:49:29,371 --> 00:49:29,871 COLTON: OK. 1146 00:49:29,871 --> 00:49:34,850 1147 00:49:34,850 --> 00:49:35,497 >> Pretend-- ja. 1148 00:49:35,497 --> 00:49:37,330 Net voorgee jy is eintlik daar staan. 1149 00:49:37,330 --> 00:49:39,580 En as jy around-- draai jy het om gewoond te raak aan dit. 1150 00:49:39,580 --> 00:49:40,752 Maar dit maak sin. 1151 00:49:40,752 --> 00:49:43,960 David Malan: En terwyl Efa steeds speel, aangesien ons hierdie hele dag kon doen, 1152 00:49:43,960 --> 00:49:45,381 ons almal kan tip-toe hier. 1153 00:49:45,381 --> 00:49:48,130 Maar ons het twee ander pare, As jy wil om te kom en te speel. 1154 00:49:48,130 --> 00:49:49,980 Andersins, sal ons sien jy volgende Woensdag. 1155 00:49:49,980 --> 00:49:51,354 Dankie vandag aan ons vrywilligers. 1156 00:49:51,354 --> 00:49:52,101 [Applous] 1157 00:49:52,101 --> 00:49:54,506 1158 00:49:54,506 --> 00:49:57,392 >> [MUSIEK - "Seinfeld TEMA"] 1159 00:49:57,392 --> 00:49:58,222 1160 00:49:58,222 --> 00:50:00,180 Spreker 1: Wel, ek is om 'n nuwe PL berg op. 1161 00:50:00,180 --> 00:50:01,800 Ek het net verander die OLPF-- 1162 00:50:01,800 --> 00:50:03,980 >> Spreker 2: So, wat presies doen jy? 1163 00:50:03,980 --> 00:50:07,063 >> Spreker 1: Wel, elkeen van these-- hier, ek sal jou wys hierdie een hier. 1164 00:50:07,063 --> 00:50:08,690 Jy kan dit hier te sien. 1165 00:50:08,690 --> 00:50:09,510 >> SPREKER 3: Ek dink ek is goed met hierdie. 1166 00:50:09,510 --> 00:50:09,933 Jy wil 'n paar meer? 1167 00:50:09,933 --> 00:50:11,325 >> SPREKER 4: Nee, ek is goed. [Onhoorbaar]. 1168 00:50:11,325 --> 00:50:12,200 >> SPREKER 3: Nee, [onhoorbaar]. 1169 00:50:12,200 --> 00:50:12,700 Kry vir jou. 1170 00:50:12,700 --> 00:50:21,165 1171 00:50:21,165 --> 00:50:22,290 Spreker 1: Verskillende kleur. 1172 00:50:22,290 --> 00:50:22,890 Spreker 2: OK. 1173 00:50:22,890 --> 00:50:26,690 Spreker 1: So uiteindelik wat dit doen, is dit die kleur pas of--