1 00:00:00,000 --> 00:00:00,500 2 00:00:00,500 --> 00:00:10,960 [MUSIK SPELA] 3 00:00:10,960 --> 00:00:12,960 ROGER ZURAWICKI: Hej, min namn är Roger Zurawicki, 4 00:00:12,960 --> 00:00:16,410 och jag kommer att täcka den CS50 Meteor seminariet. 5 00:00:16,410 --> 00:00:21,520 Meteor är en ny ram ägnas åt den nya typ av webb, 6 00:00:21,520 --> 00:00:25,220 inte PHP göra framställningar fram och tillbaka typ 7 00:00:25,220 --> 00:00:29,070 av web vi såg i PHPP set, men ju mer dynamiska JavaScript 8 00:00:29,070 --> 00:00:31,370 delar av banan. 9 00:00:31,370 --> 00:00:36,260 Saker Meteor kan göra inkluderar Live Uppdatering 10 00:00:36,260 --> 00:00:42,380 och omedelbart kommunicera mellan användare av samma webbplats. 11 00:00:42,380 --> 00:00:46,420 >> För detta seminarium har vi kod värd på min GitHub. 12 00:00:46,420 --> 00:00:49,690 Du kan gå till denna URL och hämta den. 13 00:00:49,690 --> 00:00:53,085 Om du vet hur man använder Git, Du kan klona förvaret. 14 00:00:53,085 --> 00:00:55,460 Om du inte vet hur man använder Git eller har inte använt GitHub, 15 00:00:55,460 --> 00:00:57,030 det är helt bra. 16 00:00:57,030 --> 00:01:00,480 Jag kommer att visa dig riktigt snabbt hur vi kan gå till GitHub, 17 00:01:00,480 --> 00:01:03,604 och det finns en möjlighet att ladda ner en zip rätt där. 18 00:01:03,604 --> 00:01:06,770 När du laddar ner den här katalogen, du kan komma igång att spela med vår kod. 19 00:01:06,770 --> 00:01:10,200 20 00:01:10,200 --> 00:01:13,190 >> Mer information om Meteor kan hittas på meteor.com. 21 00:01:13,190 --> 00:01:16,580 I seminariet mappen jag faktiskt har några Meteor projekt som vi kan använda. 22 00:01:16,580 --> 00:01:20,380 23 00:01:20,380 --> 00:01:26,400 En av de mappar som vi har i vårt seminarium projektet är todos app. 24 00:01:26,400 --> 00:01:28,780 Så om jag går in i det jag, ha Meteor installerad. 25 00:01:28,780 --> 00:01:35,690 Så för att köra det, jag behöver bara skriva Meteor, och Meteor kommer att installera. 26 00:01:35,690 --> 00:01:38,310 Som ni ser, vi måste se till att vi installerade Meteor. 27 00:01:38,310 --> 00:01:40,562 Så jag ska bara kör det en gång till 28 00:01:40,562 --> 00:01:42,520 att se till att Meteor är korrekt installerad. 29 00:01:42,520 --> 00:01:46,370 30 00:01:46,370 --> 00:01:48,450 >> Medan jag har Meteor installation, kan jag visa dig 31 00:01:48,450 --> 00:01:53,760 vissa levande demos av Meteor sajter går live just nu på internet. 32 00:01:53,760 --> 00:01:57,990 Jag har en demo av vår app. 33 00:01:57,990 --> 00:02:00,740 Du kan komma åt den på följande webbadress. 34 00:02:00,740 --> 00:02:06,350 Detta är den att göra app som vi har i vår seminariekatalog. 35 00:02:06,350 --> 00:02:09,940 Webbadressen för detta är rozu-rabbit.meteor.com. 36 00:02:09,940 --> 00:02:14,782 Du ser att Meteor kommer faktiskt värd för dina Meteor projekt gratis. 37 00:02:14,782 --> 00:02:17,490 Och i slutet av seminariet, du kommer att kunna göra detta. 38 00:02:17,490 --> 00:02:20,550 39 00:02:20,550 --> 00:02:22,160 >> Detta är en att göra-lista app. 40 00:02:22,160 --> 00:02:27,740 Och du kan logga in, skapa konton och lägg uppgifter. 41 00:02:27,740 --> 00:02:30,020 Du kan skapa ett konto som så. 42 00:02:30,020 --> 00:02:33,050 43 00:02:33,050 --> 00:02:35,850 Och nu, när du har ett konto, kan du lägga till uppgifter. 44 00:02:35,850 --> 00:02:42,780 Till exempel, en av de uppgifter jag kan behöva gå plocka upp min tvätt. 45 00:02:42,780 --> 00:02:45,160 Och om du är på detta site på nätet, kommer du 46 00:02:45,160 --> 00:02:49,790 faktiskt se denna uppgift på datorn i realtid. 47 00:02:49,790 --> 00:02:53,760 >> Jag kan visa dig en snabb demo av detta genom att öppna Rozu-kanin 48 00:02:53,760 --> 00:02:56,700 i en annan flik med samma webbadress. 49 00:02:56,700 --> 00:03:00,360 Och vi ser att samma uppgifter kommer upp. 50 00:03:00,360 --> 00:03:02,240 Vi kan också köra det i en annan webbläsare. 51 00:03:02,240 --> 00:03:03,420 Säg jag kör den i Safari. 52 00:03:03,420 --> 00:03:04,720 Det sätt som vi är inte inloggad. 53 00:03:04,720 --> 00:03:07,750 54 00:03:07,750 --> 00:03:11,060 Så vi har samma Meteor app, och när den laddar, 55 00:03:11,060 --> 00:03:13,910 vi får se samma uppgifter vi gjorde i den första. 56 00:03:13,910 --> 00:03:16,710 Som ni kan se, jag är inte inloggad här. 57 00:03:16,710 --> 00:03:20,000 Och när publik kontrollerar data, den uppdaterar på alla webbläsare 58 00:03:20,000 --> 00:03:20,910 samtidigt. 59 00:03:20,910 --> 00:03:23,740 Detta är en av de riktigt häftiga funktioner om Meteor. 60 00:03:23,740 --> 00:03:27,700 Med nästan inget arbete, du har en levande uppdatering app 61 00:03:27,700 --> 00:03:31,240 att ändringar på alla dina enheter på en gång. 62 00:03:31,240 --> 00:03:36,690 >> Om jag kontrollera kryssrutan här i min att göra-lista, kommer vi att ha, 63 00:03:36,690 --> 00:03:41,230 i min andra Chrome, objektet prickas av. 64 00:03:41,230 --> 00:03:42,605 Och detta händer omedelbart. 65 00:03:42,605 --> 00:03:46,340 66 00:03:46,340 --> 00:03:47,280 Okej. 67 00:03:47,280 --> 00:03:52,730 Så det ser ut som Meteor Installationen är klar nu. 68 00:03:52,730 --> 00:03:57,000 Så nu ska vi gå tillbaka till todos app och köra detta lokalt. 69 00:03:57,000 --> 00:04:01,599 >> Om du har en Meteor projekt, kan du bara köra det med kommandot Meteor. 70 00:04:01,599 --> 00:04:03,640 När du gör detta, Meteor kommer att göra vissa förberedelser 71 00:04:03,640 --> 00:04:06,120 att se till att alla din kod är i schack. 72 00:04:06,120 --> 00:04:12,440 Och då det kommer att säga att det Projektet är redo att serveras. 73 00:04:12,440 --> 00:04:17,750 Du kan behöva att låta din brandvägg, om din dator blockerar dig. 74 00:04:17,750 --> 00:04:22,440 >> Så vad Meteor säger mig just nu är att på den här webbplatsen 75 00:04:22,440 --> 00:04:26,100 lokal till min dator, kan jag se vad detta Meteor projektet är. 76 00:04:26,100 --> 00:04:29,290 Notera att just nu, är min app inte är tillgängliga för internet. 77 00:04:29,290 --> 00:04:35,170 Vi täcker hur man kan föra din Meteor app till en levande plats lite senare. 78 00:04:35,170 --> 00:04:40,510 Så jag ska bara kopiera detta URL nu och gå in i Google Chrome. 79 00:04:40,510 --> 00:04:42,600 >> Och detta är att göra lista från exemplet. 80 00:04:42,600 --> 00:04:46,080 Du kan se att de genomfört några fler funktioner här. 81 00:04:46,080 --> 00:04:49,210 Vi har olika flikar, vi har samma konto funktioner, 82 00:04:49,210 --> 00:04:52,141 och vi kan lägga till nya listor. 83 00:04:52,141 --> 00:04:54,140 Nu, en av de riktigt cool funktion om Meteor 84 00:04:54,140 --> 00:04:57,450 är att det inte bara kan detta arbeta på din webbläsare, 85 00:04:57,450 --> 00:05:00,030 men du kan också skapa infödda iPhone och Android 86 00:05:00,030 --> 00:05:02,990 program via ett verktyg som kallas PhoneGap. 87 00:05:02,990 --> 00:05:06,740 >> Så vissa projekt kommer förkonfigurerad för löpning 88 00:05:06,740 --> 00:05:08,700 på iOS, som denna todos app. 89 00:05:08,700 --> 00:05:14,780 Så allt jag behöver göra för att köra den i iOS är typ Meteor, springa, och sedan iOS. 90 00:05:14,780 --> 00:05:17,540 Och när jag gör det, Meteor kommer att förbereda paketet igen. 91 00:05:17,540 --> 00:05:21,670 Och sedan, när det är klart, det ska ladda iOS simulatorn på mitt kommando. 92 00:05:21,670 --> 00:05:24,745 Anmärkning Du kan bara köra iOS appar om du har en Mac-dator. 93 00:05:24,745 --> 00:05:27,650 94 00:05:27,650 --> 00:05:30,730 Du kan köra dina program på Android på alla plattformar. 95 00:05:30,730 --> 00:05:34,070 96 00:05:34,070 --> 00:05:38,290 >> Så nu kan du se att min iPhone simulatorn kom upp på min skärm. 97 00:05:38,290 --> 00:05:40,370 Och på bara ett ögonblick, det ska ladda med appen. 98 00:05:40,370 --> 00:05:46,070 99 00:05:46,070 --> 00:05:48,490 Om vi ​​gör det bara lite mindre för att passa på skärmen, 100 00:05:48,490 --> 00:05:50,780 Vi ser att vi har vår iPhone app. 101 00:05:50,780 --> 00:05:53,220 Och precis så vi gör inte blir förvirrade, låt oss göra 102 00:05:53,220 --> 00:05:59,790 säker på att vi är på samma hemsida, den lokala värden 3000. 103 00:05:59,790 --> 00:06:03,490 >> Så här är ett exempel av Meteor app jag har, 104 00:06:03,490 --> 00:06:08,770 den todos appen körs både på en telefon och på en webbläsare. 105 00:06:08,770 --> 00:06:10,770 Och när jag byter grejer i webbläsaren, 106 00:06:10,770 --> 00:06:12,675 den omedelbart går till telefonen. 107 00:06:12,675 --> 00:06:16,500 Och jag kan ta bort något på telefonen, och den förändras i webbläsaren. 108 00:06:16,500 --> 00:06:21,050 >> Nu, normalt för att skapa ursprungliga telefon app för iOS eller Android, 109 00:06:21,050 --> 00:06:26,090 du behöver veta antingen Java eller Mål C. Den teknik Meteor användningsområden 110 00:06:26,090 --> 00:06:29,240 att tillåta JavaScript för att fungera som din app heter PhoneGap. 111 00:06:29,240 --> 00:06:31,320 Vad appen väsentligen är är en webbläsare. 112 00:06:31,320 --> 00:06:34,500 Och Meteor hanterar all de knepiga delarna inblandade 113 00:06:34,500 --> 00:06:39,820 för att föra denna webbläsare till din iPhone eller Android-enhet. 114 00:06:39,820 --> 00:06:42,210 Du kan se att det Användargränssnittet är slät, 115 00:06:42,210 --> 00:06:45,290 och det ser ut och känns mycket ungefär som en infödd app. 116 00:06:45,290 --> 00:06:48,620 Märker att om jag går till hemmet skärmen nu, får jag också en ikon. 117 00:06:48,620 --> 00:06:50,880 Detta är inte en webbplats som du hittar i Safari. 118 00:06:50,880 --> 00:06:51,860 Detta är dess egen app. 119 00:06:51,860 --> 00:06:54,130 Du kan installera och bort den om du vill. 120 00:06:54,130 --> 00:06:59,500 121 00:06:59,500 --> 00:07:04,436 >> Vi kan kortfattat visa dig vad koden för denna typ av todos appen ser ut. 122 00:07:04,436 --> 00:07:08,260 Om du tittar i todos mappen du kommer att se att det finns många mappar. 123 00:07:08,260 --> 00:07:11,440 Men under loppet av seminariet, vi ska 124 00:07:11,440 --> 00:07:14,780 förstå vad varje mapp används för. 125 00:07:14,780 --> 00:07:17,830 Låt oss gå in i terminalen så vi kan se filerna lite bättre. 126 00:07:17,830 --> 00:07:20,410 >> Jag ska trycka Kontroll C för att stoppa servern, 127 00:07:20,410 --> 00:07:22,770 och nu är jag tillbaka i todos app. 128 00:07:22,770 --> 00:07:26,660 Jag har olika mappar här, som klient mapp, mappen servern. 129 00:07:26,660 --> 00:07:30,500 Och dessa mappar betyder helt enkelt att allt i klientmappen 130 00:07:30,500 --> 00:07:32,630 blir körs på din webbläsare. 131 00:07:32,630 --> 00:07:35,530 Allt i en mapp server blir exekveras på en server. 132 00:07:35,530 --> 00:07:38,100 >> Vad jag vill peka ut är det vad vi hade 133 00:07:38,100 --> 00:07:42,140 när vi hade vår telefon igång och vår webbläsare, dessa var kunder. 134 00:07:42,140 --> 00:07:45,730 Men vad som körs i en terminalen, det är servern. 135 00:07:45,730 --> 00:07:48,710 Vi har andra mappar, som lib, vilket är biblioteks kod, 136 00:07:48,710 --> 00:07:51,050 som din hjälpare funktioner, som du kan 137 00:07:51,050 --> 00:07:53,710 använda på både klient och server. 138 00:07:53,710 --> 00:07:55,820 Och så har du ett offentligt mappen och resurser 139 00:07:55,820 --> 00:07:59,310 mapp som krävs för att få dina bilder och annat CSS laddad. 140 00:07:59,310 --> 00:08:02,630 141 00:08:02,630 --> 00:08:09,360 >> Om du har Meteor installerat, kommer vi fortsätta med handledning för Meteor. 142 00:08:09,360 --> 00:08:12,790 Du kan gå till denna URL, meteor.com/install, 143 00:08:12,790 --> 00:08:17,990 att få kommandorad som jag visade dig som installerar Meteor. 144 00:08:17,990 --> 00:08:20,240 Vi kommer att gå igenom den första några steg för att få en bättre 145 00:08:20,240 --> 00:08:22,760 känner hur du installerar Meteor. 146 00:08:22,760 --> 00:08:28,000 >> Men först, jag tycker det är viktigt att vi igenom lite av JavaScript. 147 00:08:28,000 --> 00:08:32,360 För att visa er några exempel på hur vår C kunskap kan översättas 148 00:08:32,360 --> 00:08:34,950 till JavaScript, jag har skapade några exempel. 149 00:08:34,950 --> 00:08:36,940 De är i js katalogen. 150 00:08:36,940 --> 00:08:41,750 Så om i seminarierna mappen du titta, det finns en mapp som heter js. 151 00:08:41,750 --> 00:08:44,540 Och här har vi några exempel. 152 00:08:44,540 --> 00:08:50,120 >> Vi öppnar upp den första exempel och ser mycket snabbt. 153 00:08:50,120 --> 00:08:53,980 Vad vi ser är din standard hallå världen kommandot. 154 00:08:53,980 --> 00:08:56,520 Du märker i C som du har en hel del linjer. 155 00:08:56,520 --> 00:09:00,490 Och som CS50 eleverna vet, vi behöver en huvudfunktion, 156 00:09:00,490 --> 00:09:05,730 och vi måste ha med standarden I / O-bibliotek för att ringa printf. 157 00:09:05,730 --> 00:09:09,320 >> Låt oss titta på hur JavaScript jämför. 158 00:09:09,320 --> 00:09:11,560 Jag ska öppna ex1.js. 159 00:09:11,560 --> 00:09:14,650 Kommenterade ut är vad C-kod skulle se ut, 160 00:09:14,650 --> 00:09:17,550 och linjen nedan är alla du behöver för att köra i Node. 161 00:09:17,550 --> 00:09:20,452 Du behöver inte en huvudfunktion, du behöver inte innehålla några filer, 162 00:09:20,452 --> 00:09:21,660 och du behöver inte gå tillbaka. 163 00:09:21,660 --> 00:09:23,810 Du ringer bara console.log. 164 00:09:23,810 --> 00:09:26,370 Detta motsvarar din printf. 165 00:09:26,370 --> 00:09:29,310 >> Och den får samma argumenten printf skulle. 166 00:09:29,310 --> 00:09:33,870 Och för att köra det, istället för att köra gör ex1, 167 00:09:33,870 --> 00:09:38,930 du skulle bara ringa Nod ex1.js. 168 00:09:38,930 --> 00:09:41,830 Du skriver Node och sedan filen, och det blir köras. 169 00:09:41,830 --> 00:09:43,580 Det blir inte kompileras. 170 00:09:43,580 --> 00:09:45,970 JavaScript är ett tolkat språk. 171 00:09:45,970 --> 00:09:49,150 Så det behöver inte vara sammanställt innan det körs. 172 00:09:49,150 --> 00:09:53,450 Om jag ville springa ex1.c, Jag måste göra det först, 173 00:09:53,450 --> 00:09:59,160 och då kan jag köra körbara för att få samma utgång. 174 00:09:59,160 --> 00:10:02,460 >> Låt oss snabbt täcka vissa andra JavaScript koncept. 175 00:10:02,460 --> 00:10:04,490 Låt oss titta på exemplet två. 176 00:10:04,490 --> 00:10:14,690 I ex2.js i ex2.c, kan vi ser att vi har en del kod. 177 00:10:14,690 --> 00:10:16,550 Låt mig snabbt gå till en bättre textredigerare 178 00:10:16,550 --> 00:10:18,400 som kommer att visa dessa nya linjer lite bättre. 179 00:10:18,400 --> 00:10:21,760 180 00:10:21,760 --> 00:10:22,380 Okej. 181 00:10:22,380 --> 00:10:24,190 Här har vi exempel 2.c. 182 00:10:24,190 --> 00:10:27,360 Här har vi olika typer att vi skriver ut ut. 183 00:10:27,360 --> 00:10:30,880 Och som vi vet, tar printf olika procentargument 184 00:10:30,880 --> 00:10:34,050 att få tillgång till olika delar av data. 185 00:10:34,050 --> 00:10:36,840 Om vi ​​vill skriva ut en sträng, kallar vi% s. 186 00:10:36,840 --> 00:10:40,390 Om vi ​​vill kalla en flytande punkt nummer, kallade vi% f. 187 00:10:40,390 --> 00:10:45,810 Och det finns inget enkelt sätt att ringa ett Boolean av dess sant eller falskt värde. 188 00:10:45,810 --> 00:10:50,760 Men om du använder% d, kan du få 0 eller 1 för falska och sanna. 189 00:10:50,760 --> 00:10:53,270 >> JavaScript är lite trevligare för oss. 190 00:10:53,270 --> 00:10:57,740 I JavaScript, låt oss titta på de få skillnader vi har i den här filen. 191 00:10:57,740 --> 00:11:05,790 Först märker du att vi i C måste initiera varje variabel med en typ. 192 00:11:05,790 --> 00:11:06,940 S är en röding stjärna. 193 00:11:06,940 --> 00:11:08,930 Det är en sträng, och det kan inte vara någon annan typ. 194 00:11:08,930 --> 00:11:10,450 N är en flottör. 195 00:11:10,450 --> 00:11:11,780 B är en Bool. 196 00:11:11,780 --> 00:11:14,220 >> Men i JavaScript, det finns dynamiska typer. 197 00:11:14,220 --> 00:11:16,400 Det innebär att du inte måste berätta JavaScript 198 00:11:16,400 --> 00:11:17,860 vilka typer dina variabler kommer att bli. 199 00:11:17,860 --> 00:11:22,730 Du säger bara var för rörlig, namnet av variabeln, och sedan dess värde. 200 00:11:22,730 --> 00:11:24,690 Så en var kan vara allt egentligen. 201 00:11:24,690 --> 00:11:25,640 Det kan vara en sträng. 202 00:11:25,640 --> 00:11:27,300 Det kan vara ett flyttal. 203 00:11:27,300 --> 00:11:28,560 Det kan vara ett tecken. 204 00:11:28,560 --> 00:11:31,250 Det kan vara en Boolean. 205 00:11:31,250 --> 00:11:34,380 Och konsolloggen fungerar lite annorlunda. 206 00:11:34,380 --> 00:11:37,340 Om du vill skriva ut ett nummer, ringa dig% d. 207 00:11:37,340 --> 00:11:41,740 Men de flesta värden kan vara tryckt som strängar bara fina. 208 00:11:41,740 --> 00:11:46,220 >> Låt oss köra detta i Nod för att se vad som skulle hända. 209 00:11:46,220 --> 00:11:51,880 Jag kan ringa Node ex2.js, och vi får printf 210 00:11:51,880 --> 00:11:56,870 med värden CS50, N som flyttalsnummer, 211 00:11:56,870 --> 00:12:00,620 och sedan B som Boolean konverteras till en sträng sant. 212 00:12:00,620 --> 00:12:03,830 Vad händer om vi gjorde exempel 2.c? 213 00:12:03,830 --> 00:12:09,630 Tja, vi har fortfarande en del fler populärare med printf. 214 00:12:09,630 --> 00:12:13,110 Observera att flyttal nummer måste formateras på rätt sätt, 215 00:12:13,110 --> 00:12:18,120 och att Boolean kan inte bara visas som sant eller falskt. 216 00:12:18,120 --> 00:12:18,620 Okej. 217 00:12:18,620 --> 00:12:22,680 Låt oss nu titta på exempelvis tre. 218 00:12:22,680 --> 00:12:26,470 I exempel tre, visar vi hur du skulle använda en for-loop. 219 00:12:26,470 --> 00:12:27,630 I själva verket är det väldigt enkelt. 220 00:12:27,630 --> 00:12:31,430 En av de fina sakerna JavaScript är att det är C baserat. 221 00:12:31,430 --> 00:12:33,920 Det innebär att en hel del av din kod kommer att se väldigt lika 222 00:12:33,920 --> 00:12:36,490 och känner mig väldigt mycket samma. 223 00:12:36,490 --> 00:12:39,220 I en for-loop, det enda som har verkligen förändrats här 224 00:12:39,220 --> 00:12:41,840 är istället för int i, har vi var i. 225 00:12:41,840 --> 00:12:45,470 Vi kan fortfarande tilldela den till värde noll, kontrollera att det är mindre än fem, 226 00:12:45,470 --> 00:12:49,390 och öka den med en med ++ operatören. 227 00:12:49,390 --> 00:12:56,286 Vi kallar console.log på i, och att kommer att skriva oss ett antal med varje rad. 228 00:12:56,286 --> 00:12:58,410 Låt oss köra det verkligen snabbt för att se vad det skriver ut. 229 00:12:58,410 --> 00:13:02,320 230 00:13:02,320 --> 00:13:03,880 Vi får ett nytt nummer i varje rad. 231 00:13:03,880 --> 00:13:06,920 En annan sak jag vill att du märka med console.log 232 00:13:06,920 --> 00:13:09,960 är att du inte behöver skriva snedstreck n för den nya linjen. 233 00:13:09,960 --> 00:13:12,480 Console.log skriver ut allt på en egen rad. 234 00:13:12,480 --> 00:13:14,585 Det är en trevlig funktion att JavaScript ger oss. 235 00:13:14,585 --> 00:13:18,440 236 00:13:18,440 --> 00:13:22,600 >> Nu ska vi öppna upp exempel fyra. 237 00:13:22,600 --> 00:13:28,710 I exempel fyra, först i C, Vi ringer några funktioner. 238 00:13:28,710 --> 00:13:33,290 Lägg märke till att vi måste förklara funktioner innan vi använder dem i huvud. 239 00:13:33,290 --> 00:13:37,250 Om vi ​​hade huvud först och lägg sedan och sedan högt, gör, 240 00:13:37,250 --> 00:13:39,540 klang, eller GCC skulle ge oss ett fel som säger 241 00:13:39,540 --> 00:13:41,060 att den inte vet vad högt är. 242 00:13:41,060 --> 00:13:42,780 Det vet inte vad add är. 243 00:13:42,780 --> 00:13:46,480 Så i C, måste du vara kräsen om i vilken ordning du ringa dina uppgifter. 244 00:13:46,480 --> 00:13:49,220 245 00:13:49,220 --> 00:13:51,310 >> Låt oss titta på hur du kan gör detta i JavaScript. 246 00:13:51,310 --> 00:13:56,060 Vi har olika filer eftersom det finns ett par olika sätt att göra detta. 247 00:13:56,060 --> 00:13:58,950 Ett sätt är ganska mycket en direkt översättning. 248 00:13:58,950 --> 00:14:02,180 Eftersom funktioner i C returtyper, och JavaScript 249 00:14:02,180 --> 00:14:05,210 inte riktigt vet eller vård om vilken typ du kommer tillbaka, 250 00:14:05,210 --> 00:14:06,300 du behöver inte skriva ett slag. 251 00:14:06,300 --> 00:14:08,100 Istället behöver du bara att skriva funktion, 252 00:14:08,100 --> 00:14:11,180 och allt är ganska ungefär samma som tidigare. 253 00:14:11,180 --> 00:14:14,630 >> När du har en variabel, som i lägga till, vi behöver bara skriva x och y. 254 00:14:14,630 --> 00:14:16,060 Vi behöver inte säga x är en int. 255 00:14:16,060 --> 00:14:18,940 Vi behöver inte säga y är ett int. 256 00:14:18,940 --> 00:14:21,030 Vi återkommer med samma syntax. 257 00:14:21,030 --> 00:14:24,230 För hög, vi förklarar det med fungera i stället för ogiltiga. 258 00:14:24,230 --> 00:14:26,110 Lägg märke till att om det är ogiltigt eller icke-tomrum, 259 00:14:26,110 --> 00:14:28,380 det är fortfarande alla samma funktion. 260 00:14:28,380 --> 00:14:32,440 Och vi helt enkelt inte sätta något i parentes, 261 00:14:32,440 --> 00:14:34,690 och det ser väldigt mycket ut som C-kod. 262 00:14:34,690 --> 00:14:37,460 Och nedan kan vi kalla det nedan. 263 00:14:37,460 --> 00:14:42,730 >> Om vi ​​tittar på exempelvis 4b, märker vi att jag har ändrat några saker. 264 00:14:42,730 --> 00:14:45,340 Det enda jag har ändrat verkligen är dock ordningen. 265 00:14:45,340 --> 00:14:47,340 Vi har samma funktioner, men nu är de 266 00:14:47,340 --> 00:14:52,200 förklarade efter att de har använts i console.log och högt på linjerna 18, 19. 267 00:14:52,200 --> 00:14:54,740 Om du gjorde det här i C, gör skulle kasta ett fel. 268 00:14:54,740 --> 00:14:56,070 Här fungerar det alldeles utmärkt. 269 00:14:56,070 --> 00:15:01,935 Och jag kan visa det här till dig av anropande knutpunkten på 4b exempel. 270 00:15:01,935 --> 00:15:05,350 271 00:15:05,350 --> 00:15:10,130 >> Ett annat sätt som vi kan kalla funktioner är genom att spara funktioner som variabler. 272 00:15:10,130 --> 00:15:13,790 Som jag sa, en variabel kan ha någon typ. 273 00:15:13,790 --> 00:15:16,720 En av typerna en variabel kan ha är en funktion. 274 00:15:16,720 --> 00:15:19,800 Så om du tittar på exempel 4c, vad jag har ändrat 275 00:15:19,800 --> 00:15:24,320 här är var till istället för funktions add. 276 00:15:24,320 --> 00:15:26,807 Och nu lägger motsvarar en funktion. 277 00:15:26,807 --> 00:15:28,140 Denna funktion här är anonym. 278 00:15:28,140 --> 00:15:33,346 Den har inget namn, så det är bara funktion och sedan parentesen. 279 00:15:33,346 --> 00:15:35,220 Syntaxen efter detta ändras inte, men du 280 00:15:35,220 --> 00:15:38,300 behöver hålla i minnet att du har en variabel som du är 281 00:15:38,300 --> 00:15:42,940 lagra funktionen i tillägget, och variabel som du lagrar i hög. 282 00:15:42,940 --> 00:15:47,620 >> Eftersom lägga och hög är nu variabler och inte fungerar, ändrar något. 283 00:15:47,620 --> 00:15:50,190 Detta är en vanlig bugg jag ser i en massa människors JavaScript, 284 00:15:50,190 --> 00:15:52,410 och något att tänka på. 285 00:15:52,410 --> 00:15:54,365 När jag kör detta, låt oss se vad som händer. 286 00:15:54,365 --> 00:15:57,410 287 00:15:57,410 --> 00:15:58,230 Jag får ett felmeddelande. 288 00:15:58,230 --> 00:16:01,000 Det säger odefinierad på denna punkt. 289 00:16:01,000 --> 00:16:03,520 Så det säger det vet inte vad tillägga är. 290 00:16:03,520 --> 00:16:06,010 >> Eftersom nu lägga är inte ett funktion, är att lägga en variabel. 291 00:16:06,010 --> 00:16:10,100 Och du har faktiskt inte gett lägga till ett värde men när du använt den. 292 00:16:10,100 --> 00:16:14,460 Detta leder oss till exempel 4d, där om du vill använda variabler som funktioner, 293 00:16:14,460 --> 00:16:17,210 du behöver bara se till att de få värdet innan de används. 294 00:16:17,210 --> 00:16:20,200 295 00:16:20,200 --> 00:16:23,420 >> Låt oss gå vidare till exempelvis fem då. 296 00:16:23,420 --> 00:16:27,390 Här talar vi om structs i C. I C, structs 297 00:16:27,390 --> 00:16:30,320 har denna fasta strukturen till dem eftersom du måste deklarera dem 298 00:16:30,320 --> 00:16:33,050 innan du använder den, och du säger att jag har en student, 299 00:16:33,050 --> 00:16:36,645 och varje elev har exakt ett namn, ett år, ett kön. 300 00:16:36,645 --> 00:16:37,770 Det måste ha dem alla. 301 00:16:37,770 --> 00:16:42,280 Det kan inte ha några andra värden, och de måste vara specifika typer. 302 00:16:42,280 --> 00:16:47,540 >> Då kan vi initiera struct i detta trevliga syntax 303 00:16:47,540 --> 00:16:49,470 eftersom den vet ordern. 304 00:16:49,470 --> 00:16:51,460 Så det vet att Roger är ett namn. 305 00:16:51,460 --> 00:16:54,060 Den vet att 2016 är en år och M är en genus 306 00:16:54,060 --> 00:16:58,200 eftersom vi fick höra det här Listan är en struct elev. 307 00:16:58,200 --> 00:17:01,607 Och sedan kan du skriva ut det, åtkomst s.name. 308 00:17:01,607 --> 00:17:03,690 Låt oss se hur vi skulle konvertera det till JavaScript. 309 00:17:03,690 --> 00:17:06,400 310 00:17:06,400 --> 00:17:09,790 Lägg märke till att s är nu en variabel, och det finns ingen typ. 311 00:17:09,790 --> 00:17:10,920 Det är bara en var igen. 312 00:17:10,920 --> 00:17:14,480 Eftersom det spelar ingen roll om det typ av denna variabel är en pekare, 313 00:17:14,480 --> 00:17:17,440 det är en struct, eller något annat. 314 00:17:17,440 --> 00:17:19,650 Vi har en något annorlunda syntax. 315 00:17:19,650 --> 00:17:21,890 Denna syntax är föremål syntax. 316 00:17:21,890 --> 00:17:24,400 >> Du kanske har sett det i JSON. 317 00:17:24,400 --> 00:17:27,780 JSON faktiskt står för den JavaScript Object Notation. 318 00:17:27,780 --> 00:17:31,240 Detta är hur du definierar objekt i JavaScript. 319 00:17:31,240 --> 00:17:34,500 Vi har en nyckel, vilken är det värde, som namn. 320 00:17:34,500 --> 00:17:37,680 Och vi ger det värden på den andra sidan av tjocktarmen. 321 00:17:37,680 --> 00:17:41,850 Och en sak att tänka på är att du behöver inte ha ett namn och ett år 322 00:17:41,850 --> 00:17:42,980 och ett genus för ett objekt. 323 00:17:42,980 --> 00:17:44,570 Ett objekt kan ha några värden. 324 00:17:44,570 --> 00:17:46,920 Det kan ha så många du vill. 325 00:17:46,920 --> 00:17:50,375 >> Vi kan använda dessa objekt i precis samma sätt som vi skulle använda en struct, s.name. 326 00:17:50,375 --> 00:17:53,810 327 00:17:53,810 --> 00:17:57,080 Vi kan köra det verkligen snabbt genom att göra nod exempel 5.c. 328 00:17:57,080 --> 00:18:00,320 329 00:18:00,320 --> 00:18:02,520 Vi kan faktiskt inte köra en C-fil i Node. 330 00:18:02,520 --> 00:18:03,654 Det vet inte vad C är. 331 00:18:03,654 --> 00:18:04,695 Det vet bara JavaScript. 332 00:18:04,695 --> 00:18:09,865 När vi kör ex5.js, får vi det värde, som vi förväntat. 333 00:18:09,865 --> 00:18:13,490 334 00:18:13,490 --> 00:18:15,980 >> Låt oss gå vidare till exempel sex. 335 00:18:15,980 --> 00:18:18,930 Här vill jag bara prata lite lite mer om JavaScript arrayer 336 00:18:18,930 --> 00:18:20,930 eftersom de är lite annorlunda än vad du är 337 00:18:20,930 --> 00:18:26,940 används i C. Arrayer är notated, inte med konsolerna som i C, 338 00:18:26,940 --> 00:18:28,640 med klammerparenteserna, men konsoler. 339 00:18:28,640 --> 00:18:32,150 Du kan ha en tom array, som arr i linje fyra. 340 00:18:32,150 --> 00:18:34,680 Du kan ha arrayer med flera värden. 341 00:18:34,680 --> 00:18:39,790 Och du kommer åt dem precis på samma sätt i C. 342 00:18:39,790 --> 00:18:42,990 >> Upp till rad sju, allt verkar ganska enkelt. 343 00:18:42,990 --> 00:18:45,390 En mindre skillnad är här på rad 10. 344 00:18:45,390 --> 00:18:48,620 Sättet du får en längd av en array är bara genom att ringa .length. 345 00:18:48,620 --> 00:18:50,620 En array kan faktiskt vara behandlas som ett objekt, 346 00:18:50,620 --> 00:18:54,960 och detta objekt har en längd fastighet att du ringer för att få längden på det. 347 00:18:54,960 --> 00:18:57,350 Lägg märke till att detta är annorlunda i C eftersom i C du 348 00:18:57,350 --> 00:19:01,600 måste veta längden av ditt objekt i förväg. 349 00:19:01,600 --> 00:19:04,700 >> Så en annan trevlig sak om arrayer är att du kan ha olika typer. 350 00:19:04,700 --> 00:19:07,470 Om du har en array i C, det är arrayer av ett specifikt värde, 351 00:19:07,470 --> 00:19:11,900 antingen en struct pekare eller flyter eller [OHÖRBAR]. 352 00:19:11,900 --> 00:19:13,700 Här kan du ha olika värden. 353 00:19:13,700 --> 00:19:17,560 Jag hade först ett flyttal, sedan en Boolean, sedan en annan heltal. 354 00:19:17,560 --> 00:19:19,670 Och faktiskt, kan de ändra typer också. 355 00:19:19,670 --> 00:19:21,220 Titta på linje 16. 356 00:19:21,220 --> 00:19:26,760 Array två förändras från att vara ett nummer, ett heltal, till en sträng. 357 00:19:26,760 --> 00:19:30,920 >> En annan trevlig sak om arrayer är här på rad 19, de har oändlig storlek. 358 00:19:30,920 --> 00:19:35,900 Du kan bara säga att jag vill hundrade element för att vara sträng legit. 359 00:19:35,900 --> 00:19:38,510 Och detta inte verkar göra logiskt eftersom matrisen endast 360 00:19:38,510 --> 00:19:41,080 har plats för tre element, så i slutet borde vara två. 361 00:19:41,080 --> 00:19:44,800 Men när du gör detta, låt oss se vad array tre blir. 362 00:19:44,800 --> 00:19:47,460 Vi skulle köra detta snabbt med nod exempel six.js. 363 00:19:47,460 --> 00:19:49,990 364 00:19:49,990 --> 00:19:52,180 Vi får här riktigt lång array, och vad som händer 365 00:19:52,180 --> 00:19:55,100 är att vi har de första delarna och sedan ett gäng råämnen 366 00:19:55,100 --> 00:19:56,580 tills vi får vår sträng. 367 00:19:56,580 --> 00:19:58,580 JavaScript fyller i array som det behövs. 368 00:19:58,580 --> 00:20:01,790 369 00:20:01,790 --> 00:20:05,420 >> Låt oss äntligen gå till vår sista exempel. 370 00:20:05,420 --> 00:20:08,180 Här har vi en lista olika studenter. 371 00:20:08,180 --> 00:20:11,350 Jag vill prata lite lite om några trevliga aspekter 372 00:20:11,350 --> 00:20:14,240 av för slingor i JavaScript. 373 00:20:14,240 --> 00:20:17,500 I C, för slingor typ av begränsade. 374 00:20:17,500 --> 00:20:21,490 De har en fast struktur, där man ha en variabel, har du tillstånd, 375 00:20:21,490 --> 00:20:23,850 och då du gör något vid slutet av slingan. 376 00:20:23,850 --> 00:20:27,560 Och naturligtvis detta fungerar i JavaScript, som vi såg i de tidigare exemplen. 377 00:20:27,560 --> 00:20:31,030 Men vi har också trevligare sätt att göra detta i JavaScript. 378 00:20:31,030 --> 00:20:33,870 Detta kallas en foreach slinga. 379 00:20:33,870 --> 00:20:36,580 >> Tyvärr, låt oss gå tillbaka till exempel sju här. 380 00:20:36,580 --> 00:20:39,320 Vi kan också säga avsnitt är en lista. 381 00:20:39,320 --> 00:20:43,250 Så ge mig varje i eller varje index i den listan. 382 00:20:43,250 --> 00:20:46,255 Då kan vi få eleven genom att bara ringa del av i. 383 00:20:46,255 --> 00:20:50,690 Så all kod för att sätta i lika med noll och att se i 384 00:20:50,690 --> 00:20:54,420 är mindre än längden och sätta en till jag varje gång, det är 385 00:20:54,420 --> 00:21:00,220 ta hand om du hellre fint med denna foreach slinga. 386 00:21:00,220 --> 00:21:02,830 >> Inte nog med att foreach loopar arbeta i listor eller matriser, 387 00:21:02,830 --> 00:21:06,130 De arbetar också i objekt, som också är trevligt. 388 00:21:06,130 --> 00:21:10,240 Du kan få namnet på varje fastighet genom att bara ta 389 00:21:10,240 --> 00:21:15,030 en ordbok eller ett föremål, som student, och sedan bara säga ge mig varje tangent. 390 00:21:15,030 --> 00:21:18,920 En nyckel skulle vara dessa egenskaper, namn eller hus. 391 00:21:18,920 --> 00:21:22,870 Så vad kommer att hända här är att Vi skriver ut först namnet och sedan 392 00:21:22,870 --> 00:21:24,920 hus varje elev. 393 00:21:24,920 --> 00:21:29,170 >> Jag kan köra detta i Node riktigt snabbt att visa dig. 394 00:21:29,170 --> 00:21:35,510 Vi får först C stil för loop, där Vi får varje objekt som skrivs ut. 395 00:21:35,510 --> 00:21:38,910 Och sedan har vi JavaScript stil, där du kan bara 396 00:21:38,910 --> 00:21:41,510 skriva ut varje tangent och värderar individuellt. 397 00:21:41,510 --> 00:21:45,560 398 00:21:45,560 --> 00:21:47,050 >> Okej. 399 00:21:47,050 --> 00:21:52,850 Nu när vi har täckt Node.js, tror jag Vi är redo att komma igång med Meteor. 400 00:21:52,850 --> 00:21:56,070 Som jag sa, Meteor gjorde ett bra jobb att skriva några färdiga exempel 401 00:21:56,070 --> 00:22:00,600 för dig att du kan utforska genom denna tutorial eller i seminariemappen. 402 00:22:00,600 --> 00:22:03,750 Men här vill jag börja mer från grunden. 403 00:22:03,750 --> 00:22:06,810 >> Låt oss skapa en enkel att göra ansökan. 404 00:22:06,810 --> 00:22:14,140 Detta är typ av basen av det som till gör program jag visade dig tidigare är. 405 00:22:14,140 --> 00:22:16,990 I denna tutorial, du kommer att se till att det finns 406 00:22:16,990 --> 00:22:20,180 ett kommando Meteor skapar till skapa ett nytt Meteor projekt. 407 00:22:20,180 --> 00:22:24,510 Du måste kalla detta för att köra Meteor projekt eftersom det 408 00:22:24,510 --> 00:22:27,470 kommer att köra kommandona att skapa Meteor 409 00:22:27,470 --> 00:22:31,100 filer som behövs för ditt projekt. 410 00:22:31,100 --> 00:22:35,920 >> Om du går in i terminalen, kan vi gå in i mappen som heter steg ett. 411 00:22:35,920 --> 00:22:41,240 Och steg ett kommer motsvara det första steget i handledningen. 412 00:22:41,240 --> 00:22:44,020 Kallelse finns mappar, steg ett, steg två, hela vägen till fem. 413 00:22:44,020 --> 00:22:47,835 Och var och en motsvarande till ett steg i denna tutorial. 414 00:22:47,835 --> 00:22:50,960 415 00:22:50,960 --> 00:22:52,780 Jag ska öppna den i min textredigerare här 416 00:22:52,780 --> 00:22:56,280 så vi kan se lite av det som skapats. 417 00:22:56,280 --> 00:22:58,530 Vi märker att det finns fyra huvuddelar. 418 00:22:58,530 --> 00:23:01,170 Det finns en Meteor katalog, .meteor. 419 00:23:01,170 --> 00:23:03,180 Och att du oftast behöver inte vidröra. 420 00:23:03,180 --> 00:23:05,070 Meteor tar hand om den mappen, och det bara 421 00:23:05,070 --> 00:23:08,640 ser till att din Projektet kommer att fungera korrekt. 422 00:23:08,640 --> 00:23:14,580 >> Vi har även tre filer, en HTML-fil, en JavaScript-fil och en CSS-fil. 423 00:23:14,580 --> 00:23:18,670 Låt oss först börja med HTML-filen. 424 00:23:18,670 --> 00:23:21,310 Vid första anblicken ser det här som en vanlig HTML-dokument. 425 00:23:21,310 --> 00:23:23,490 Men märker att det finns några skillnader. 426 00:23:23,490 --> 00:23:26,520 Ett, är detta faktiskt inte en komplett HTML-dokument. 427 00:23:26,520 --> 00:23:28,640 Vi saknar HTML-taggar. 428 00:23:28,640 --> 00:23:29,700 Detta är normalt. 429 00:23:29,700 --> 00:23:33,560 I Meteor, du är inte förväntas att skapa dessa HTML-taggar. 430 00:23:33,560 --> 00:23:35,260 Det är gjort för dig. 431 00:23:35,260 --> 00:23:38,380 Du vill begin-- om du vill skapa en hemsida, 432 00:23:38,380 --> 00:23:40,430 du behöver bara starta med huvudet taggen, 433 00:23:40,430 --> 00:23:43,510 definiera det, och sedan definiera kroppen taggen. 434 00:23:43,510 --> 00:23:48,940 >> Men om du märker i denna HTML-fil, har vi en ny tagg. 435 00:23:48,940 --> 00:23:50,350 Vi har mallen taggen. 436 00:23:50,350 --> 00:23:52,050 Detta är inte normalt HTML. 437 00:23:52,050 --> 00:23:55,300 Detta är en speciell version av HTML att Meteor gör tillgängliga för dig. 438 00:23:55,300 --> 00:23:57,660 Det kallas rymd barer. 439 00:23:57,660 --> 00:24:00,980 Du kan definiera mallar som lite moduler, ungefär som hjälpfunktioner, 440 00:24:00,980 --> 00:24:03,660 i C eller JavaScript-kod. 441 00:24:03,660 --> 00:24:06,020 Denna mall skulle ha ett namn som heter uppgift. 442 00:24:06,020 --> 00:24:10,520 Och du kan se här på linjen 13 som du kan ringa dessa mallar. 443 00:24:10,520 --> 00:24:14,380 Och vad Meteor kommer att göra är bara Fyll i dessa uppgifter för dig. 444 00:24:14,380 --> 00:24:17,540 445 00:24:17,540 --> 00:24:22,580 >> En annan sak du kanske märker är en lite annorlunda är det varje funktion. 446 00:24:22,580 --> 00:24:26,130 Varje tar variabeln arbetsuppgifter och slag gå igenom det 447 00:24:26,130 --> 00:24:28,810 i det foreach loop vi såg i exemplet sju. 448 00:24:28,810 --> 00:24:34,200 Detta var kan ta en ordbok eller en lista, ett objekt eller en lista, 449 00:24:34,200 --> 00:24:38,820 och det ska bara gå igenom alla de värden som en foreach loop skulle. 450 00:24:38,820 --> 00:24:44,110 Så om vi har ett gäng uppdrag, detta kommer att kalla mallen på varje uppgift. 451 00:24:44,110 --> 00:24:49,590 >> Låt oss köra Meteor-projektet bara för att se att detta händer. 452 00:24:49,590 --> 00:24:53,260 Jag kör Meteor-projektet med bara Meteor eller Meteor köras. 453 00:24:53,260 --> 00:24:56,690 Och nu Meteor bara kommer att behöva att snabbt förbereda projektet, 454 00:24:56,690 --> 00:25:03,320 starta databas som är nödvändigt, och sedan skicka appen lokalt. 455 00:25:03,320 --> 00:25:07,200 Vi kan gå till vår webbläsare nu. 456 00:25:07,200 --> 00:25:10,215 Och vi får se att vi har en mycket enkel app. 457 00:25:10,215 --> 00:25:22,190 458 00:25:22,190 --> 00:25:29,130 Så vad vi såg visade upp var faktiskt steget ett, steget en fil. 459 00:25:29,130 --> 00:25:33,260 >> Låt oss gå vidare till steg två bara på grund Jag tror att det kommer att tjäna samma syfte. 460 00:25:33,260 --> 00:25:36,500 Jag kommer bara att ändra till steget två katalog 461 00:25:36,500 --> 00:25:39,550 och kör Meteor igen så vi kan se mallen vi bara arbetat med. 462 00:25:39,550 --> 00:25:43,560 463 00:25:43,560 --> 00:25:45,730 Ja, en fråga? 464 00:25:45,730 --> 00:25:49,724 >> PUBLIK: Om vi ​​får tillstånd förnekas, är that-- vad är det 465 00:25:49,724 --> 00:25:50,390 kallas för det? 466 00:25:50,390 --> 00:25:52,154 467 00:25:52,154 --> 00:25:54,070 ROGER ZURAWICKI: Om du kör Meteor körning, 468 00:25:54,070 --> 00:25:57,280 och du har behörighet förnekas, några av dina filer 469 00:25:57,280 --> 00:25:59,070 kanske inte har rätt behörighet uppsättningen. 470 00:25:59,070 --> 00:26:03,970 Så du måste kontrollera var behörigheter är avstängd. 471 00:26:03,970 --> 00:26:06,030 De kunde vara avstängd i din Meteor-projektet, 472 00:26:06,030 --> 00:26:08,550 eller de kan vara av i Meteor filer själva. 473 00:26:08,550 --> 00:26:13,742 >> PUBLIK: Om jag hämtade den nyss från din GitHub, vad ska jag göra 474 00:26:13,742 --> 00:26:16,110 [OHÖRBAR]? 475 00:26:16,110 --> 00:26:20,110 >> ROGER ZURAWICKI: Om du vill att se till att du kan komma åt den, 476 00:26:20,110 --> 00:26:21,450 det finns ett kommando som du kan köra. 477 00:26:21,450 --> 00:26:26,590 Låt mig snabbt skriva ut det så att andra personer kan se det. 478 00:26:26,590 --> 00:26:30,670 Jag ska öppna en ny flik här och gå in i min seminariemappen. 479 00:26:30,670 --> 00:26:33,500 480 00:26:33,500 --> 00:26:36,490 Chmod är kommandot att ändra behörigheter, 481 00:26:36,490 --> 00:26:40,060 och du kan säga r för att göra det rekursivt för varje fil. 482 00:26:40,060 --> 00:26:46,040 Och behörigheter, kan du prova 0755 att se till att du har full tillgång, 483 00:26:46,040 --> 00:26:47,820 och alla andra kan läsa. 484 00:26:47,820 --> 00:26:50,100 Och om du bara kör detta kommando, kommer det göra 485 00:26:50,100 --> 00:26:55,800 Kontrollera behörigheter är i kontrollera hela katalogen. 486 00:26:55,800 --> 00:26:59,160 Köra ls-l kan visa dig behörigheter mer i detalj. 487 00:26:59,160 --> 00:27:01,290 Detta ser OK. 488 00:27:01,290 --> 00:27:03,900 >> Vad är viktigast är att du har alla tre 489 00:27:03,900 --> 00:27:06,610 rwx för alla filer i seminariet katalogen. 490 00:27:06,610 --> 00:27:09,415 491 00:27:09,415 --> 00:27:11,330 Visste att lösa problemet? 492 00:27:11,330 --> 00:27:13,735 >> PUBLIK: Det står saknas operant [OHÖRBAR]. 493 00:27:13,735 --> 00:27:17,980 494 00:27:17,980 --> 00:27:18,740 [OHÖRBAR] 495 00:27:18,740 --> 00:27:20,490 ROGER ZURAWICKI: Du måste se till att du 496 00:27:20,490 --> 00:27:23,022 har en punkt i slutet av ditt kommando. 497 00:27:23,022 --> 00:27:23,938 PUBLIK: [OHÖRBAR]. 498 00:27:23,938 --> 00:27:36,395 499 00:27:36,395 --> 00:27:37,520 ROGER ZURAWICKI: Okej. 500 00:27:37,520 --> 00:27:42,220 Låt oss snabbt gå tillbaka till lokala värden, appen vi har. 501 00:27:42,220 --> 00:27:46,640 Och du kommer att se att vi har en Några uppgifter här, som förväntat. 502 00:27:46,640 --> 00:27:49,330 503 00:27:49,330 --> 00:27:51,990 Vi har ett gäng CSS, vilket du behöver inte oroa dig. 504 00:27:51,990 --> 00:27:53,740 Meteor handledning bara ger detta till dig 505 00:27:53,740 --> 00:27:58,010 att göra din att göra-lista look a lite trevligare än vanlig HTML. 506 00:27:58,010 --> 00:28:02,290 Och vi har JavaScript-filen, vilket Jag ska gå in mer i detalj lite senare, 507 00:28:02,290 --> 00:28:04,272 men det bara ger dessa uppgifter. 508 00:28:04,272 --> 00:28:04,980 Detta är uppgiften en. 509 00:28:04,980 --> 00:28:05,740 Detta är uppgiften två. 510 00:28:05,740 --> 00:28:06,590 Detta är uppgiften tre. 511 00:28:06,590 --> 00:28:09,720 Så detta är uppgifter Meteor börjar bli. 512 00:28:09,720 --> 00:28:15,590 >> En av de häftiga saker om Meteor är att förändringar kan ske automatiskt. 513 00:28:15,590 --> 00:28:18,990 Om jag ville förändra namnet på den första uppgiften, 514 00:28:18,990 --> 00:28:22,490 så det skulle säga detta är inte uppgiften, och jag sparar den, 515 00:28:22,490 --> 00:28:26,370 sedan när jag går till webben webbläsare kan du uppdatera den, 516 00:28:26,370 --> 00:28:30,861 och det står automatiskt Detta är inte uppgiften en. 517 00:28:30,861 --> 00:28:32,860 Du kan göra samma sak i någon av dessa filer. 518 00:28:32,860 --> 00:28:37,940 Gör en förändring, istället för att göra listan kommer jag få det min att göra-lista. 519 00:28:37,940 --> 00:28:40,980 >> Och en sak du bara märkt, att jag inte ens behövde uppdatera. 520 00:28:40,980 --> 00:28:43,960 Idén om uppfriskande är snäll av löst för dig med Meteor. 521 00:28:43,960 --> 00:28:48,970 När den upptäcker förändringar fil, det kommer att ladda ändringarna för dig. 522 00:28:48,970 --> 00:28:53,110 Detta fungerar på alla filer, oavsett om det är HTML, CSS, eller JavaScript. 523 00:28:53,110 --> 00:28:57,990 För att visa dig vad denna app skulle se ut utan CSS, kan jag ta bort det hela. 524 00:28:57,990 --> 00:29:04,720 Och när det är laddas, nu har du en inte så snygg att göra-lista. 525 00:29:04,720 --> 00:29:06,370 Låt oss sätta det innehåll tillbaka. 526 00:29:06,370 --> 00:29:11,343 Och säkert nog, det fräschar, och vår CSS är tillbaka. 527 00:29:11,343 --> 00:29:11,843 Stor. 528 00:29:11,843 --> 00:29:15,700 529 00:29:15,700 --> 00:29:20,010 >> Vi kan nu gå vidare med handledningen. 530 00:29:20,010 --> 00:29:23,360 Låt oss tala om steg två, mallar. 531 00:29:23,360 --> 00:29:27,140 Detta är vad vi såg bara med de olika uppgifterna. 532 00:29:27,140 --> 00:29:31,550 Meteor kommer att förklara för dig vad mallar och hur denna logik fungerar. 533 00:29:31,550 --> 00:29:34,760 Men låt oss titta bara på koden till se om vi kan göra känsla av det. 534 00:29:34,760 --> 00:29:38,030 535 00:29:38,030 --> 00:29:41,460 >> I mycket enkla applikationer, som vad vi har i det enkla 536 00:29:41,460 --> 00:29:44,550 att göra, steg ett, steg två, steg tre, steg fyra, steg fem, 537 00:29:44,550 --> 00:29:45,700 Vi har inte några mappar. 538 00:29:45,700 --> 00:29:47,533 Vi har inte servern folder jag nämnde. 539 00:29:47,533 --> 00:29:50,510 Vi har inte klienten mapp som nämndes. 540 00:29:50,510 --> 00:29:52,290 Så Meteor kommer att köra alla filer. 541 00:29:52,290 --> 00:29:55,210 Det kommer köra det både på klient, både på servern. 542 00:29:55,210 --> 00:29:58,840 >> Och om du vill ha delar av din JavaScript kod körs bara på klienten, 543 00:29:58,840 --> 00:30:02,350 de behöver för att se till att du har en if-sats, ungefär som vad 544 00:30:02,350 --> 00:30:04,890 Vi har i vår JavaScript-fil här. 545 00:30:04,890 --> 00:30:08,010 Så Meteor, endast om det är kunden, då jag 546 00:30:08,010 --> 00:30:12,355 vill definiera en mall hjälpare kallas arbetsuppgifter. 547 00:30:12,355 --> 00:30:15,050 548 00:30:15,050 --> 00:30:19,260 Vad denna kod egentligen gör är det säger att det finns 549 00:30:19,260 --> 00:30:21,800 en objekt som kallas mall att Meteor ger. 550 00:30:21,800 --> 00:30:23,270 Och vi kommer att lägga en hjälpare. 551 00:30:23,270 --> 00:30:27,680 Medhjälpare är dessa uppgifter, dessa saker som uppgifterna. 552 00:30:27,680 --> 00:30:33,890 >> Du kommer att se att om vi går tillbaka till HTML-fil, kallade vi var på arbetsuppgifter. 553 00:30:33,890 --> 00:30:35,750 Uppgifter definieras inte i HTML. 554 00:30:35,750 --> 00:30:37,770 Det definieras i JavaScript. 555 00:30:37,770 --> 00:30:42,610 Och Meteor behöver veta vilka uppgifter är när vi går in i JavaScript här. 556 00:30:42,610 --> 00:30:45,550 Uppgifter är här hjälpare. 557 00:30:45,550 --> 00:30:49,830 Helper, kan du tänka på den som mall variabel. 558 00:30:49,830 --> 00:30:51,000 Och vad gör arbetsuppgifter göra? 559 00:30:51,000 --> 00:30:53,580 Tja, returnerar den listan med värden. 560 00:30:53,580 --> 00:30:56,750 Eftersom det är en lista, Vi kan ringa varandra i den. 561 00:30:56,750 --> 00:30:58,590 Så det är därför vi kallar varandra på arbetsuppgifter. 562 00:30:58,590 --> 00:30:59,730 Och nu har vi uppgiften. 563 00:30:59,730 --> 00:31:02,850 564 00:31:02,850 --> 00:31:03,990 >> Vad gör uppgiften göra? 565 00:31:03,990 --> 00:31:07,740 Tja, det har den här pilen här efter klammerparenteserna. 566 00:31:07,740 --> 00:31:09,130 Det betyder uppgift är en mall. 567 00:31:09,130 --> 00:31:11,100 Det är inte en hjälpare, som vad vi såg bara. 568 00:31:11,100 --> 00:31:12,872 Det är en mall som vi har definierat. 569 00:31:12,872 --> 00:31:14,080 Och där har vi definierat det? 570 00:31:14,080 --> 00:31:16,950 Vi har definierat det nedan till höger här. 571 00:31:16,950 --> 00:31:21,160 >> Allt denna mall gör är render en listobjekt, och det kallar text. 572 00:31:21,160 --> 00:31:24,160 Nu verkar text att vara en hjälpare, men jag ska visa dig 573 00:31:24,160 --> 00:31:26,610 att detta är faktiskt fortfarande en datamedlem arbetsuppgifter. 574 00:31:26,610 --> 00:31:29,230 575 00:31:29,230 --> 00:31:33,670 När du ringer varje, går den in datastrukturen lite. 576 00:31:33,670 --> 00:31:39,130 Liksom foreach loop, nu bara ser det vid det första elementet i vårt objekt. 577 00:31:39,130 --> 00:31:41,850 Vi ser att texten är definieras här i vårt objekt. 578 00:31:41,850 --> 00:31:45,350 Så Meteor är smart att veta att vi pratar om denna text, 579 00:31:45,350 --> 00:31:47,630 inte hjälpare kallas texten. 580 00:31:47,630 --> 00:31:52,120 Det blir bara värdet av detta text här och visa det som HTML, 581 00:31:52,120 --> 00:31:55,475 och det är hur data går från JavaScript till HTML. 582 00:31:55,475 --> 00:32:03,320 583 00:32:03,320 --> 00:32:07,030 >> Går vidare dock, i detta exempel vi hårt kodade dessa värden. 584 00:32:07,030 --> 00:32:10,440 Meteor gör två riktigt trevliga saker för oss. 585 00:32:10,440 --> 00:32:15,050 Förutom live refresh som vi visade, hanterar det också vår databas. 586 00:32:15,050 --> 00:32:18,750 Om du var tvungen att arbeta med PHP, du var tvungen att konfigurera phpMyAdmin. 587 00:32:18,750 --> 00:32:21,320 Du var tvungen att se till att din tabeller var alla i schack. 588 00:32:21,320 --> 00:32:24,760 Du var tvungen att göra en hel del arbete att göra Kontrollera dina data har formate korrekt, 589 00:32:24,760 --> 00:32:27,880 och PHP kan kommunicera med den. 590 00:32:27,880 --> 00:32:30,170 >> Nu använder Meteor ett nytt paradigm. 591 00:32:30,170 --> 00:32:32,310 Detta är ett mer modernt sätt hantera en databas. 592 00:32:32,310 --> 00:32:34,580 Det är en teknik som kallas MongoDB. 593 00:32:34,580 --> 00:32:38,740 Precis som i JavaScript, såg vi att det spelade ingen roll vilka typer av data som hade. 594 00:32:38,740 --> 00:32:39,640 Allt var en var. 595 00:32:39,640 --> 00:32:40,570 Det var inte en charstar. 596 00:32:40,570 --> 00:32:40,930 Det var inte en int. 597 00:32:40,930 --> 00:32:41,970 Det var inte en struct. 598 00:32:41,970 --> 00:32:44,210 Det var bara var detta, var det. 599 00:32:44,210 --> 00:32:46,320 >> MongoDB fungerar slags på samma sätt. 600 00:32:46,320 --> 00:32:48,160 Du behöver inte definiera dina tabeller. 601 00:32:48,160 --> 00:32:50,860 Du behöver inte säga ett bord har ett namn, som har en int. 602 00:32:50,860 --> 00:32:54,710 Det har, jag vet inte, en dollar, vilket är ett decimaltal. 603 00:32:54,710 --> 00:32:58,360 Det är just dessa JavaScript-objekt, alla dessa Vars, i huvudsak. 604 00:32:58,360 --> 00:33:02,780 Och det här är en riktigt kraftfull sätt till prototyp din app. 605 00:33:02,780 --> 00:33:06,190 Och det är därför Meteor drar nytta av detta. 606 00:33:06,190 --> 00:33:11,080 >> Om vi ​​går till steg tre, låt oss se vad som har förändrats. 607 00:33:11,080 --> 00:33:15,480 Om vi ​​tittar på todos HTML, inte mycket. 608 00:33:15,480 --> 00:33:17,170 CSS har inte förändrats alls. 609 00:33:17,170 --> 00:33:22,420 Men den lilla förändringen ser vi i HTML är att vi har ändrat hur uppgifterna definieras. 610 00:33:22,420 --> 00:33:23,800 Uppgifter är nu en funktion. 611 00:33:23,800 --> 00:33:25,800 Det betyder att varje När vi vill få uppgifter, 612 00:33:25,800 --> 00:33:27,480 vi kommer att köra den här funktionen. 613 00:33:27,480 --> 00:33:29,230 Det spelar inte tillbaka funktion som ett värde. 614 00:33:29,230 --> 00:33:33,710 >> Meteor är smart att faktiskt köra funktionen för att se vad vi får ut. 615 00:33:33,710 --> 00:33:36,650 Och den returnerar denna sak kallad arbetsuppgifter. 616 00:33:36,650 --> 00:33:40,650 Vi har definierat uppdrag på rad ett, och det är en Mongo samling. 617 00:33:40,650 --> 00:33:43,170 Mongo hänvisar till databasen Meteor använder, 618 00:33:43,170 --> 00:33:48,420 och detta nya betyder bara låt oss göra en ny kollektion, kalla det uppgifter. 619 00:33:48,420 --> 00:33:53,540 I MySQL, skulle detta motsvara söker bordet kallas arbetsuppgifter. 620 00:33:53,540 --> 00:33:56,350 Mongo har samlingar, inte tabeller. 621 00:33:56,350 --> 00:34:00,100 Så här ser bara för uppgifter. 622 00:34:00,100 --> 00:34:04,820 >> Nu, mall i vår hjälpare i mallen, alla 623 00:34:04,820 --> 00:34:08,380 vi måste göra för att få alla arbetsuppgifter är denna funktion, hitta 624 00:34:08,380 --> 00:34:11,710 och denna tomma stag. 625 00:34:11,710 --> 00:34:14,150 Detta är mer särskilt till Mongo syntax. 626 00:34:14,150 --> 00:34:16,159 Det finns gott om dokumentation på nätet för hur 627 00:34:16,159 --> 00:34:19,360 Du kan göra en effektiv och verkligen användbart Mongo-frågor. 628 00:34:19,360 --> 00:34:25,560 Men något sådant är bra nog för att bara hitta alla data. 629 00:34:25,560 --> 00:34:30,100 >> Nu, en av de frågor som du kan se är att vi aldrig lägga till data. 630 00:34:30,100 --> 00:34:35,020 Så vad händer när vi faktiskt köra steg tre? 631 00:34:35,020 --> 00:34:37,550 Låt oss snabbt gå in i steg tre och köra Meteor. 632 00:34:37,550 --> 00:34:42,870 633 00:34:42,870 --> 00:34:45,650 Lägg märke till att jag hade en annan Meteor Projektet löper någon annanstans, 634 00:34:45,650 --> 00:34:49,110 så Meteor inte gillar det. 635 00:34:49,110 --> 00:34:52,810 Jag kommer bara att snabbt nära den andra Meteor med kontroll C, 636 00:34:52,810 --> 00:34:55,780 gå in steg tre, och kör Meteor igen. 637 00:34:55,780 --> 00:35:01,070 638 00:35:01,070 --> 00:35:03,180 Lägg märke det börjar MongoDB eftersom MongoDB 639 00:35:03,180 --> 00:35:06,370 är en del av varje Meteor-projektet. 640 00:35:06,370 --> 00:35:09,190 >> Så det säger min ansökan har fel. 641 00:35:09,190 --> 00:35:10,590 Det är en trevlig funktion Meteor har. 642 00:35:10,590 --> 00:35:13,700 Det gör att din HTML är väl validerad. 643 00:35:13,700 --> 00:35:17,710 Låt oss snabbt titta på varför det kan vara. 644 00:35:17,710 --> 00:35:26,110 Det verkar som jag har av misstag kopierade fel HTML-kod. 645 00:35:26,110 --> 00:35:30,610 Om jag sparar det nu, Meteor automatiskt startat om servern, 646 00:35:30,610 --> 00:35:34,650 och nu appen körs som förväntat. 647 00:35:34,650 --> 00:35:39,220 Kallelse att fixa detta, kan du bara köra samma HTML-fil från steg två, 648 00:35:39,220 --> 00:35:40,380 kopiera den till steg tre. 649 00:35:40,380 --> 00:35:43,290 650 00:35:43,290 --> 00:35:45,917 >> Vi kan gå tillbaka till vår lokala värden. 651 00:35:45,917 --> 00:35:47,500 Och nu ser vi att vi har vår att göra-lista. 652 00:35:47,500 --> 00:35:50,070 Stor, men det är tomt. 653 00:35:50,070 --> 00:35:54,210 Vi behöver faktiskt inte har någon uppgifter i vår Mongo databas. 654 00:35:54,210 --> 00:35:57,930 Så låt oss tala om en några sätt vi kan göra det. 655 00:35:57,930 --> 00:36:03,240 Om vi ​​går tillbaka till terminalen, vi kan stänga den och köra Meteor Mongo. 656 00:36:03,240 --> 00:36:05,320 >> Om du är bekant med hur Meteor fungerar, 657 00:36:05,320 --> 00:36:14,100 Detta ger faktiskt dig åtkomst till den fullständiga MongoDB för Meteor. 658 00:36:14,100 --> 00:36:17,570 Observera att du måste vara igång Meteor först för att detta ska fungera. 659 00:36:17,570 --> 00:36:23,840 Så om jag kör detta i en ny flik, jag kan gå tillbaka till samma katalog. 660 00:36:23,840 --> 00:36:29,040 661 00:36:29,040 --> 00:36:32,570 Och nu Meteor fungerar fint. 662 00:36:32,570 --> 00:36:33,600 Detta är en fråga. 663 00:36:33,600 --> 00:36:36,350 664 00:36:36,350 --> 00:36:38,790 Låt mig göra det lite större så vi kan se. 665 00:36:38,790 --> 00:36:41,550 Detta ser lite annorlunda än vad du kan användas till dig 666 00:36:41,550 --> 00:36:42,869 egentligen inte behöver använda Mongo. 667 00:36:42,869 --> 00:36:45,410 Hela poängen med mig här är så att du kan använda JavaScript. 668 00:36:45,410 --> 00:36:48,250 Men om du är nyfiken, den Mongo API inte 669 00:36:48,250 --> 00:36:50,730 använda SQL, Structured Query Language. 670 00:36:50,730 --> 00:36:55,570 Den använder sitt eget språk som ser ut ungefär som JavaScript. 671 00:36:55,570 --> 00:37:00,520 Mycket snabbt, kan vi hitta tabellen via db.tasks. 672 00:37:00,520 --> 00:37:08,940 Och det säger mig visar sig om vi kör hitta, 673 00:37:08,940 --> 00:37:13,450 sorts liknar vad vi hade med Meteor, kan vi lasta alla element. 674 00:37:13,450 --> 00:37:17,330 Problemet är, gör vi inte faktiskt har några uppgifter som definierats. 675 00:37:17,330 --> 00:37:20,600 Så det kan inte få dem. 676 00:37:20,600 --> 00:37:22,130 >> Vi kan sätta in, dock. 677 00:37:22,130 --> 00:37:25,170 Så vi kan köra insats med kommandot insats. 678 00:37:25,170 --> 00:37:29,140 Och vi bara ge det ett objekt, och vi bara 679 00:37:29,140 --> 00:37:31,840 Se till att formatet är vad vi förväntar oss. 680 00:37:31,840 --> 00:37:35,030 Om vi ​​såg på steg två, Vi såg att varje uppgift 681 00:37:35,030 --> 00:37:39,590 var ett föremål med en text som nyckel och vad 682 00:37:39,590 --> 00:37:41,640 din att göra-uppgift var som en variabel. 683 00:37:41,640 --> 00:37:44,680 Så vi kan göra något här. 684 00:37:44,680 --> 00:37:50,160 >> Vi kan ha det infoga en uppgift ringde jag kommer från Mongo. 685 00:37:50,160 --> 00:37:52,570 Och vi trycker på Enter, och det körs. 686 00:37:52,570 --> 00:37:56,900 Vi kan köra hitta igen, och vi ser att det är ett objekt här. 687 00:37:56,900 --> 00:38:01,810 Mongo delar den ett ID, som du egentligen inte behöver oroa sig. 688 00:38:01,810 --> 00:38:06,690 Vad är viktigt för dig är data du sätter in, är de data du får ut. 689 00:38:06,690 --> 00:38:10,500 >> Låt oss gå tillbaka till vår hemsida, och hey, vår uppgift laddad. 690 00:38:10,500 --> 00:38:13,987 Och du kan se att eftersom Meteor är mycket smart 691 00:38:13,987 --> 00:38:16,570 och alltid uppdateras för dig, jag behövde inte röra sidan. 692 00:38:16,570 --> 00:38:19,160 Det laddas automatiskt. 693 00:38:19,160 --> 00:38:23,520 >> Låt oss köra lite kod i JavaScript om att göra detta. 694 00:38:23,520 --> 00:38:26,120 Som vi har Nod i ryggen sluta att köra ut JavaScript 695 00:38:26,120 --> 00:38:29,280 Vi kan också köra JavaScript direkt i våra webbläsare. 696 00:38:29,280 --> 00:38:31,970 Du kan göra detta genom en funktion kallas Inspektera Element. 697 00:38:31,970 --> 00:38:34,210 Om jag högerklicka på en delen av sidan, 698 00:38:34,210 --> 00:38:36,730 det finns ett alternativ kallas Inspektera Element. 699 00:38:36,730 --> 00:38:38,840 Om du kör en webbläsare som Safari, du 700 00:38:38,840 --> 00:38:45,430 kan behöva aktivera din utvecklare verktyg innan du får den här funktionen. 701 00:38:45,430 --> 00:38:46,930 >> Vad vi bryr oss om är konsolen. 702 00:38:46,930 --> 00:38:48,930 Så vi kommer bara gå till konsol i botten. 703 00:38:48,930 --> 00:38:52,110 704 00:38:52,110 --> 00:38:55,970 Nu kan vi köra alla JavaScript Här, liksom JavaScript 705 00:38:55,970 --> 00:38:58,860 filer jag visade i js exemplet. 706 00:38:58,860 --> 00:39:02,040 Men nu ska vi titta på arbetsuppgifter. 707 00:39:02,040 --> 00:39:04,955 Vi kan köra vårt kommando. 708 00:39:04,955 --> 00:39:07,830 Och förhoppningsvis ska jag kunna göra det lite större så att vi alla kan se. 709 00:39:07,830 --> 00:39:14,390 710 00:39:14,390 --> 00:39:18,450 >> Om vi ​​kör tasks.find, och du kommer se att detta är exakt samma kod 711 00:39:18,450 --> 00:39:24,840 att filen använder Javascript i steg tre, denna task.find. 712 00:39:24,840 --> 00:39:29,100 Vi kan köra samma sak, och Nu får vi några konstiga saker. 713 00:39:29,100 --> 00:39:31,050 Hur får vi faktiskt få uppgifterna? 714 00:39:31,050 --> 00:39:34,860 Tja, vi måste köra Kommandot heter fetch. 715 00:39:34,860 --> 00:39:37,150 >> Detta är mycket användbart för felsökning. 716 00:39:37,150 --> 00:39:41,000 Vad du får här är en markör, är och detta 717 00:39:41,000 --> 00:39:44,890 ett trevligt sätt Meteor har optimerade hämtning av data. 718 00:39:44,890 --> 00:39:48,270 Denna markör har alla funktioner för levande uppdatering och uppdatera sidan 719 00:39:48,270 --> 00:39:49,650 när något har förändrats. 720 00:39:49,650 --> 00:39:51,280 Men det kommer inte att få oss uppgifterna. 721 00:39:51,280 --> 00:39:52,720 Vi kan få data via fetch. 722 00:39:52,720 --> 00:39:56,880 Och du ser att vi har ett objekt, och det är precis som det vi hade i Mongo, 723 00:39:56,880 --> 00:40:00,040 med ett ID och texten vi sätter in. 724 00:40:00,040 --> 00:40:04,200 >> Så hur gör vi Infoga objekt i Meteor? 725 00:40:04,200 --> 00:40:07,250 Tja, vi har bara uppgifter. 726 00:40:07,250 --> 00:40:09,990 Och då kan vi köra samma skärkommando, 727 00:40:09,990 --> 00:40:17,520 ger en ordbok eller ett föremål med samma format, text 728 00:40:17,520 --> 00:40:22,340 och sedan jag kom från konsolen. 729 00:40:22,340 --> 00:40:27,240 Ta en titt ovan för när jag göra detta, det visar upp på hemsidan 730 00:40:27,240 --> 00:40:29,660 automatiskt. 731 00:40:29,660 --> 00:40:33,291 >> Lägg märke till att du kan lägga något du vill ha i dessa poster. 732 00:40:33,291 --> 00:40:35,040 Det behöver inte har en fast struktur. 733 00:40:35,040 --> 00:40:39,790 Jag kunde ha en lika med nummer tre och b lika med falskt. 734 00:40:39,790 --> 00:40:41,600 Och det hela fungerar. 735 00:40:41,600 --> 00:40:46,000 Jag kan till och med välja att inte innehålla en text alls. 736 00:40:46,000 --> 00:40:48,320 Detta är bara inte rekommenderas men eftersom dess Meteor 737 00:40:48,320 --> 00:40:50,920 kommer inte att veta vad som ska visas. 738 00:40:50,920 --> 00:40:53,110 Men i varje fall, vi få ett ID, och det är 739 00:40:53,110 --> 00:40:54,785 ID för objekt som du kan använda. 740 00:40:54,785 --> 00:41:01,120 741 00:41:01,120 --> 00:41:03,280 >> Som vi fortsätter med steg fyra och steg fem, 742 00:41:03,280 --> 00:41:06,870 handledningen kommer att visa dig ett sätt som du kan skapa användargränssnitt med hjälp 743 00:41:06,870 --> 00:41:13,130 HTML vet du att skapa olika arbetsuppgifter. 744 00:41:13,130 --> 00:41:15,440 Låt oss titta på steg fyra riktigt snabbt. 745 00:41:15,440 --> 00:41:18,290 Vi får se till att vi lagt ett avsnitt om händelser. 746 00:41:18,290 --> 00:41:20,874 Mallar kan ha hjälpare, som får oss data. 747 00:41:20,874 --> 00:41:22,040 Men det kan också ringa händelser. 748 00:41:22,040 --> 00:41:25,300 Och det är här grejer blir användbart, eftersom händelser 749 00:41:25,300 --> 00:41:28,590 är vad som händer när du klickar på olika saker på din webbplats. 750 00:41:28,590 --> 00:41:33,790 >> Här är vår kod träffande vi ska lägga till denna händelse. 751 00:41:33,790 --> 00:41:38,860 Lägg det när du har skickat något med klassen ny uppgift. 752 00:41:38,860 --> 00:41:41,910 Vad du har här är en CSS-väljare. 753 00:41:41,910 --> 00:41:45,870 Så det här bara letar efter en HTML element som har klassen ny uppgift. 754 00:41:45,870 --> 00:41:47,940 Och det ser ut för händelsen, som lämna. 755 00:41:47,940 --> 00:41:51,050 Andra händelser inkluderar klick, hover, dubbelklick, 756 00:41:51,050 --> 00:41:54,450 liknar vad du får i normal HTML. 757 00:41:54,450 --> 00:41:56,770 >> Vad du ger det här är nu en funktion. 758 00:41:56,770 --> 00:42:01,210 Och du kan ha din koden i funktionen. 759 00:42:01,210 --> 00:42:06,360 Denna funktion är vad slutar upp att få kallas när du skickar in denna nya uppgift. 760 00:42:06,360 --> 00:42:12,170 Låt oss titta på HTML bara så vi förstå vad denna nya uppgift är. 761 00:42:12,170 --> 00:42:15,570 Vi har lagt till ett formulär här med klass ny uppgift. 762 00:42:15,570 --> 00:42:19,880 Och det har en ingång som tar text. 763 00:42:19,880 --> 00:42:22,605 Och det är där vi kommer att lägga våra nya arbetsuppgifter. 764 00:42:22,605 --> 00:42:25,520 765 00:42:25,520 --> 00:42:29,780 >> Låt oss köra steg fyra i hemsida för att se hur det ser ut. 766 00:42:29,780 --> 00:42:32,710 Vi kan sluta först ut av MongoDB vi hade 767 00:42:32,710 --> 00:42:35,300 från våra tidigare exempel med kontroll C. 768 00:42:35,300 --> 00:42:37,690 Och låt oss ändra det till steget fyra katalogen. 769 00:42:37,690 --> 00:42:41,000 770 00:42:41,000 --> 00:42:42,920 Vi ska köra Meteor igen att starta servern. 771 00:42:42,920 --> 00:42:46,850 772 00:42:46,850 --> 00:42:50,510 Och tyvärr, jag hade Meteor körs i en annan terminal. 773 00:42:50,510 --> 00:42:53,080 Så jag ska bara se till att detta stängda. 774 00:42:53,080 --> 00:43:01,805 Låt oss avsluta det här och förändring till del fyra, steg fyra. 775 00:43:01,805 --> 00:43:02,305 OK. 776 00:43:02,305 --> 00:43:11,220 777 00:43:11,220 --> 00:43:13,250 >> Nu är vår Meteor kod körs. 778 00:43:13,250 --> 00:43:19,480 Och du kan se att den uppdaterad, utan vi även med att uppdatera sidan. 779 00:43:19,480 --> 00:43:24,410 Vad har förändrats här är nu att vi inte har några uppgifter, 780 00:43:24,410 --> 00:43:29,530 men vi har en form här, det här textruta, för att lägga våra nya arbetsuppgifter. 781 00:43:29,530 --> 00:43:31,550 Och vi kan skriva vår uppgift här. 782 00:43:31,550 --> 00:43:34,564 Jag kommer från HTML-sidan. 783 00:43:34,564 --> 00:43:36,105 När jag trycker på Enter, fick det in. 784 00:43:36,105 --> 00:43:39,180 785 00:43:39,180 --> 00:43:44,540 >> Vi kan se vad som hände när definieras av JavaScript-kod. 786 00:43:44,540 --> 00:43:49,930 Vad denna funktion gjorde var ta texten från formen, 787 00:43:49,930 --> 00:43:53,680 och sedan bara kallas tasks.insert, som vi gjorde i konsolen. 788 00:43:53,680 --> 00:43:56,410 De valde också att lägga ett createdAt datum. 789 00:43:56,410 --> 00:43:59,840 Detta är hur du skulle ange aktuell tid. 790 00:43:59,840 --> 00:44:03,220 Efter det, rensar den formen genom att göra Se till att värdet är en tom sträng. 791 00:44:03,220 --> 00:44:06,550 >> Och då är det kallar return false till se till att ingenting annat händer. 792 00:44:06,550 --> 00:44:10,350 När du återvänder falskt från en formulär händelse, som stoppar exekveringen. 793 00:44:10,350 --> 00:44:14,520 Säg ett formulär har en handling, som underkasta sig en PHP-sida. 794 00:44:14,520 --> 00:44:16,980 Om du inte hade återvänt falskt, skulle du return true. 795 00:44:16,980 --> 00:44:18,500 Det skulle hamna gör denna begäran. 796 00:44:18,500 --> 00:44:20,590 Falska fångar det och stannar det där. 797 00:44:20,590 --> 00:44:23,510 798 00:44:23,510 --> 00:44:28,610 >> Så det var lite demo om hur Meteor fungerar, och vi har 799 00:44:28,610 --> 00:44:30,980 varit efter handledningen för en stund. 800 00:44:30,980 --> 00:44:33,560 Och du kan du gärna fri att fortsätta göra detta. 801 00:44:33,560 --> 00:44:37,760 Det finns gott om resurser, och handledningen är faktiskt bara 802 00:44:37,760 --> 00:44:40,400 mycket bra om att förklara vad som händer. 803 00:44:40,400 --> 00:44:44,362 Jag vill visa er nu, i de få minuter vi har kvar, 804 00:44:44,362 --> 00:44:46,320 vad är några av de svalare funktioner i Meteor, 805 00:44:46,320 --> 00:44:48,772 och vad är några av de fler användbara paket. 806 00:44:48,772 --> 00:44:51,730 En av de bästa sakerna med Meteor är att du har ett paketsystem. 807 00:44:51,730 --> 00:44:55,620 Du kan enkelt infoga kod att många tusentals utvecklare 808 00:44:55,620 --> 00:44:58,840 har skrivit över hela världen i din Meteor-projektet. 809 00:44:58,840 --> 00:45:02,410 Ett exempel på detta är vad du kanske gör i steg nio av handledningen, där 810 00:45:02,410 --> 00:45:07,435 du försöker lägga till konton till din Meteor-projektet. 811 00:45:07,435 --> 00:45:10,010 812 00:45:10,010 --> 00:45:13,690 Om vi ​​har en CS50 PHP Projektet, skulle vi ha 813 00:45:13,690 --> 00:45:17,810 att förlita sig på ramen eller vår egen kod för att göra 814 00:45:17,810 --> 00:45:20,820 säker på att vi säkert klara lösenord och användarnamn 815 00:45:20,820 --> 00:45:23,120 och lagra databasen och allt detta. 816 00:45:23,120 --> 00:45:25,670 >> Det visar sig Meteor har några paket för att göra det för dig, 817 00:45:25,670 --> 00:45:29,160 och att göra det väldigt enkelt. 818 00:45:29,160 --> 00:45:31,950 Vad vi kan göra är att lägga några paket. 819 00:45:31,950 --> 00:45:37,450 Så låt oss göra det rätt nu i vår konsol. 820 00:45:37,450 --> 00:45:42,460 Jag kommer att avsluta projektet och just nu går in i enkla-todos. 821 00:45:42,460 --> 00:45:47,450 822 00:45:47,450 --> 00:45:50,050 Nu, är enkel-todos det projekt som du 823 00:45:50,050 --> 00:45:53,500 kommer att ha efter görs med steg 11 eller steg 12, 824 00:45:53,500 --> 00:45:55,250 I slutet av den här guiden. 825 00:45:55,250 --> 00:45:58,642 Och låt oss snabbt titta på den för att se vilka är de olika funktioner som vi har. 826 00:45:58,642 --> 00:46:01,610 Låt oss bara se till att det körs. 827 00:46:01,610 --> 00:46:04,400 Ibland tar det en stund att uppdatera, men här är det. 828 00:46:04,400 --> 00:46:09,710 >> Vi har vår möjlighet att dölja kompletta uppgifter, och vi kan logga in. 829 00:46:09,710 --> 00:46:11,770 Och detta gjordes med Meteor paketet. 830 00:46:11,770 --> 00:46:12,270 Det är bra. 831 00:46:12,270 --> 00:46:14,910 Vi har nu user och lösenord logga in. 832 00:46:14,910 --> 00:46:19,170 Men vad händer om vi ville lägga annan typ av inloggning mekanism? 833 00:46:19,170 --> 00:46:22,560 Låt oss säga att jag ville logga med min Meteor-konto. 834 00:46:22,560 --> 00:46:27,270 Jag kommer att köra meteor add, och detta är syntaxen för att lägga till paket. 835 00:46:27,270 --> 00:46:32,160 Jag kan säga konton och accounts.meteor. 836 00:46:32,160 --> 00:46:35,720 Det kommer att nu hitta paketet och ladda den. 837 00:46:35,720 --> 00:46:40,480 Du kan se att jag har inte hittat rätt paketnamn. 838 00:46:40,480 --> 00:46:42,820 >> Så hur får jag veta om paket? 839 00:46:42,820 --> 00:46:46,380 Jo det finns en stor webbplats, gjorde förfogande av Meteor människor, 840 00:46:46,380 --> 00:46:47,780 kallas atmospherejs.com. 841 00:46:47,780 --> 00:46:52,520 Atmospherejs, ett ord, prick com är en stor förvar 842 00:46:52,520 --> 00:46:57,660 för att hitta alla de Meteor paket i förvaret. 843 00:46:57,660 --> 00:47:05,140 Jag kan söka konton, och sedan Det ska visa mig alla relevanta grejer, 844 00:47:05,140 --> 00:47:07,320 alla förpackningar med kontots namn. 845 00:47:07,320 --> 00:47:10,180 846 00:47:10,180 --> 00:47:13,270 >> Även som laddar, kan vi försöka lägga till några andra paket. 847 00:47:13,270 --> 00:47:19,380 Kanske Meteor paketet inte fungerar just nu, men jag kan lägga Facebook. 848 00:47:19,380 --> 00:47:22,860 849 00:47:22,860 --> 00:47:27,190 Jag kan lägga till kontot och sedan kör Meteor projektet igen. 850 00:47:27,190 --> 00:47:33,260 851 00:47:33,260 --> 00:47:36,900 När detta börjar, låt oss se vad som har ändrats på webbplatsen. 852 00:47:36,900 --> 00:47:40,010 853 00:47:40,010 --> 00:47:44,580 Du kan see-- jag kanske måste uppdatera den här. 854 00:47:44,580 --> 00:47:47,320 >> Jag har en knapp för att konfigurera Facebook inloggning. 855 00:47:47,320 --> 00:47:49,765 Och här har jag allt instruktionerna Meteor 856 00:47:49,765 --> 00:47:52,960 har förberett för dig för inrätta en Facebook-app. 857 00:47:52,960 --> 00:47:58,990 Och du kan använda den information för att lägga till ID. 858 00:47:58,990 --> 00:48:04,130 När det är gjort, har du Facebook inloggning arbetar i din app. 859 00:48:04,130 --> 00:48:08,559 >> Jag kommer bara att få en app-ID och en hemlighet, 860 00:48:08,559 --> 00:48:10,100 bara för att visa dig hur det skulle kunna fungera. 861 00:48:10,100 --> 00:48:16,000 862 00:48:16,000 --> 00:48:20,360 Du behöver ett Facebook-konto att använda Facebook utvecklaralternativ. 863 00:48:20,360 --> 00:48:31,160 864 00:48:31,160 --> 00:48:35,290 Låt mig bara snabbt hitta Meteor nycklar som är nödvändiga. 865 00:48:35,290 --> 00:48:46,994 866 00:48:46,994 --> 00:48:49,160 Jag har en annan Meteor-projektet att jag kommer att använda, 867 00:48:49,160 --> 00:48:55,590 och jag ska bara ta nycklarna från den filen. 868 00:48:55,590 --> 00:49:14,410 869 00:49:14,410 --> 00:49:20,930 >> Och när jag väl hittar den, jag ska bara kunna kopiera dessa knappar in min Facebook. 870 00:49:20,930 --> 00:49:23,489 Så här är en nyckel. 871 00:49:23,489 --> 00:49:24,280 Och detta är hemligt. 872 00:49:24,280 --> 00:49:26,071 Du bör inte vara dela detta med människor. 873 00:49:26,071 --> 00:49:28,870 874 00:49:28,870 --> 00:49:30,910 Och då du ger den din app hemligt. 875 00:49:30,910 --> 00:49:33,560 Och det är så Facebook vet att du är du. 876 00:49:33,560 --> 00:49:37,630 877 00:49:37,630 --> 00:49:39,080 Och du sparar konfigurationen. 878 00:49:39,080 --> 00:49:45,160 879 00:49:45,160 --> 00:49:48,640 >> Jag tror på att jag har slutat min Meteor app. 880 00:49:48,640 --> 00:49:52,290 Så jag vill bara göra säker på att det är fortfarande där. 881 00:49:52,290 --> 00:49:54,962 882 00:49:54,962 --> 00:49:58,610 OK, låt oss se till att vår Meteor server körs så webbsidan körs. 883 00:49:58,610 --> 00:50:02,440 Märka om vi stoppar Meteor server, är sidan fortfarande kvar. 884 00:50:02,440 --> 00:50:04,700 Det bara inte uppdateras längre. 885 00:50:04,700 --> 00:50:10,290 Meteor servern är nödvändig för att se till att sidan är live. 886 00:50:10,290 --> 00:50:14,050 >> OK, jag har lämnat in det, och nu Jag kan logga in med Facebook. 887 00:50:14,050 --> 00:50:17,400 Nu är det bara en fråga om har ett Facebook-pop up 888 00:50:17,400 --> 00:50:21,710 och sätta på ditt konto information och loggning i. 889 00:50:21,710 --> 00:50:24,520 890 00:50:24,520 --> 00:50:27,930 När du gör det, Facebook kanske tjata dig för lite mer trygghet. 891 00:50:27,930 --> 00:50:29,810 Så vi ska bara stanna där. 892 00:50:29,810 --> 00:50:34,110 Poängen är att när du är klar med det, har du Facebook inloggning. 893 00:50:34,110 --> 00:50:37,850 >> Meteor har ett gäng andra paket också. 894 00:50:37,850 --> 00:50:39,200 Du kan logga in med Google+. 895 00:50:39,200 --> 00:50:40,500 Du kan logga in med GitHub. 896 00:50:40,500 --> 00:50:42,170 Du kan logga in med Twitter. 897 00:50:42,170 --> 00:50:44,870 Eller om du söker, kommer du hitta massor av andra saker 898 00:50:44,870 --> 00:50:49,170 liknande Meetup, Link, och Meteor Developer. 899 00:50:49,170 --> 00:50:53,100 Så Meteor Developer var paketet jag letade efter. 900 00:50:53,100 --> 00:50:56,170 meteor lägga till konton-meteor-utvecklare. 901 00:50:56,170 --> 00:51:06,192 902 00:51:06,192 --> 00:51:07,900 Under tiden jag vill också att rekommendera 903 00:51:07,900 --> 00:51:11,340 några andra paket för dina projekt. 904 00:51:11,340 --> 00:51:14,670 Det kan visa sig användbart att inkluderar jQuery paketet. 905 00:51:14,670 --> 00:51:17,909 Detta gör att du kan använda jQuery i dina kunder. 906 00:51:17,909 --> 00:51:21,200 Du kan bara göra det med en rad, och Meteor kommer att se till att du är uppdaterad 907 00:51:21,200 --> 00:51:21,825 på jQuery. 908 00:51:21,825 --> 00:51:24,330 909 00:51:24,330 --> 00:51:27,450 Jag rekommenderar också houston: admin. 910 00:51:27,450 --> 00:51:31,550 >> Detta är ungefär som en phpMyAdmin typ av verktyg för din MongoDB. 911 00:51:31,550 --> 00:51:33,890 Detta gör att du kan redigera dina data helt enkelt 912 00:51:33,890 --> 00:51:37,950 utan att behöva gå till Mongo skalet, som om jag hade gjort tidigare i seminariet. 913 00:51:37,950 --> 00:51:43,160 914 00:51:43,160 --> 00:51:47,101 Så nu att det körs, låt oss köra Meteor igen och se vad vi kan göra. 915 00:51:47,101 --> 00:51:56,240 916 00:51:56,240 --> 00:52:00,720 >> Du märker att lägga till några paket kan ha dem presentera några varningar. 917 00:52:00,720 --> 00:52:02,720 Du behöver inte oroa dig om det med Houston. 918 00:52:02,720 --> 00:52:06,040 919 00:52:06,040 --> 00:52:10,810 Så kan vi nu har möjlighet att konfigurera Meteor admin. 920 00:52:10,810 --> 00:52:15,080 Och de ger dig anvisningar om du vill ställa upp det. 921 00:52:15,080 --> 00:52:17,750 922 00:52:17,750 --> 00:52:20,440 >> Vi kan också nu gå till / admin. 923 00:52:20,440 --> 00:52:23,280 Detta kommer till dig av Houston paketet. 924 00:52:23,280 --> 00:52:27,470 Och det här är Meteor admin-gränssnittet. 925 00:52:27,470 --> 00:52:30,660 Du skapar bara en administratörskonto, som så. 926 00:52:30,660 --> 00:52:38,150 Och om du uppdatera sidan, kanske du har några samlingar som visar upp. 927 00:52:38,150 --> 00:52:40,980 928 00:52:40,980 --> 00:52:43,460 >> Det är ett mycket användbart verktyg, och jag rekommenderar den. 929 00:52:43,460 --> 00:52:46,717 930 00:52:46,717 --> 00:52:49,050 Du kan se att eftersom houston gav vissa fel, 931 00:52:49,050 --> 00:52:52,330 Vi har inte några samlingar visar upp just nu. 932 00:52:52,330 --> 00:52:56,800 Det sätt som du skulle använda Houston är att se den här funktionen blir 933 00:52:56,800 --> 00:52:58,860 kallas i dina enkla-todos. 934 00:52:58,860 --> 00:53:01,370 Så Houston inte vet vad mina arbetsuppgifter är. 935 00:53:01,370 --> 00:53:04,490 >> Vi satte upp en Mongo insamling kallas arbetsuppgifter. 936 00:53:04,490 --> 00:53:11,390 Låt oss gå in i enkla-todos och bara se till att i JavaScript, 937 00:53:11,390 --> 00:53:16,295 Vi har lagt arbetsuppgifter till våra samlingar. 938 00:53:16,295 --> 00:53:19,340 939 00:53:19,340 --> 00:53:25,670 Vi har nu sparat, och det är att bygga ansökan, uppfriskande. 940 00:53:25,670 --> 00:53:26,750 Och låt oss se. 941 00:53:26,750 --> 00:53:29,090 Nu har vi några uppgifter. 942 00:53:29,090 --> 00:53:32,630 Och vi kan lägga till några nya uppgifter. 943 00:53:32,630 --> 00:53:35,840 Men om vi vill lägga uppgifter, låt oss göra det med själva appen. 944 00:53:35,840 --> 00:53:39,660 945 00:53:39,660 --> 00:53:41,050 >> Nu kan vi lägga till några uppgifter. 946 00:53:41,050 --> 00:53:53,410 Hej, detta är en uppgift. 947 00:53:53,410 --> 00:53:57,080 Det verkar slags märkligt att vi inte ser några uppgifter. 948 00:53:57,080 --> 00:54:00,290 949 00:54:00,290 --> 00:54:05,260 Vi kanske vill kolla om vi fick något fel här, eller kanske någon annanstans. 950 00:54:05,260 --> 00:54:08,810 951 00:54:08,810 --> 00:54:20,260 Om vi ​​går in i admin, verkar så konstigt. 952 00:54:20,260 --> 00:54:24,080 Om du drar förvaret Efter detta seminarium, 953 00:54:24,080 --> 00:54:27,580 Jag kommer att se till att enkel-todos arbetar med Houston. 954 00:54:27,580 --> 00:54:30,370 Tyvärr verkar det inte till att arbeta i detta ögonblick. 955 00:54:30,370 --> 00:54:34,810 956 00:54:34,810 --> 00:54:37,640 >> Finns det några andra frågor? 957 00:54:37,640 --> 00:54:41,800 Houston normalt är en verktyg som fungerar mycket bra. 958 00:54:41,800 --> 00:54:44,510 Houston är specifikt lite buggier än de andra, 959 00:54:44,510 --> 00:54:49,470 men jag rekommenderar det när det fungerar. 960 00:54:49,470 --> 00:54:50,080 Yeah. 961 00:54:50,080 --> 00:54:52,395 >> PUBLIK: Vad kan du göra med Facebook-paketet 962 00:54:52,395 --> 00:54:54,270 en gång en användare är inloggad in med sina Facebook? 963 00:54:54,270 --> 00:54:55,978 >> ROGER ZURAWICKI: En gång en användares loggat in, 964 00:54:55,978 --> 00:54:59,540 Du kan ringa till Facebook API. 965 00:54:59,540 --> 00:55:02,890 En hel del av det ligger mer i hur Facebook öppnar deras API. 966 00:55:02,890 --> 00:55:05,120 Meteor, se till att du har anslutningen. 967 00:55:05,120 --> 00:55:09,300 Men allt efter det är en fråga att lära sig hur man använder Facebook API. 968 00:55:09,300 --> 00:55:10,216 PUBLIK: [OHÖRBAR]. 969 00:55:10,216 --> 00:55:17,756 970 00:55:17,756 --> 00:55:18,880 ROGER ZURAWICKI: Okej. 971 00:55:18,880 --> 00:55:21,670 Tack så mycket för Detta CS50 seminarium i Meteor. 972 00:55:21,670 --> 00:55:24,060 Om du har några frågor, Du kan maila mig 973 00:55:24,060 --> 00:55:28,319 på min e-postadress listade nedan seminariet. 974 00:55:28,319 --> 00:55:30,110 Och jag ska vara glad att svara på dina frågor. 975 00:55:30,110 --> 00:55:33,020 Jag ska också vara på CS50 Hackathon bör 976 00:55:33,020 --> 00:55:35,550 du behöver hjälp med dina Meteor projekt. 977 00:55:35,550 --> 00:55:37,650 Tack för att du tittar på. 978 00:55:37,650 --> 00:55:38,816