[Daqq tal-mużika] DAVID Malan: Dan huwa CS50. Dan huwa l-bidu ta 'disa ġimgħa. U dan huwa dak li jkollu Kien birthday 200 Mr Boole. Allura dan huwa l-fellows li min aħna ve allużjoni pjuttost xi drabi dwar l-użu Varjabbli Boolean vera u falza, 1 u 0 u bħal dawn. U dan kien Google ġieħ lilu llum. Kien ikollu daru 200. Mela jekk inti tixtieq li jingħaqdu magħna għall-ikel CS50, tagħti ħarsa lejn l-link fuq il-websajt il-kors tal. U dawk uċuħ u l-ħbieb huma dawn jistennewkom hawn fil Cambridge. Faces bħal dawn jistennewkom fi New Haven. U, fil-fatt, Ken fil New Haven ġentilment magħmula dak li jissejjaħ GIF animati ta Eli hawn fuq riċenti lunch-- a GIF għadu format ieħor fajl grafika, li magħhom int familiar-- li jistenna ftit xi ħaġa bħal din. Hekk biss sekwenza of-- OK. Ebda wieħed hawn fil Cambridge huwa laughing. Iżda fi New Haven, dan huwa verament umoristiċi, id-dritt? Kull dritt. Allura jingħaqdu magħna hemmhekk. Hawnhekk fil-Harvard, speċifikament, dan l-erbgħa, jekk int sophomore jew freshman even-- jew saħansitra ħsieb junior-- tat-tfassil bidla fis-kompjuter xjenza, jafu li hemm ser jkun a CS jagħtu pariri imparzjali dan L-Erbgħa, ftit wara klassi fi 4:00 PM tal-kompjuter Bini Science Maxwell Dworkin. Aħna ser tpoġġi dan fuq il-kors tal websajt billi għada, kif ukoll. Donuts, jien told, ser jiġi servut. Kull dritt. Story-- hekk umoristiċi I kien poking madwar fuq l-internet, u sibt xi arkivji qodma ta 'ex website tiegħi. U jirriżulta out-- madwar dan żmien, jidher f'waqtu ħafna peress I tiġbor li l-elezzjonijiet UC jkunu waslu biex tingrana mill-ġdid. So I dam għal UC, mitlufa miserably. U forsi dan kien parzjalment għaliex. Allura dan kien website tiegħi fil-ħin. Għal xi raġuni, ħsibt li kien idea tajba, qabel tinforma lin-nies dak pjattaforma tiegħi kien u għaliex huma għandu jivvota għalija, li jkollhom ikklikkja biex tidħol biex issir taf li informazzjoni, li retrospettivament hija tip ta 'creepy. I do not know verament dak li kien. Iżda ċertament ma kienx jgħinu kampanja tiegħi. I wkoll sabet li billi anzjan year-- Kelli dan il-kalendarju Muppet. Muppets kienu tip ta 'Vogue lura imbagħad. Jew forsi dawn ma kinux. I kellhom kalendarju Muppet lura imbagħad. U ħsibt li d jkun jibred biex insemmu kompjuter tiegħi fuq in-netwerk Harvard frogman.student.harvard.edu. Fil-ħin, aħna kollha kellhom unikament ismijiet ospitanti identifikabbli. U inti tista 'tagħżel xi vanity isem minflok l-isem tiegħek. U I marru ma 'frogman għal xi raġuni. U mbagħad I started-- I qattgħu ħafna ta 'żmien tikklikkja permezz ta' dawn ir-rabtiet dalgħodu. U dan kien paġna dwar tiegħi, li issa tip ta 'tidher adorable. Iżda huwa jixhed ukoll għal ftit kemm it-teknoloġija wasal. I mean, lura fil-ġurnata, a 486 kienet xi ħaġa. Dawn il-ġranet, huwa super, super, bil-mod super u sew inqas milli inti jista 'jkollok fil tiegħek bwiet tagħhom dawn il-jiem. Hemm aktar fuq hemmhekk li kien saħansitra aktar embarrassing. So I ser jitilqu minnu f'dik. Iżda dan kien l-ewwel tiegħi foray fis web-- oh, no. Dan ma kienx. Ewwel foray tiegħi reali fil-programmazzjoni web kien dan is-sit, li jiena biss nesa. F'xi punt, tgħallimt kif jagħmlu l-immaġini isfond ripetittivi. U hekk sibt dan tiling effettivi, bħal player hockey, futbol, ​​u tal-golf ball, jew kwalunkwe li hija għall-websajt Frosh IMs. U dan kien effettivament, ġenwinament il ewwel proġett fuq l-internet I ħa on-- I think forsi sophomore sena, year-- junior wara li tieħu CS50 u CS51, wieħed mill-klassijiet komuni ta 'segwitu fuq. I ndunat meta tħares permezz tal-arkivji li wieħed mill suċċessuri tiegħi u ħbieb, Lee, tip ta 'inbidel l-awtur li lilu nnifsu. Iżda dan kien tabilħaqq xi ħaġa li I għandu stess l-imbarazzament li. Iżda fil-ħin, din kienet l-ewwel websajt, kif għidt ftit ġimgħat ilu, li permezz tiegħu freshman jista jirreġistraw għall-isports intramurali hawn. U għalhekk jirriżulta li immaġini isfond bħal dik mhumiex tali idea tajba. Iżda l-web kien ġdid, u konna kollha jesperimentaw. U dan huwa dak I apparentament ma fil-ħin. Kull dritt. Allura mingħajr aktar dewmien, aħna jaqilbu gerijiet llum li jtik, tassew, l-biċċa finali li inti tista 'ssib speċjalment utli għal proġetti finali iżda wkoll li se jibdew jagħmlu l-web dinjija kollha kollu tħoss ftit aktar tinftiehem. Tabilħaqq, aħna qed tmur biex jintroduċu wieħed aktar lingwa ta 'programmar imsejħa JavaScript li huwa simili u differenti b'modi differenti minn lingwi konna ħares lejn s'issa. Allura C, irtirar, hija din il-lingwa ikkumpilata. You ħadthom ltqajna biex run permezz kompilatur. Ikollok kodiċi tas-sors ta 'oġġezzjoni kodiċi, jew zeroes u dawk. U dawk huma zeroes u dawk li CPU tiegħek, Central Processing Unit, attwalment jifhmu. PHP, b'kuntrast, mhux lingwa ikkumpilata. Huwa dak? Huwa ta 'lingwa interpretati. Allura hemm xi program imsejħa interpretu li għandu jaqra top it-- li qiegħ, xellug għal right-- u ċifra barra dak li kollha sintassi tiegħek ma u mezzi, jekk huwa loop jew kundizzjoni jew kwalunkwe numru ieħor ta 'programmar constructs. Allura dak lingwa interpretati. Imbagħad aħna introdotti HTML. U HTML lanqas a lingwa ta 'programmar. Aħna'd sejħa hija dak? A lingwa markup, li huwa biss tip ta 'mod fancy ta' tgħid dan ma jkollux constructs programmar simili rajna anke lura fil-ġurnata ta 'bidu. M'hemm l-ebda loops. M'hemm l-ebda kundizzjonijiet. Huwa verament huwa lingwa dwar immarkar ta 'data tiegħek u ifformattjar jew istrutturar dan b'xi mod. CSS, sadanittant, b'mod simili mhux lingwa ta 'programmar. Huwa saħansitra aktar estetikament orjentati. U dan jippermetti li inti sort ta tirfina affarijiet simili daqs tat-tipa u kuluri u t-tqegħid u kollha ta 'dak. Imbagħad kellna SQL. Allura SQL huwa tabilħaqq programmar lingwa f'ċertu sens, għalkemm mfassla speċifikament għal databases. Iżda anke jekk aħna biss jintroduċu inti tagħżel u daħħal u ħassar u taġġorna u l-koppja ta 'oħrajn, jinstabx inti tista 'attwalment jiktbu funzjonijiet jew proċeduri, kif dawn qed imsejħa, fil SQL li tfittex u jaġixxu pjuttost simili PHP u C-funzjonijiet. Allura jafu li dawk jeżistu. Iżda aħna ma lanqas biss jitħajru magħhom kif aħna biss tobrox il-wiċċ hawnhekk. U mbagħad JavaScript, l-aħħar tad lingwi tagħna introdotti formalment. Allura JavaScript, ukoll, hija lingwa interpretat. U dawk familjari, do inti tixtieq li tiddistingwiha ma 'xi karatteristika kemm C u PHP? Dak li jagħmilha differenti? UDJENZA: Mhuwiex ikkompilati. DAVID Malan: Say mill-ġdid? UDJENZA: Mhuwiex ikkompilati. DAVID Malan: Mhuwiex ikkompilati. Għalhekk, ukoll, huwa interpretat. Allura mhuwiex ikkumpilata. Iżda li jagħmilha ftit simili PHP. Iżda huwa għadu differenti minn PHP b'xi mod impressjonanti, għall-inqas fil-mod aħna ser jużawh. Yeah? UDJENZA: Hija tmur client-side. DAVID Malan: Hija tmur client-side, normalment. Dik hija tabilħaqq l-jiddistingwi karatteristika għalina dritt issa. C kien server-side fis-sens li għamilna kollox fil IDE CS50. PHP s'issa kien ġenb server sakemm minħabba li kien ukoll, gets interpreted-- mhux kkompilata, iżda interpreted-- ġewwa CS50 IDE, li naturalment huwa biss server jew servers fil-sħaba. Iżda JavaScript, anke għalkemm inti int ser biex tibda bil-miktub għal, ngħidu aħna, pset tmienja u forsi finali projects-- int se lemin fil IDE CS50 u isalvawh fil-fajls fi ħdan IDE CS50, CS50 IDE u, min-naħa, il-servers sħaba li fuqhom huwa ospitat, mhumiex ser li tinterpreta jew tesegwixxi kodiċi tiegħek. Pjuttost, huwa għaddej biex jintbagħtu forma mhux mibdul sa l-browser. U huwa mbagħad ser tkun IE jew Chrome jew Firefox jew Safari jew kwalunkwe li attwalment tinterpreta dan, fuq għal isfel, xellug għal-lemin. Allura l-muftieħ ta 'distinzjoni karatteristika għal-lum hija li JavaScript huwa client-side u PHP, per eżempju, biss kien server-side. Issa, dan għandu implikazzjonijiet interessanti għal, simili, proprjetà intellettwali u li jistgħu attwalment ara kodiċi tiegħek. U fil-fatt, inti tista 'tmur fuq il-web u ara aktar kwalunkwe kodiċi li xi ħadd ikollu miktuba fl JavaScript. Xi kultant huwa tinqara, xi kultant huwa obfuscated. Iżda aktar fuq li fil-ħin. Allura JavaScript, nicely biżżejjed, huwa super simili, sintattikament, li C. U ħafna bħal PHP, hemm l-ebda funzjoni prinċipali. Jekk inti tixtieq li tibda bil-miktub Kodiċi JavaScript, kif tkun taf tara llum, inti biss tibda bil-miktub dan. Iżda huwa, tkun taf tara, partikolarment utli fil-kuntest ta 'web browsers. Madankollu, ftit tiegħi disclaimer-- normalment earlier-- kien li jgħidu li inti tista 'dejjem illum użu JavaScript server-side użu ta 'qafas fancy imsejjaħ Node.js li xi wħud mill-applikazzjonijiet CS50 stess huma miktuba fil. Iċċekkja 50 effettivament juża Node.js. Iżda aħna qed tmur biex tiffoka fuq JavaScript client-side hawn fuq barra. Allura hawnhekk huwa sett ta 'kundizzjonijiet fil PHP. Jiddispjacini, in-- fatt, li dikjarazzjoni, wisq hija korretta. Hawnhekk huwa wkoll sett ta ' kundizzjonijiet fil JavaScript. Sintattiku, huwa identiku għal C u PHP. Espressjonijiet Sur Boole huma, Bl-istess mod, sintattikament identiċi kemm C u PHP. Għandna wkoll swiċċijiet fil JavaScript li tfittex identiċi. Għandna għal linji li huma strutturati b'mod identiku, filwaqt loops, tagħmel waqt loops. Dan wieħed huwa xi ftit differenti. PHP kellu l-kostruzzjoni għal kull li tista 'tkun tuża jew ser jużaw pset seba ', forsi. JavaScript għandha din il-verżjoni speċjali ta ' għal fejn inti litteralment ngħid xi ħaġa bħal per ewlieni varjabbli fil-għan, li huwa mod qosor ħafna ta 'tgħid, jekk Stajt ltqajna object-- u aħna ser jitkellmu dwar dawn darb'oħra fil-moment-- u nixtieq li jtenni fuq kull tal-pari b'valur ewlenin ġewwa, I ma jkollhom figura kif indiċi numerikament bl żero, wieħed, tnejn, tlieta. I jistgħu litteralment ngħid dan. U fuq kull iterazzjoni, JavaScript għalija se taġġorna l-muftieħ varjabbli li tkun l-ewwel ewlenin, allura l-ewlenin li jmiss, allura l-ewlenin li jmiss, allura l-ewlenin li jmiss, u oħrajn. U nista 'nikseb fil-valur tagħha permezz ta' trattament oġġett JavaScript, kif Ser naraw, bħallikieku huwa ta ' firxa assoċjattiva fil-PHP. Tabilħaqq, jekk inti finalment imgeżwer tiegħek mind madwar dak firxa assoċjattiva hija fil-PHP, inti tista 'taħseb li għal issa kif identika għal oġġett fi JavaScript. Iżda li l-daqsxejn ta ' oversimplification. Arrays tfittex, nicely biżżejjed, identiċi biex PHP ħlief għal karattru wieħed. Hemm ħaġa waħda nieqsa hawn li aħna ma tara ġimgħa li għaddiet ma PHP. X'hemm titħalla barra? Yeah? Ebda sinjal dollaru. Allura aħna qed lura għal aktar dinja normali fejn varjabbli ma jkollhom sinjali dollaru. Imma inti prefiss minnhom ma var, tipikament. U var ifisser varjabbli. U ħafna bħal PHP huwa laxk typed-- biha hemm tipi, hemm għadd u kordi u sufruni u għalhekk forth-- JavaScript simili għandha tipi. Iżda huwa laxk ittajpjat fil inkunu l programmaturi ma għandekx sabiex jispeċifikhom. Aħna biss għandek tkun taf li t-tipi differenti jeżistu. Varjabbli, meanwhile-- hawnhekk kif nistgħu tiddikjara "hello, dinja" bħala sekwenza. Avviż huwa identiku għal PHP iżda l-ebda sinjal dollaru. U din hija xi ħaġa aħna ser tibda tara aktar illum, fejn inti għandek oġġett bil-kodiċi u l-valuri. U jekk inti tixtieq li jippruvaw li wieħed jiddeduċi mill-aħħar week-- l sintassi huwa xi ftit differenti. Iżda sanità ftit check-- kemm ċwievet ma dan l-oġġett jidhru li jkollhom? So I tara erbgħa. Nara tnejn. Allura huwa attwalment tnejn. Allura dan huwa ġabra ta 'żewġ pari b'valur ċavetta. Il-muftieħ huwa simbolu li l-valur huwa FB. Il-muftieħ huwa prezz li l-valur huwa 101.53. Għalhekk dawn huma żewġ pari b'valur ċavetta. U ftakar, PHP-- u dan huwa għal darb'oħra biss it-tip ta 'differenza sintattika. Huwa mhux kollha li intellettwalment interessanti. PHP jista 'jkollok bil-miktub dan l-istess ħaġa bħala kwotazzjoni follows--, huwa daqs. U nibdel dawn biex parentesi kwadri. U allura nibdel dan kelma ikkwotat, "prezz." U mbagħad I ma jużawx kolon. What did I jużaw ġimgħa li għaddiet? Yeah, is-sinjal ugwali vleġġa notazzjoni funky. U mbagħad I ma l-istess ħaġa hawn. L-istess ħaġa hawn. U li kollox. Allura huwa multa jekk dan ma jkunx verament għereq fil lill-memorja biss iżda għaliex dan huwa verament intellettwalment uninteresting. Huwa differenzi biss sintattika. Iżda l-ideat huma eżattament l-istess. Ġewwa ta 'dan il-varjabbli kwotazzjoni fil JavaScript hija ġabra ta 'pari b'valur ewlenin, li waħda minnhom hija simbolu, li waħda minnhom huwa prezz. U nista 'nikseb fuq dawk il-valuri bil-sintassi li ġej. Eżatt bħal fil-PHP, I jistgħu jagħmel xi ħaġa like-- let me jagħmlu din il-kaxxa ftit akbar. Eżatt bħal fil-PHP, I jistgħu jagħmlu this-- oh, dammit. Come fuq. Eżatt bħal fil PHP-- OK, aħna ser biss tuża n-noti preżentatur. Eżatt bħal fil-PHP, I jista tagħmel $ kwotazzjoni $ quote ["simbolu"], u dan se tikseb me il-valur ta '"simbolu." Fil JavaScript, li għaddej biex tkun identiċi, fejn I tista 'biss tagħmel dan. L-unika ħaġa li l- nieqsa hija s-sinjal dollaru. Allura nicely biżżejjed, allura, hemm mhux kollha li ħafna sintassi ġdida. Allura dak li llum aħna niffukaw fuq, verament, huwa xi wħud mill-ideat u l-applikazzjonijiet. U l-ewwel tali applikazzjoni li inti tista raw jekk inti dived fis pset seba diġà hija din sintassi. Għalhekk fl pset seba ', jekk inti stajt jidher jew ma bbenefikawx encore, jafu li hemm fajl li nagħtu inti imsejħa config.json-- JavaScript Joġġezzjonaw Notazzjoni. Għaliex? Ridna li jkunu jistgħu jagħtuk mudell ma 'xi pari b'valur ċavetta. Ridna li jkunu jistgħu jagħtuk lista tal-ospitanti, l-isem tas-server. Ridna li jagħtuk placeholder għall username tiegħek u placeholder għall password tiegħek. Jekk int ma tara dan għadu, biex ma tinkwetax. Aktar dwar dan fil pset seba [? spec. ?] U mbagħad, ovvjament, irridu li inti biex timla l-dos li għaliex meta inti log fis CS50 IDE, kull wieħed minnkom jkollhom username tiegħek stess u password. Allura aħna jistgħu stajt użati nofs tuzzana jew aktar formats differenti fajl. Jista 'jkollna użati fajl txt. Nistgħu użati fajl CSV. We jistgħu stajt użat Fajl INI, fajl XML, mazz sħiħ aktar akronimi li inti tista 'ma qatt semgħu. Huwa tip ta 'arbitrarja fl-aħħar tal-ġurnata. Iżda super popolari dawn il-jiem huwa test format imsejħa JSON-- JavaScript Għan Notation-- li tidher bħal dan. Huwa ftit cryptic, iżda tinnota l-mudelli. Tibda ma 'kaboċċi miftuħa Brace, u inti tispiċċa bl-istess. Ġewwa ta 'dan huwa xi ħaġa. Huwa par-valur ċavetta. Allura dan huwa oġġett li jien tħares lejn fuq l-iskrin hawn li għandha ċavetta waħda, li għandu valur wieħed. U biss ddeduċiet bbażati fuq il- mudell preċedenti, x'inhu l-prinċipali hawnhekk? Database, il-ħaġa li ix-xellug tal-kolon. Issa, il-valur jiġri li jkun linji multipli din id-darba. Iżda l-valur jibda bil-kaboċċi Brace u tispiċċa bil Brace kaboċċi. Allura dak li tipproponi l- tip tal-valur tal database? A dizzjunarju jew, biss aktar qosor, oġġett. Dritt? Dan huwa tip ta 'struttura data li jistgħu jużaw strutturi oħra fi ħdanha stess. Mela jekk dan ħaġa sħiħa nkunu sejħa ta 'object-- u oġġett huwa biss mazz ta 'valur importanti pairs-- l valur tal database nnifisha hija oġġett. Il-valur ta database għandha mazz sħiħ ta 'pari b'valur ewlenin, l-ewwel wieħed minnhom huwa ospitanti, allura isem, imbagħad username, allura password, kull wieħed li l-valuri, sadanittant, huwa biss string boring fil-kwotazzjonijiet doppja. Għalhekk anki jekk dan mhux super ċara għadha biss, jafu li din hija biss standard, b'mod pjuttost boring jaħżen data fil-format standard. Iżda l-iżbalji komuni inti jista 'jagħmel, anki fil pset sebgħa, huma affarijiet stupid ftit, bħal jekk inti aċċidentalment jħalli barra l-virgola hemmhekk. Li għaddej biex tirriżulta fil-fajl ma tkun neċessarjament tinqara. Jekk inti aċċidentalment tħalli barra affarijiet bħall- kwotazzjonijiet, mhuwiex ser tkun tinqara. Allura huwa format tal-fajl pretty nitpicky, iżda huwa wieħed li super komuni. U aħna jiġri li jużawh, għalkemm inti ma tuża kwalunkwe JavaScript mod ieħor, fil pset sebgħa. Kull dritt. Mela ftakar din l-istampa. Aħna tkellimna dwar, fil HTML, li il-kodiċi tista 'tidher bħal dan. Dan huwa l-HyperText Markup Language [Inaudible] għal ftit "hello, dinja." Iżda mbagħad aħna pproponiet filwaqt lura li jekk dan jgħin, inti tista 'tixtieq li tibda taħseb dwar dan diġà bħala siġra. Fil-fatt, il-indentazzjoni li aħna użu biss għall-finijiet leġibbiltà tal jew għall-finijiet istil dwar fuq ix-xellug tista tip ta tiġi tradotta fil din is-siġra, fejn inti għandhom xi node għerq speċjali li aħna ser ġenerikament dokument bl-isem, li taħtu huwa l-element HTML għerq jew tikketta, HTML, li mbagħad għandha żewġ tfal, ras u l-korp. U mbagħad min-naħa, ras għandha titolu. U t-titolu għandu valur test. U l-korp simili għandu valur test. Mela jekk inti qed tgħid komdu li iva, inti tista 'tieħu din HTML u tfassal stampa simili dan, il-ġenb tal-lemin huwa mudell mentali sbieħ għaliex issa li għandna JavaScript, l-ipprogrammar lingwa li browsers jista jesegwixxu u jinterpretaw għalik, jirriżulta li dak li aħna qed waslu biex jagħmlu fil-kodiċi huwa tibda jimmanipulaw dan struttura ta 'siġra fil-memorja. Aħna ma jkollhom biex jibnu l-siġra fil-memorja. Aħna ma jkollhom jagħmlu tip ta ' istruttura tad-data pset ħamsa u stil kumplessità. Il-browser, nicely biżżejjed, fuq interpretazzjoni HTML fuq għal isfel, tax-xellug jew, hu litteralment se idejn us-ekwivalenti ta 'pointer għal dak siġra kollu b'xejn. Hija ma kollha tax-xogħol iebes. Dak hu Mozilla u Apple u oħrajn għamlu għalina. U ma JavaScript ser nieħdu tkun kapaċi tikkontrolla u l-bidla u jagħmlu affarijiet interessanti għal li siġra, magħrufa bħala DOM jew Object Model Dokument. Liema tip ta 'affarijiet? Ukoll, jirriżulta li fl JavaScript, hemm din il-lista tal-londri ta avvenimenti li jistgħu jseħħu. U aħna ma verament użata li kelma peress ġimgħa żero u pset żero meta tkellimna dwar Scratch. Ħafna mill inti probabilment ma użax avveniment fil-proġett Scratch tiegħek. Imma int tista recall sempliċi Marco Polo eżempju, fejn kellna żewġ sprites, wieħed minnhom qal, Marco. Il-oħra li minnhom imbagħad, wara smigħ u s-smigħ il-każ, qal, Polo. Jekk le, tħossok liberu li ħarsa lura li jmur lura. Iżda dan huwa biss biex jgħidu, u inti tista 'tip ta' jiddeduċu mill-ismijiet ta 'dawn affarijiet, JavaScript, jirriżulta, se tagħtina mod biex tisma għall maws jinżel 'l isfel jew maws jitla jew ċavetta jinżel 'l isfel jew ċavetta jitla 'jew onselect onsubmit jew onresizing xi ħaġa. Fi kliem ieħor, kwalunkwe azzjoni fiżika li bniedem jista 'jieħu bi browser li inti tagħmel kull jum, inti tista 'tikteb kodiċi għal dak jisma għal dawk l-avvenimenti u mbagħad ma xi ħaġa xierqa. Per eżempju, jekk inti tuża Google Maps, x'jiġri jekk inti ikklikkja u jimxu l-maws, tipikament? Jekk tikklikkja u drag? Yeah? Eżattament. Il-mappa jibda jiċċaqlaq. Allura inti tista 'tip ta' tara x'hemm minn hawn, x'hemm hemmhekk. U kif ma Google jimplimentaw dik? Ukoll, preżumibbilment, dawn qed użu ta 'koppja ta' dawn avveniment semmiegħa, wieħed li jgħid, jisimgħu għal fuq ġrieden down-- hekk meta l-utent fiżikament pushes trackpad tiegħu jew tagħha jew maws tagħha isfel. U allura aħna qed tfittex xi ħaġa bħal moviment jew xi avveniment ieħor li jippermetti li qbid drag. U fil-fatt, drag hija simili f'dan dot dot dot lista ta 'għażliet possibbli. Allura dan se jkun b'saħħtu mod biex tibda jirrispondu għall-utent anki qabel ma hu jew hi attwalment klikks xi ħaġa espliċita bħal jissottomettu. Iżda aħna qed tmur biex jintroduċu a suġġetti koppja biex naslu s'hemm. Iżda l-ewwel, ejja tranżizzjoni għal xi kodiċi attwali. Hekk jien se jmorru quddiem u jiftħu dom 0, li huwa eżempju sempliċi ħafna hawnhekk li jekk I zoom in sempliċement għandha dan input hawn għalija. U jien ser jimxi 'l quddiem u tip "David" għall-isem tiegħi u kklikkja Submit. U mbagħad, għalkemm tip ta 'irħis, I jkollhom din pront li pops up li tgħid, "hello, David!" Allura dan huwa tip ta ' bħal tagħna "hello, dinja" li għamilna awhile lura fis-C u anki fil-PHP għaliex stajt dinamiku outputted isem tiegħi. I tista 'tagħmel isem xi ħadd ieħor hawn. I tista 'sempliċement tbiddel dan li, simili, Hannah, ikklikkja Submit. U fil-fatt, il-pop-up ftit bidliet. Issa, pop-ups huma wieħed mill- aktar karatteristiċi abbużati tal-web. U fil-fatt, lura fl l-pop up imblokkaturi kuljum daħal fis-Vogue għaliex inti imur għal xi website-- forsi place-- dubjuż li imbagħad f'daqqa waħda tibda peppering iskrin tiegħek bil-mazz sħiħ ta 'pop-ups. U għalhekk din il-ħila biex pop up twieqi quddiem il-utent ma kienx partikolarment tajjeb riċevuti mill-umanità. Allura hu għalhekk li inti tara dan jipprevjeni ħaġa, li biss jagħmel dan ħaġa sħiħa ikrah. Allura aħna qed tmur għall-ħtieġa ta ' aħjar mod biex fil-pront lill-utent. Iżda għal issa, li jidher li qed jaħdem. Hekk biss intuwittivament, dak jidher li jiġri hawn? I jimxi 'l quddiem u kklikkja Issottometti, u imbagħad xi ħaġa li qed jiġri, b'mod ċar. Imma dak li mhux qed iseħħ dan ma jiġri aħħar ġimgħa kwalunkwe ħin I għafast Submit? What ma seħħx fuq l-iskrin? Jiddispjacini? Rikarigu. Il URL ma bidlet xejn. I qal li dan kien dom 0, u jien xorta fil-dom 0. Normalment, aħna'd jiksbu mibdula għal xi oħra URL, bħall register.php jew simili. Iżda anke meta I tiċħad din il-ħaġa billi tikklikkja OK, avviż li l-URL soġġorni kompletament tpoġġi. U, fil-fatt, jekk jien ftit skeptical, let me tiftaħ Chrome. Let me tiftaħ il-tab Network. U avviż huwa vojt fil-mument. Let me imorru quddiem u terġa 'tissottometti Maria. M'hemm l-ebda traffiku tan-network tkun xi tkun. Hekk hemm ebda HTTP. Allura fil-fatt, jekk I tħares lejn il-kodiċi tas-sors għall this-- let me qrib dan il-tieqa u mur View Sors. Interessanti. Jidher qisu hemm xi tikketti ġodda, fosthom iskrittura. Mela ejja tagħti ħarsa ġewwa CS50 IDE eżattament dak I bagħtet lill-utent. So here is-- ejja tiffoka fuq il-HTML biss. Hawn il-nofs ta 'isfel ta' dom-0.html. U tinnota li huwa ltqajna titolu, tikketta ras, tikketta korp, forma tag. Imma dak li jumps out lilek bħala differenti, speċjalment jekk inti stajt qatt miktub kull JavaScript yourself. Let me iscroll ftit għad-dritt hawn. Stajt ltqajna input, input ieħor għall jissottometti. Stajt ltqajna identità, li huwa tip ta 'ġodda. Iżda aħna ma tara dan ma CSS. X'iktar huwa definittivament ġdid? Yeah? Nizza. Kull dritt. Għalhekk, fejn jgħid onsubmit, Avviż dak li jidher li jsegwu. Dan huwa attribut fin-nomenklatura HTML. Il-valur tiegħu huwa din is-sekwenza ikkwotat hawn. U dan jistenna ftit stramb ewwel daqqa t'għajn. Mhuwiex HTML. Mhuwiex CSS. Dan huwa, kif inti tista raden, JavaScript. Għalhekk jidher li mibnija fis dan paġna web hija funzjoni msejħa greet. U jien jiddeduċi li ftit għaliex dan huwa ftit kliem, insellem. Huwa ltqajna paren miftuħa, paren qrib, u virgola. Id-Dehra funzjoni C, qisu funzjoni PHP. U fil-fatt, li għaddej biex tkun funzjoni JavaScript. Imbagħad jien jirritornaw falza. Aħna ser terga 'lura għal li fi ftit mument. Iżda fejn dan huwa funzjoni definita? Well let me iscroll għall-quċċata tal-fajl. U anki jekk din hija linja twila, huwa relattivament sempliċi. Let me zoom out hawn u tiffoka fuq dawn l-erba 'linji. Għalhekk fl JavaScript, biss bħal PHP, inti biss jiġifieri, litteralment, il-kelma "funzjoni," l-isem tal-funzjoni, u mbagħad parentesi ma 'kwalunkwe arguments-- ebda argument f'dan il-każ. U hemm ebda tip ta 'ritorn fl JavaScript, bħad PHP. Allura huwa ftit iktar laxk minn C. Brace kaboċċi miftuħa, Brace kaboċċi qrib. Mibnija fis JavaScript huwa function-- mhux function-- rakkomandat imma funzjoni msejħa 'twissija uniku għan tagħhom fil-ħajja huwa li pull up li pretty ikrah pront li rajna mument ilu. Issa dan huwa tip ta f'gidma. X'qed jiġri hawn? Mela ejja nibdew biex jenfasizzaw kollox hawn. Dik hija l-istess argument biex twissi. U x'inhu għaddej? Dan biss qisu string. U jirriżulta li, kuntrarjament għall PHP u b'differenza C, ma jimpurtax fil JavaScript jekk inti kwotazzjonijiet uniku jew kwotazzjonijiet doppja. Dawn ser ikunu ekwivalenti. U franchement, huwa biss popolari dawn il-jiem għall-programmaturi JavaScript biex dejjem użu kwotazzjonijiet uniku għal xi raġuni. Huwa biss il-ħaġa li tagħmel. Iżda aħna jistgħu jużaw kwotazzjonijiet doppja, kif ukoll. Allura plus huwa karattru ġdid. Iżda dawk minnkom li ghamilt dan qabel, dak ma plus jfisser? Yeah. Concatenate. Allura rajna dan fil-PHP. Hemm biss l-dot operatur PHP li se concatenate żewġ kordi flimkien. C kien uġigħ fl-għonq li jagħmlu dan. Recall minn pset sitt, li kien uġigħ especial fl-għonq, inti għandek tuża xi ħaġa bħal strcat wara allokazzjoni memorja fuq il-munzell jew l borġ. Kellek biex tiżdied permezz ta 'ċrieki biss biex concatenate żewġ kordi. Fil JavaScript, huwa super sempliċi. Biss tuża l-operatur plus bejniethom. Allura l--kumpless tħares ħaġa jidher li din għax fl-aħħar ta ' din is-sekwenza sħiħa, I biss concatenate fuq punt exclamation. Mela jekk dak li kien popping up kien "hello, David," "hello, Hannah," "hello, Maria," u oħrajn, b'mod ċar li ħaġa tan-nofs bejn iż-żewġ pluses għandha tagħti me aċċess għal liema? X'hemm fil hemm għall-żgur? Yeah. So I ser feint hawn il twieġeb isem tagħhom, id-dritt? Allura isem tagħhom feġġ fil-finali riżultat. Allura dak li jfisser dan? Well, I proposti aktar kmieni f'dik stampa li l-hekk imsejħa DOM għandha dan l-element għerq speċjali mod up dokument top imsejħa. U issa, jirriżulta, li għaddej li jkun fattur varjabbli globali speċjali fl JavaScript, mibnija fis li hija mazz sħiħ ta 'funzjonalità utli. Fost il-funzjonalità utli hija l- kapaċità li tinkiseb fi kwalunkwe node dixxendent. Dawk kwadri jew rettangoli jew elissi huma biss lymph fil-siġra, biex ngħidu hekk. Għalhekk jirriżulta li mibnija fis Dokument oġġett JavaScript tal hija funzjoni, magħrufa bħala metodu, li sejjaħ getElementById. Is-sintassi għas-sejħa funzjoni fl JavaScript li hu ġewwa ta 'oġġett jew ta' varjabbli hija biss ma 'l-dot notazzjoni. U rajna dan fil C dak l-sintassi Istituzzjonjijiet. You see dan pset seba ', it-tip ta', tip ta ', meta tara CS50 :: query. Il-kolon kolon fil-PHP hija ieħor ta 'żjarat funzjoni li l- ġewwa ta 'xi oġġett. Iżda għal issa fl JavaScript, huwa biss dot. U għalhekk din il-funzjoni, nicely biżżejjed, tip ta ' jgħid dak li does-- tikseb element mill ID. Element huwa biss isem ieħor għal tag jew node fil-DOM. U hekk jiksbu element bl ID "name" ifisser this-- hawnhekk HTML tiegħi. U bbażati fuq dan HTML, dak node jew dak HTML tag am I ser programmatically tkun mogħtija billi ċċempel document.getElementById? Yeah, eżattament. Jien ser tikseb l-input element hemm li ID huwa "isem." Allura speċifikament, inti tista think ta 'din il-funzjoni, getElementById, bħala mod kif tingħata lura pointer għal dak node speċifiku fil-siġra. Aħna ma tfasslux dan siġra, iżda huwa mod ta 'jkollna aċċess għal dik rettangolu jew dak ir-rettangolu billi jidentifika b'mod uniku dan permezz ID tagħha. Issa, għaliex dan ikun utli? Ukoll, jirriżulta li ladarba inti ħadthom gotten li node, dak ir-rettangolu mill- stampa, li node ġewwa ta 'dan, imbagħad, għandha mazz sħiħ ta ' pari b'valur ewlenin properties-- jew data, li wieħed minnhom huwa msejjaħ il-valur. Allura litteralment, huwa tip ta ' f'gidma biex jispjegaw il-ħaġa sħiħa. Iżda fl-aħħar tal-ġurnata, dan kollu ma huwa jtik string li l-utent ittajpjat fil b'dan il-mod ġerarkiku. Imma jien ma simili ftit dawn l-affarijiet. Jew pjuttost, hemm xi kurżità għadu. Kollha ta 'li dehret li jaħdmu. Għaliex taħseb I lura falza wara sejħa insellem? Dan jidher ftit ikrah, li Għandi żewġ dikjarazzjonijiet hemmhekk separati minn semicolons. Ħu raden. Jekk I jitneħħew ritorn foloz, dak li jista 'jiġri, biss istintivament? Jiddispjacini, jiġifieri mill-ġdid? Iftaħ mazz ta 'Windows. Allura potenzjalment forsi xi ħaġa bħal dik jiġri. X 'iktar? Jista 'jippreżenta talba fejn? L-istess paġna. Allura, fil-fatt, li li l-eqreb twieġeb hawn, anki jekk, kuntrarjament fil-passat, stajt ma speċifikat l-attribut azzjoni, li normalment għandna nagħmlu. Jinstabx hemm default. Jekk inti ma jispeċifikawx azzjoni, huwa simili qal quote, unquote jew l-isem tal-fajl innifsu, li f'dan il-każ jkun simili dom-0.html. Huwa biss tip ta 'dedott, jew pjuttost impliċita. U hekk jekk jien ma tagħmel dan, ejja avviż. Let me jiffranka dan. U stajt jitneħħew ritorn foloz. Let me jmorru lura għal din Eżempju u forza rikarigu dan. U inti tista raw lili jissuġġerixxu dan fuq CS50 Iddiskuti mazz ta 'drabi. Jekk xejn qatt jaġixxi funky u l browser mhuwiex iġib ruħu kif inti tistenna, oftentimes inti ser tixtieq li żżomm Shift u mbagħad ikklikkja Reload. Li se seħħ kull fajl biex jerġgħu jitgħabbew u ma jużawx cache lokali browser tiegħek jew kopja sabiex issa, let me imorru quddiem u jiftħu Ispettur tiegħi, il-tab Network. Jien ser ikklikkja Ippreserva Log minħabba I ma tridx li tħassar il-fillieri ladarba I nikseb whisked bogħod x'imkien ieħor. Let me imorru quddiem hawn u tip Andi, ikklikkja Submit. Kull dritt. Li jidher kif mistenni. Hija tgħid "hello, Andi." Let me ikklikkja OK. Interessanti. Avviż li l-paġna tinbidel, għalkemm il-paġna oriġinali. Avviż it-tip URL tal mibdula. Hija żiedet kwistjoni mark, li normalment indikatur li aħna ppruvaw biex jissottomettu xi ħaġa. U mbagħad fil-qiegħ, saħansitra aktar espliċitu, hawnhekk huwa t-talba attwali HTTP, li ltqajna rispons ta '200 li ġab lili lura hawn. Għalhekk dan mhux dak rridu nagħmlu, right? Minħabba I ma jridux rikarigu-paġna kollha. I minflok riedu li jirritornaw falza sabiex short circuit imġieba default tal-browser, li kienet, naturalment, li jissottometti il-paġna. Mela ejja tagħti ħarsa lejn eżempju marġinalment aħjar. Din hija dom verżjoni waħda. U avviż li ġej. Huwa OK jekk inti ma grok kollha tal-linji ta 'kodiċi. Imma dak li hu fundamentalment differenti dwar din l-implimentazzjoni? I ser jistipula iġib ruħu l- istess, ma l-istess ħaġa. Liema kienu I ovvjament isir b'mod differenti? Yeah? UDJENZA: [inaudible]. DAVID Malan: Yeah. Allura l-funzjoni hi definita differently-- fi kliem ieħor, assenti mill-forma, up hemm fuq il-linja 7-- jew pjuttost, linja 8-- m'għadhomx għandi l-attribut onsubmit. Fl-eżempju ta 'qabel, I kellha din. U mbagħad I litteralment kiteb kodiċi tiegħi hawn. U mbagħad I qal jirritornaw falza. U jekk ma togħrok inti l-mod żbaljat għadhom, din għandha tibda sakemm kif, bħal fil HTML, meta bdejna għall-ko-mingle it ma CSS fl-attributi stil, hija biss bdiet tikseb ftit messy jew tħoss ħażina ftit. Bl-istess mod hawnhekk, jekk tibda tieħu HTML, u allura inti awtomatikament plop xi kodiċi JavaScript fin-nofs ta string ikkwotat, huwa mhux ser ikun maintainable ħafna. Dritt? Huwa lanqas ovvju fl-ewwel post fejn il-kodiċi JavaScript huwa. Hekk ikun tassew sbieħ kif prinċipju ta 'disinn aħjar, ejja jżommu HTML tagħna kompletament separati minn JavaScript tagħna. Allura biex tagħmel dan, dak li aħna ħadthom isir hawnhekk huwa l-following-- aħna sempliċiment jużaw HTML għall markup biss. U hekk fil-verżjoni wieħed ta 'dan, kollha Għandi hija forma b'ID speċjali. U mbagħad stabbiliti hawn, jien jieħdu vantaġġ ta 'karatteristika speċjali tal JavaScript li biha I jista 'jkollhom x'hemm imsejħa funzjoni anonima. Għalhekk jirriżulta li jekk I call document.getElementById ta 'demo " dan huwa simili tagħti me a pointer li dan node fil-siġra tiegħi, l-element forma, biex ngħidu hekk. Issa, I biss jafu minn jafu daqsxejn ta HTML issa qed ikollna taqra wħud online referenza, li element forma jappoġġja mazz sħiħ ta 'avveniment listeners-- fil kliem ieħor, il-lista tal-londri ta 'avveniment semmiegħa li rajna mument ilu. Naf mill-qari dokumentazzjoni li onsubmit huwa avveniment valida semmiegħ għal element formola. Hekk darba Naf li, huwa sikur għalija li tagħmel l following-- tikseb dik node mill-siġra, l-element forma, u l-aċċess tagħha hekk imsejħa proprjetà onsubmit. Allura l-dot ifisser biss dan huwa proprjetà, bħal meta valur speċjali ġewwa ta 'dan. U liema tip data am I tassenja, apparentement, li onsubmit, li hija effettivament varjabbli ġewwa ta 'dik node fil-siġra? Huwa qasam ġewwa ta 'dak Struct. X'hemm-tip ta 'dejta? Funzjoni, yeah. Għalhekk jirriżulta li PHP għandha dan. U anki jekk aħna ma jgħidlek dwar dan, C għandha wkoll funzjoni pointers, il ħila li jgħaddu u tassenja funzjonijiet bħala valuri varjabbli "infushom. U aħna mhux qed tmur li rigressjoni lura għall C. Iżda għal issa, jirriżulta li fuq in-naħa tal-lemin hawn, anki jekk jistenna ftit funky, dan ifisser, ħej browser, tagħti me funzjoni. Jien ma jmur biex lanqas biss jitħajru tagħti dan l-isem għaliex jien litteralment ser tassenja ejja sejħa hija l-indirizz tal din il-funzjoni immedjatament lill onsubmit. Fi kliem ieħor, browser, inti m'għandekx bżonn li tkun taf dak li sejjaħ din il-funzjoni. Inti biss jeħtieġ li tkun taf fejn hu għall-memorja. U għalhekk huwa biżżejjed biss biex jkollhom sinjal ugwali hemmhekk u li ma jolqot ismijiet dan, bħal foo jew insellem jew kwalunkwe kelma oħra. U issa din hija biss ħaġa stilistika. I tista 'timxi dan Brace kaboċċi fuq the-- linja sorry-- jmiss bħal aħna normalment jagħmlu CS50. Iżda fl JavaScript, huwa fil-fatt stylistically komuni li biss iżommu l-Brace kaboċċi, il- ewwel waħda, fuq dik ewwel linja. Iżda hawn, hemm xejn interessanti. Li Brace kaboċċi miftuħa biss tiddemarka l-bidu tal-funzjoni tiegħi. Il-funzjoni issa huwa identiċi, ħlief stajt inklużi l falz ritorn ġewwa ta 'din il-funzjoni. Minħabba jirriżulta out-- u inti biss jafu dan minn qari l documentation-- li jekk il-funzjoni li inti tassenja l-handler onsubmit prospetti falza, il-browser biss jaf u jaqbel li ma tippreżenta l-formola ma 'server. Jekk dan jirritorna veru, se tippreżenta li server għal raġunijiet Ser naraw huma utli fil-ftit mument. U allura l-virgola wara l Brace kaboċċi hemm biss ifisser jien jsir tiddefinixxi l-funzjoni. Inti taf dak li sejħa mill-aktar kif inti tisma 'sottomissjoni. Kull dritt. Dan għadu probabbilment tip ta 'ikrah. Allura dak li aktar jista nagħmlu? Ukoll, jirriżulta imbagħad fil verżjoni tnejn, li hija l-last-- U aħna ser biss t'għajn fil dan. Bir-riskju ta 'teħid dan uglier, jirriżulta li hemm librerija fil id-dinja msejħa jQuery. U jQuery hija super popolari JavaScript librerija dan huwa tant popolari li ħafna kwalunkwe JavaScript-- mhuwiex komuni għall-persuni li jħawdu jQuery ma JavaScript. Għaliex? JavaScript nnifisha għandha ħafna modi verbose ta 'kif isir things-- document.getElementById, dadadadadada. Inti jispiċċaw wara ħafna konzijiet tal-kodiċi. Allura sħabi jismu John resid, li attwalment xogħlijiet għal istartjar up dawn il-ġranet, ħareġ ma 'dan librerija snin ilu li ħafna nies kkontribwew li sejjaħ jQuery li l-bidliet l-sintassi fil-mod li ġej. U biss sabiex inti stajt tidher dan, għaliex inti ser dejjem tara dan jekk tagħmel fuq l-internet proġett finali, dan ikun il-mod ekwivalenti ta ' implimentazzjoni ta 'dak istess funzjoni użu din il-librerija speċjali. Issa, aktar milli tease jiddistingwuh kollha kemm hi, ejja biss ħarsa lejn xi mudelli. Dan sintassi jidher li kemm funzjonijiet anonimi jew funzjonijiet nameless jew funzjonijiet lambda AKA? Tnejn, id-dritt? U inti taf li, anki jekk int mhux super comfy ma 'dan, biss mill-fatt li jgħid funzjoni () darbtejn. U jirriżulta li dak li dan il-kodiċi huwa doing-- u aħna ser jirreferu għal referenzi onlajn, finalment, għal xi għajnuna ma 'dan. Dan ifisser biss li meta id-dokument huwa lest, jimxi 'l quddiem u jirreġistraw il-formula sussegwenti bħala l-handler jissottometti għall-HTML element li idea uniku huwa demo. U mbagħad, meta dan iseħħ, sejħa dawn iż-żewġ linji ta 'kodiċi. U dan huwa, traġikament, aktar Mod verbose ta 'tgħid ritorn foloz. U aħna imsemmi dan biss minħabba tkun taf tara kodiċi bħal dan online. U huwa xejn li jkun skoraġġuti mid. Iżda, wieħed iżomm f'moħħu li x'hemm se tkun komuni fl JavaScript huwa dan paradigma. U hekk hu għalhekk nuru dan għal issa. Kull dritt. Allura mingħajr ma insistiet ukoll ħafna fuq dak sintassi, huma hemm xi mistoqsijiet dwar dawn l-eżempji jew ideat s'issa? Kull dritt. Mela ejja jużaw dan għal xi ħaġa utli. Nagħmlu paġna web li biss jgħid hello, hekk u hekk mhux kollha li interessanti, ma underwhelm. Dan wieħed mhux ser ikunu sbieħ, iżda huwa ser jagħmel xi ħaġa utli. Let me jmorru lura għall-direttorju tiegħi hawn u jiftħu, jiġifieri, forma-0.html. Allura jissoponi dan huwa l-freshman paġna reġistrazzjoni sports intramurali mingħajr ebda CSS jew xi sens ta 'disinn. U nixtieq li jimxi 'l quddiem u hawn jirreġistraw bil-password. U jien ser taqbel mat-termini u l-kundizzjonijiet u kklikkja Reġistru. U issa l-website jgħid, "Inti irreġistrata! (Well, mhux verament.) " Li tidher qisha maħduma, iżda let me imorru quddiem u forza rikarigu. U ħalluni ngħid, no, inti ma bżonn indirizz email tiegħi attwali. Jew forsi aħna ser biss jgħidu mail fil hemmhekk. Password se jkun, bħal, 12345. U mbagħad, biss għaliex jien idjota, issa huwa 123456789. U jien mhux ser jiċċekkja kaxxa tiegħek. Hmm. Kull dritt. Hekk hemm diversi opportunitajiet sforz akbar. U inti taf, jew se tara fil pset seba ', li tista' tikteb code-- u inti ser ikollok biex jikteb kodiċi PHP-- biex jiddefendi kontra dawn it-tipi ta 'utent Żbalji minħabba li l-utent b'mod ċar ma kkoperax. U hu jew hi ma jkunx tak l- valuri int riedu jew anke fil-format li int riedu minnhom. Sabiex tkun taf tara fil pset seba li nistgħu żgur li jkollha xi jekk il-kondizzjonijiet li jgħidu jekk l-indirizz email mhix username@something.edu, nistgħu biss jgħidu sorry u ruhna lill-utent ħafna, bħal inti tista 'tkun fl pset sebgħa. Jew jekk ma ċċekkjati il-kaxxa, jirriżulta fil-PHP, inti tista 'tikxef li, wisq. U ċertament jekk il-passwords ma jaqblux bħal fil register.php għall pset seba, inti tista 'tikxef dak. Iżda li l-uġigħ fil- għonq f'dak issa jitolbu us biex tmur-triq kollha lejn l-server. L-utent ikun infurmat ta 'l-iżball. U mill-inqas ħlief jekk tuża xi teknika fancier, issa huma għandhom ikklikkja l-vleġġa lura. Mhux se jkun sbieħ, bħal ħafna ta 'websajts llum, jekk kellek aktar immedjata feedback, istantanjament? Fi kliem ieħor, let me mur verżjoni wieħed, li se jkun hemm ebda prettier. Iżda ma jkollu din il-karatteristika. Malan, 12345, 123,456,789, mhux ser jivverifika l-kaxxa, Reġistru. Passwords ma jaqblux. Għalhekk anki jekk dan pop-up huwa ugly-- nistgħu tissostitwixxi dan eventwalment ma 'xi ħaġa bħal bootstrap, li tkun taf tara fil pset seba huwa library-- popolari ħafna I ma jiskopru li l-passwords ma jaqblux. Kull dritt. Well, let me jiffissaw li kif l-utent. Let me imorru quddiem u jgħidu 12345, 12345. Għadu mhux iċċekkjar tal-ftehim. Int trid jaqblu li l- termini u kundizzjonijiet. Allura għaliex? Jekk konna diġà ippreżenta li hemm mod, u konna mitluba int fl pset seba biex tiskopri żball kondizzjonijiet bħal dan server-side, għaliex għandi jolqot ukoll tagħmel dan fil JavaScript? X'hemm argument favur żżid dak int ser tara kif some-- hemm kumplessità addizzjonali. Forsi m'hemmx rasu. Liema jista 'jkun? UDJENZA: [inaudible]. DAVID Malan: Oh, interessanti. Jisfrutta potenzjali. Hekk żgur, jekk int ma tqandil jintuza mill-utent żbaljata li kbir, forsi dan kollu l-aħjar jekk lanqas ma jilħqu server tiegħek. Nixtieq timbotta lura hemmhekk u jiġifieri, inti għandek probabbilment jiffissaw kemm dawk il-problemi. Imma dak li ġusta. X 'iktar? UDJENZA: [inaudible]. DAVID Malan: Yeah. Dan il-kodiċi, kif għidna qabel, huwa interpretat fuq il-naħa tal-klijent. Ma jolqot is-server, li jfisser li ma impatt tagħbija jew il-kapaċità tal-server. U issa, għall ftit għalija qodma, dan m'għandux effett sinifikanti għaliex għandi utent wieħed dritt issa. Imma jekk int xi website daqs deċenti, speċjalment l-akbar, bħal Facebook, l-aktar inti tista 'żżomm nies off ta 'server tiegħek l-aħjar għaliex server, naturalment, biss għandha ammont finit ta 'RAM, numru finit ta 'gigahertz, numru finit ta 'affarijiet hija tista 'tagħmel kull unità ta' ħin. Mela jekk ikun hemm aktar nies fl id-dinja laqtu server tiegħek, aċċidentalment qtugħ b'mod żbaljat, biss kif ukoll jekk inti tista 'żżomm li tagħbija off server tiegħek. Plus, speċjalment fuq mobbli device-- jekk inti stajt qatt log fis my.harvard jew Netid Yale jew bħalhom, hemm dan l-latency ma 'lott ta' websajts bħal dik li biha li tieħu, bħal, kkritikat tieni jew tnejn kultant. U mbagħad, Alla tiegħi, jekk inti mistype, imbagħad inti għandek hit lura u jerġa 'jagħmel dan. Allura hemm latency, speċjalment fuq konnessjonijiet tan-netwerk bil-mod. Iżda JavaScript, minħabba din tmur fuq il-klijent u ma teħtieġx li jmorru quddiem u lura madwar internet potenzjalment kajman konnessjoni, inti tista 'tikseb feedback kważi istantanja. Mela ejja nħarsu lejn din. Let me jiftħu-forma 0 u tħares lejn il-HTML hawn. U ejja biss tara x'inhu għaddej. Din hija forma li azzjoni hija register.php. Jien biss jużaw tikseb so li I tista 'tara l-URL. Iżda għal passwords, aħna'd żgur tixtieq li jbiddlu dan li post fir-realtà. Hawn qasam input tat-test tip. Hawn input ieħor qasam tat password tip. Hawnhekk huwa, jekk inti stajt qatt rat, input ta 'Checkbox tip. Iżda hemm ebda JavaScript hawn tkun xi tkun. Dan huwa biss HTML li tmur għall register.php. Iżda fil-verżjoni waħda, fejn I bdiet tikseb dawk pop-ups, ejja ara dak li attwalment jiġri hawn. Fil-verżjoni wieħed, dak Jien ser see-- I ħasbu I tista stall biżżejjed bil-kliem biżżejjed, imma I dam barra. Fil-verżjoni one-- hemm immorru. Fil-verżjoni wieħed, avviż-following-- u mhuwiex l-aħjar implimentazzjoni, imma hija l-ewwel tiegħi. Avviż li taħt il- forma, għandi tag iskrittura. U tag iskrittura ifisser, ħej, browser, hawn taqa xi kodiċi fil- tipikament, JavaScript. U issa, avviż dak li qed nagħmel. Fuq line-- nista bilkemm aqra it-- linja 32, li jgħid, var form-- hekk tagħti me varjabbli imsejħa formola. U mbagħad jiksbu document.getElementId ta '"reġistrazzjoni." X'inhi din? Well, let me kontrina up here. U avviż, ah, I taw l-element formola idea arbitrarja iżda deskrittiv ta 'reġistrazzjoni. Allura dan jagħti me a varjabbli li tippermetti me li grab dak node, li rettangolu fil-siġra imsejħa formola. mezzi form.onsubmit, ħej browser, tirreġistra avveniment semmiegħ fuq din il-formola. Fi kliem ieħor, meta din il-forma hija sottomessa, jesegwixxi-kodiċi li ġej. Dan ma jeħtieġx isem għaliex għaliex għandek bżonn tkun taf l-isem? Inti biss jeħtieġ li tkun taf dak li tesegwixxi, għalhekk jimmiraw huwa ta 'funzjoni anonimu jew lambda. U dik il-funzjoni hija kollha ta 'dawn il-linji hawn. U issa, li tkun onest, anki jekk inti jista 'ma qatt bil-miktub JavaScript qabel, huwa biss C u PHP loġika. Mela jekk form.email.value == "" - hekk jekk l-qasam email huwa vojt, Yell fil-utent ma "Int trid jipprovdu l-indirizz email tiegħek. " Else jekk form.password.value huwa Yell vojt fil-utent, "Int trid tipprovdi password tiegħek." Aktar interessanti loġikament, jekk form.password.value ma form.confirmation.value-- ugwali fejn ma konferma jiġu minn? Let me kontrina. Well, I sejjaħ dan input qasam hawn password. U jien sejjaħ dan wieħed hawn konferma. I jistgħu qalu li din password tnejn jew xi ħaġa oħra. Jien biss loġikament verifika li dawn tnejn huma l-istess. Else-- jirriżulta dan huwa s-Sur Boole again-- valur Boolean, il-kaxxa verifika. Mela jekk jien ngħid, exclamation point-- jekk le form.agreement.checked, Yell fil-utent kif ukoll. Allura dan sintassi tkun taf tara huwa komuni ħafna fl JavaScript, fejn inti għandek dan notazzjoni bit-tikek. Tibda ma 'xi oġġett hawn. Inti adsa fil-fond għal li proprjetà bħal password. U allura inti tikseb mill-valur attwali tiegħu. U għal darb'oħra, hawnhekk huwa l-input. Hawn hu l-password isem. U l-valur tagħha huwa x'ikun l- bniedem fil-fatt ittajpjat fil. Allura fil kollha ta 'dawn każijiet, I lura falza. Iżda jekk le, I-ritorn veru. U hekk issa naraw użu konvinċenti ta 'meta inti tirritorna falza li twaqqaf dak l-utent tal tagħmel u jagħmel lilu jew lilha jagħżlu għal darb'oħra jew tip ġdid. Inkella, nerġgħu lura veru. U let me jintroduċu wieħed varjant l-ieħor ta 'dan biss għal żerriegħa xi ftehim tiegħu. Ukoll, fil-verżjoni 2 ta 'dan, il-forma-2-- I ser tagħmel dan b'mewġa ta 'idejn. Dan huwa, għal dawk kurjuż, il-verżjoni jQuery, dawk minnkom li tista 'tixtieq li dabble f'dak librerija partikolari. Imma ejja start-- u xi mistoqsijiet? Let me nieqaf għal mument minħabba li kien mgħaġġel u ħafna. Imma l-ħaġa sbieħ hawnhekk hija li kollha tal-kodiċi hija pjuttost l-istess. L-għalf ġdid huwa dak li huwa l-dom? Liema huma dawn rettangoli? Liema huma dawn in-nodi? X'hemm funzjoni anonimu? X'hemm avveniment handler? Iżda Thankfully, ħafna ta 'dan huwa biss ċirku sħiħ minn, ngħidu aħna, żero ġimgħa. Kull dritt. Allura xi ħaġa ftit aktar interessanti? Ukoll, qabel kollox, let me go quddiem u jiftħu Google Maps. U tkun taf avviż li għal mument, fuq it-tieni qasma, Avviż x'jiġri meta I ikklikkja mgħaġġel biżżejjed. U f'dan il-kuntest fil-Harvard huwa tant mgħaġġel li inti ma verament jindunax bih. Imma dak do you tip ta 'tip ta' tara jekk I ikklikkja u drag verament mgħaġġel? Dawk minnkom ħars online, jekk inti bil-mod dan l-veloċità 0.5x, inti tista 'tara dan aħjar. X'kien qed jiġri biss qabel I għafast u mkaxkra? Let me jippruvaw here-- let me do xi ħaġa oħra, bħal 90,210. Ejja ħa mmorru 'l bogħod. Dan kien verament mgħaġġel, wisq. Kif dwar Disney World? Hemm immorru. KOLLOX SEW. What did you tara għat-tieni qasma? Eżatt, bħal, kwadri, right? Placeholders għall-madum? Ukoll, x'inhu għaddej hawn? Google Maps huwa eżempju sabiħ ta ' din it-teknoloġija li sejjaħ Ajax. U dan huwa fejn aħna ser tibda jużaw l-JavaScript fil-partikolarment mod alluring. Lura fil-ġurnata, kien hemm din il-websajt imsejħa MapQuest. U jien messha ħadet screenshot ta 'dan mill-1990, fejn jekk int riedu ħarsa up here fuq il-mappa, inti litteralment ikklikkja vleġġa up fil-quċċata li wera inti kwadru differenti tal-mappa. Jekk int riedu jiċċaqalqu xellug, inti għafast vleġġa li wera inti kwadru differenti tal-mappa. U xi websites xorta tagħmel dan illum. Iżda anke MapQuest gotten aħjar, bħal Google Maps. Minflok, x'hemm aħjar dawn jiem huwa websajts li jużaw Ajax. AJAX-- inkella magħruf bħala Asynchronous JavaScript u XML, li huwa biss mod fancy ta 'tgħid teknoloġija jew teknika li jippermetti browser tuża JavaScript li jagħmlu talbiet HTTP addizzjonali wara l-paġna ġiet mgħobbija. Allura dak li jfisser dan? Ukoll, ikun xorta tal annoying fil Gmail jekk kull darba li inti riedu biex jiċċekkjaw mail tiegħek, kellek litteralment hit Control-R jew Kmand-R jew ikklikkja l-buttuna Reload u l-paġna darn kollu se jerġgħu jitgħabbew. Dritt? Ikun flash abjad probabbilment għat-tieni. Inti tara l-bar-progress stupid. U biss biex tara jekk għandek ġdid mail, il-paġna web kollu u l-URL li qed jkollok biex jerġgħu jitgħabbew. Iżda li mhux dak li jiġri fil Gmail. Dritt? Meta ikollok email ġdid fil Gmail, dak li jiġri fuq l-iskrin? Hija biss turi up, right? Hija biss magically jidher bħala ringiela ġdida fit-tabella. Li attwalment jinvolvi ammont deċenti ta 'kumplessità. Fil-fatt, jekk inti taħseb dwar din is-siġra, li anki jekk hija waħda sempliċi hawn, Gmail-- u I d jkollhom biex tfittex lejn il-kodiċi li sure-- probabbilment ikollu tabella HTML jew forsi lista unordered li jirrendi kull wieħed mill inboxes emails tiegħek bħala. U hekk jekk inti timmaġina dan hemm hija siġra fil-memorja meta int użu Gmail li jistenna tip ta 'tip ta' bħal dan, meta Google jirrealizza, ooh, ikollok email ġdid, ma jridu jinbnew l-siġra kollu. Pjuttost, trid issib l-node fil l-siġra li tirrappreżenta inbox tiegħek u biss daħħal node ġdid. Allura simili ħafna għall pset ħames, fejn inti kellhom daħħal lymph fis-tabella hash, bl-istess mod ma Google, permezz JavaScript kodiċi li kitbet, travers din is-siġra, figura fejn huwa dik il-parti inbox tat-tieqa, u mbagħad daħħal ringiela ġdida. U ringiela ġdida ifisser biss wieħed jew aktar lymph ġodda fil-siġra. U għalhekk Ajax hija din it-teknika li jippermetti eżattament dan. Ladarba inti ħadthom żar URL, madankollu crazy twil huwa, u ladarba l-paġna għandha ġie mgħobbi, inti tista 'xorta grab aktar data mill- internet-- jekk huwa email jew maduma ta 'map-- grab wara l-kwinti u mbagħad daħħalha fil-paġna tal- sabiex il-bniedem ma verament ikollhom jistennew għal dan. Facebook Messenger xogħlijiet bl-istess mod. Kwalunkwe numru ta 'websites-- oħra oh, fil-fatt, anke dan. I mean, dan huwa, franchement, tip ta ' annoying karatteristika dawn il-jiem. Jekk I tibda tiftix għal dan cats-- huwa tip ta 'utent esperjenza horrible. Hija biss jibda tiftix għalija. Ukoll dak li huwa dan isir? Il URL ma nbidlitx verament peress I bdiet ittajpjar. Imma x'inhu għaddej madwar l- wire-- OK, hmm interessanti. X'inhu għaddej madwar l- wajer hawn biss gets weirder. KOLLOX SEW. So let me go quddiem u jispezzjona element u jmorru l-tab Netwerk u jippruvaw jagħmlu dan teknika u inqas dwar qtates. Tip I kif, litteralment, qtates and-- dak li qed jiġri per-- Jien ma jmur biex ikklikkja dan. Kull dritt. Allura stabbiliti hawn, dak li qed jiġri kull time I tip karattru, apparentement? Bħal, livell baxx? Dak li qed jiġri ma 'kull wieħed minn dawk karattri Jien ittajpjar fuq tastiera tiegħi? Yeah? UDJENZA: [inaudible]. DAVID Malan: Eżattament. Kull wieħed minn dawk il-karattri hija ser Google, wieħed kull darba. Huma qegħdin jibnu sensiela fuq is-server tagħhom li tirrappreżenta kollox Stajt ittajpjat fil s'issa. U kull darba I tip karattru ieħor, jużaw zalza sigrieti tagħhom ta ' tfittxija algoritmu u l-figura, ma hu jfissirx din il-paġna qtates jew din il-paġna qattus jew bħalhom? Allura f'ċertu sens, huwa jipprovdi me ma ' esperjenza aħjar li jien ma anki bżonn li jiġi kkompletat ħsieb tiegħi. U fil-fatt, huwa utli ħaġa, AutoComplete b'mod ġenerali. Jekk algoritmi tagħhom huma tajbin biżżejjed u jekk tfittxijiet tiegħi huma ovvji biżżejjed, I ma jkollhomx biex tip-kelma sħiħa. Huma qed tmur biex tell me dak li huwa Jien attwalment tfittex. Allura dak Google jitlob instant tfittxija huwa biss bl-użu Ajax, użu kodiċi li jippermettilhom li jitolbu kontenut addizzjonali permezz ta 'web browser wara l-kwinti li jużaw dan lingwa ġdida, JavaScript. Allura aħna għandna minuti koppja xellug. U let me sejħa up buddy tiegħi Colton up fuq l-istadju, peress li deher aħħar darba partikolarment gost li tintroduċi teknoloġija li xi wħud minnkom esprimew interess fl għal proġetti finali. Ħsibna li d jkun gost li jġibu up voluntier, għalkemm, illum biex turi li inti żieda għall dan li jippermetti you-- yeah, Rajt dan idejn ewwel. Come fuq up. Isir ħafna tajjeb. Xogħol tajjeb. Jien ser Dan il-proġett fuq l-iskrin fi ftit mument. X'hemm isem tiegħek għal kulħadd? EFA: Ninsab Efa. DAVID Malan: Etha? EFA: Efa. DAVID Malan: Efa? EFA: Yeah. DAVID Malan: Nizza biex tara int. Kull dritt. Let me nikseb dan lesta. Come fuq matul il nofs ma Colton hawn. Liema Colton għandha f'idejh illum huwa kontroll remot. Allura minflok biss joqgħod hemm fi dinja tridimensjonali ifittxu madwar kif Colton ma, issa Efa jista fil-fatt jimxu madwar billi tmur up, down, xellug, u d-dritt bħal Nintendo jew Xbox kontrollur. EFA: jien ser jaqgħu barra mill-istadju. DAVID Malan: I se stand madwar hawn. Iżda dan huwa riskju. KOLLOX SEW. Allura aqbad u mqiegħda dawk fuq. Let me imorru quddiem u jaqilbu għall-iskrin hawn. Let me dim-dwal. U Colton, let me jaslu stand li jmiss lilek. Do inti tixtieq li tispjega hawn bl-mic dak li aħna qed tagħmel? Hawnhekk inti tmur. COLTON: Sure. Allura issa dritt aħna qed tagħbija l-Oculus, I raden operating-- ma joperawx sistema, iżda l-programm prinċipali, fejn inti tista 'aċċess l-logħob u apps li huma fil-librerija tiegħek. Allura issa dritt, għandu jkun hemm tisfrutta l-touchpad biex tibda. Touchpad għaddej biex tkun fuq il- naħa tal-lemin tal-widna. Allura aqbad u tap-- EFA: Oh, il-bniedem. DAVID Malan: Yeah, hemm inti tmur. Il-kwalità Efa huwa jara huwa ta 'kwalità ħafna ogħla. Dan huwa biss il Wi-Fi hawn. COLTON: Allura dak li int tmur jridu jagħmlu hu li tħares lejn il-quċċata lemini tal-iskrin. Yep, din il-logħba fuq il-lemin fuq nett. U allura meta inti qed tagħżel dan, taptap il-touchpad mill-ġdid. I think Dreadhalls tagħha. U allura hawnhekk hija a-- hawn, let me iżommu nuċċalijiet tiegħek għalik. So I biss taw lilu kontrollur. Allura issa huwa jista 'jikkontrolla l-logħba. Huwa jista 'timxi madwar u għalf bħal dik. Allura aqbad u jfittxu up fil-wiċċ. Għandek tara New Game. Allura aqbad u inti tista 'tagħmel dan. Issa, inti għandek tkun kapaċi biex jikkontrollaw ruħek mal-kontrollur, kif ukoll, hekk kif il-logħba tagħbijiet up here. Dan jista 'jkun ftit scary. EFA: Issa inti tgħidli. KOLLOX SEW. COLTON: Kull dritt. Allura tikkonferma li inti tista 'timxi madwar. KOLLOX SEW. Inti tista 'timxi madwar. Perfect. Mela jekk inti tfittex l isfel, għandek mappa. Mappa turi fejn int. Tista 'tfittex madwar il-kamra. Tista kompletament jdur. Yeah, eżattament. Jdur. Sabiex tfittex ix-xellug tiegħek. Naħseb li hemm xi ħaġa li tista pick up fuq kanna fil-kamra. EFA: Kif nista 'nikseb il- Mappa barra mill-mod? COLTON: Ħares up. Biss ħarsa up. Kull dritt. Hemm inti tmur. Issa aqbad u biss jdur. Sabiex tfittex farther ix-xellug tiegħek. Żomm miexja xellug. Ikompli jfittex xellug. Jibqgħu għaddejjin. Yeah. EFA: Oh, li mod. COLTON: Yeah. Walk lejh mal-kontrollur. Hemm inti tmur. Issa għandha tgħid pick it up. Hemm inti tmur. Pick it up. Kull dritt. Issa, ejja tikseb minn din il-kamra. Jimxi 'l quddiem u jimxu għal dak il-bieb. Allura int ser hold-- jgħid żomm il-buttuna seħħ hija miftuħa. Allura aqbad u żomm il-buttuna. Yep, furzar hija miftuħa. Kull dritt. Xogħol tajjeb. Issa aħna qed mixi barra mill-kamra. Hekk jien ser tħalli l-bqija up lilek u tara dak li inti taf. EFA: Jien ma jmur fil-kamra dlam. Oh, stenna. Issa I ikollhom imorru r-sala dlam? OK, jien ser lura [inaudible]. COLTON: Kull dritt. Xi punti aktar biex pick up. Id-Dehra xi muniti. Li pick lock. Mela jekk inti ssib msakkra bieb, inti tista 'tuża dan. Inti jibża? EFA: Għadha mhix. COLTON: OK. Pretend-- yeah. Just nippretendu int attwalment permanenti hemmhekk. U jekk inti mbagħad around-- inti stajt ltqajna biex jidraw lilha. Iżda dan jagħmel sens. DAVID Malan: U filwaqt Efa tkompli play, peress stajna nagħmlu dan ġurnata kollha, nistgħu kollha toe ponta out here. Iżda aħna ma jkollhom żewġ pari oħra, jekk inti tixtieq li toħroġ u play. Inkella, se naraw inti jmiss nhar l-Erbgħa. Grazzi għal voluntier tagħna llum. [Applause] [MUSIC - "TEMA Seinfeld"] SPEAKER 1: Well, jien tqegħid PL ġdid impunjazzjoni fuq. I biss biddel il-OLPF-- SPEAKER 2: Allura dak li eżattament huma inti tagħmel? SPEAKER 1: Well, kull wieħed mill these-- hawn, I ser nuruk dan wieħed fil hawn. Tista 'tara dan id-dritt hawn. SPEAKER 3: Naħseb jien tajba ma 'dawn. Inti tixtieq ftit aktar? SPEAKER 4: Le, jien tajba. [Inaudible]. SPEAKER 3: Le, [inaudible]. Għandhom xi. SPEAKER 1: kulur differenti. SPEAKER 2: OK. SPEAKER 1: Allura finalment dak li ma huwa taġġusta l-kulur of--