All language subtitles for 002 Creating a Next.js Project_en

af Afrikaans
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bn Bengali
bs Bosnian
bg Bulgarian
ca Catalan
ceb Cebuano
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
tl Filipino
fi Finnish
fr French
fy Frisian
gl Galician
ka Georgian
de German
el Greek
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hmn Hmong
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
km Khmer
ko Korean
ku Kurdish (Kurmanji)
ky Kyrgyz
lo Lao
la Latin
lv Latvian
lt Lithuanian
lb Luxembourgish
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mn Mongolian
my Myanmar (Burmese)
ne Nepali
no Norwegian
ps Pashto
fa Persian
pl Polish
pt Portuguese
pa Punjabi
ro Romanian Download
ru Russian
sm Samoan
gd Scots Gaelic
sr Serbian
st Sesotho
sn Shona
sd Sindhi
si Sinhala
sk Slovak
sl Slovenian
so Somali
es Spanish
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
te Telugu
th Thai
tr Turkish
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
or Odia (Oriya)
rw Kinyarwanda
tk Turkmen
tt Tatar
ug Uyghur
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:03,000 --> 00:00:05,073 In this video we'll set up 2 00:00:05,073 --> 00:00:07,146 our first Next.js project. 3 00:00:07,226 --> 00:00:11,218 Now, the easiest way to initalize a new project 4 00:00:11,218 --> 00:00:14,442 is to use the "create-next-app" command, 5 00:00:14,442 --> 00:00:16,937 that you can run in a terminal 6 00:00:16,937 --> 00:00:19,016 with "npx" as shown here. 7 00:00:19,099 --> 00:00:21,985 That command will ask you a few questions, 8 00:00:21,985 --> 00:00:24,022 like the name of your project, 9 00:00:24,022 --> 00:00:26,014 if you want to use TypeScript 10 00:00:26,014 --> 00:00:28,006 rather than plain JavaScript, 11 00:00:28,075 --> 00:00:29,521 and a few other things, 12 00:00:29,521 --> 00:00:32,232 and then it will generate a project for you, 13 00:00:32,232 --> 00:00:34,186 with everything already set 14 00:00:34,186 --> 00:00:35,994 up based on your choices. 15 00:00:36,066 --> 00:00:37,741 This is very convenient, 16 00:00:37,741 --> 00:00:39,600 and I definitely recommend 17 00:00:39,600 --> 00:00:41,316 using "create-next-app", 18 00:00:41,388 --> 00:00:44,229 once you're familiar with Next.js. 19 00:00:44,229 --> 00:00:47,894 However, it's not really the best choice when 20 00:00:47,894 --> 00:00:50,826 learning Next.js for the first time, 21 00:00:50,907 --> 00:00:53,537 because "create-next-app" generates a 22 00:00:53,537 --> 00:00:56,166 project with lots of different files, 23 00:00:56,237 --> 00:00:58,455 using many different features, 24 00:00:58,455 --> 00:01:01,122 and it can be a bit overwhelming 25 00:01:01,122 --> 00:01:02,622 to start that way. 26 00:01:02,705 --> 00:01:04,721 So we'll set up our first 27 00:01:04,721 --> 00:01:06,736 project manually instead, 28 00:01:06,817 --> 00:01:09,387 and add one feature at a time, 29 00:01:09,387 --> 00:01:11,770 to make sure you fully understand 30 00:01:11,770 --> 00:01:13,864 all the various moving parts. 31 00:01:13,936 --> 00:01:15,469 Let's see how to do that. 32 00:01:15,469 --> 00:01:18,882 I'll use Visual Studio Code as my editor, 33 00:01:18,882 --> 00:01:22,112 and this is just its initial Welcome screen. 34 00:01:22,112 --> 00:01:24,174 To create a new project, I'll 35 00:01:24,174 --> 00:01:25,667 go and Open a folder. 36 00:01:25,738 --> 00:01:28,284 Now, I like to keep all my projects 37 00:01:28,284 --> 00:01:30,466 in a folder called "Projects", 38 00:01:30,538 --> 00:01:34,159 but you can select a different location on your machine, 39 00:01:34,159 --> 00:01:34,806 of course. 40 00:01:34,870 --> 00:01:37,492 The important thing is that we want to 41 00:01:37,492 --> 00:01:39,769 create a New Folder inside there, 42 00:01:39,838 --> 00:01:42,070 and call it "next-reviews", 43 00:01:42,358 --> 00:01:44,667 that will be the name of our project. 44 00:01:44,667 --> 00:01:46,735 With this new folder selected, 45 00:01:46,735 --> 00:01:48,563 I can now click Open, 46 00:01:48,695 --> 00:01:50,804 and this will show that folder 47 00:01:50,804 --> 00:01:52,351 in Visual Studio Code. 48 00:01:52,421 --> 00:01:54,760 Right now it's completely empty. 49 00:01:54,760 --> 00:01:56,667 Let's go and create a new file, 50 00:01:56,667 --> 00:01:58,825 called "package.json", 51 00:01:58,825 --> 00:02:02,852 that we'll use to manage our project with "npm". 52 00:02:02,852 --> 00:02:05,897 This file must contain a JSON object, 53 00:02:05,897 --> 00:02:08,947 with at least the "name" of our project, 54 00:02:08,947 --> 00:02:10,997 that is "next-reviews". 55 00:02:11,607 --> 00:02:13,989 Then we want to set the "private" 56 00:02:13,989 --> 00:02:15,361 property to "true", 57 00:02:15,433 --> 00:02:18,349 because this is not a package we want 58 00:02:18,349 --> 00:02:20,793 to publish to the npm registry. 59 00:02:20,872 --> 00:02:23,535 At this point we can save this file. 60 00:02:23,535 --> 00:02:25,994 Now I'll open a New Terminal, 61 00:02:25,994 --> 00:02:28,392 and I'm using the menu just to show 62 00:02:28,392 --> 00:02:30,653 you where to find the right item, 63 00:02:30,721 --> 00:02:34,666 but I'll be using a keyboard shortcut from now on. 64 00:02:34,666 --> 00:02:38,048 Also, I'm using the terminal integrated with 65 00:02:38,048 --> 00:02:39,431 Visual Studio Code 66 00:02:39,508 --> 00:02:42,462 just so everything is in the same window, 67 00:02:42,462 --> 00:02:45,849 but you can use a separate terminal if you prefer, 68 00:02:45,849 --> 00:02:46,526 of course. 69 00:02:46,594 --> 00:02:48,690 Anyway, what we want to do 70 00:02:48,690 --> 00:02:50,707 here is run "npm install" 71 00:02:50,787 --> 00:02:53,578 to download the necessary dependencies 72 00:02:53,578 --> 00:02:54,754 for our project. 73 00:02:54,827 --> 00:02:58,339 We need "next", that is the Next.js package, 74 00:02:58,339 --> 00:03:01,490 and also "react" and "react-dom", 75 00:03:01,490 --> 00:03:05,624 because Next.js is built on top of React. 76 00:03:05,624 --> 00:03:08,774 This will download everything that's needed. 77 00:03:08,774 --> 00:03:12,827 As you might know, npm saves all the files 78 00:03:12,827 --> 00:03:16,012 inside the "node_modules" folder. 79 00:03:16,108 --> 00:03:18,533 In fact, inside here we can see the 80 00:03:18,533 --> 00:03:20,473 three packages we requested, 81 00:03:20,543 --> 00:03:23,814 along with all their transitive dependencies. 82 00:03:23,814 --> 00:03:27,150 Ok. We can close the Terminal for the moment. 83 00:03:27,150 --> 00:03:30,040 What we need now in our project is 84 00:03:30,040 --> 00:03:32,760 a folder where to put our pages. 85 00:03:32,845 --> 00:03:36,555 And in this example we'll use the "app" folder, 86 00:03:36,555 --> 00:03:39,002 that is the new Next.js router. 87 00:03:39,081 --> 00:03:41,713 Inside this folder we need a 88 00:03:41,713 --> 00:03:44,063 file called "layout.jsx". 89 00:03:44,157 --> 00:03:47,169 This will contain the "root layout", 90 00:03:47,169 --> 00:03:49,854 that is like a template HTML 91 00:03:49,854 --> 00:03:52,443 document for all our pages. 92 00:03:52,538 --> 00:03:55,882 This file must export a React component 93 00:03:55,882 --> 00:03:57,940 as the "default" export, 94 00:03:58,026 --> 00:04:00,883 and we'll write a function component, 95 00:04:00,883 --> 00:04:02,427 called "RootLayout". 96 00:04:02,504 --> 00:04:05,303 The component name doesn't actually matter, 97 00:04:05,303 --> 00:04:07,149 the important thing is that 98 00:04:07,149 --> 00:04:08,858 it is the default export. 99 00:04:08,927 --> 00:04:12,082 Here we'll return some JSX elements, 100 00:04:12,082 --> 00:04:15,808 and since this is the template for all our pages 101 00:04:15,808 --> 00:04:18,902 we want to start with the "html" element, 102 00:04:18,902 --> 00:04:21,447 which then contains the "body". 103 00:04:21,447 --> 00:04:23,760 It's also good practice to set the 104 00:04:23,760 --> 00:04:25,665 "language" for the document; 105 00:04:25,733 --> 00:04:28,556 let's write "en" for English. 106 00:04:28,556 --> 00:04:32,062 So, this is a minimal HTML document. 107 00:04:32,062 --> 00:04:34,618 Since this is effectively a template, 108 00:04:34,618 --> 00:04:37,197 we'll want to insert the contents 109 00:04:37,197 --> 00:04:38,682 for each page here. 110 00:04:38,760 --> 00:04:41,876 We can do that in the standard React way. 111 00:04:41,876 --> 00:04:44,700 Like all components, this RootLayout 112 00:04:44,700 --> 00:04:46,740 will receive some "props". 113 00:04:46,818 --> 00:04:50,596 And we can use the object destructuring syntax 114 00:04:50,596 --> 00:04:53,306 to extract individual properties. 115 00:04:53,388 --> 00:04:55,667 Each layout component will receive 116 00:04:55,667 --> 00:04:57,611 a property called "children", 117 00:04:57,678 --> 00:05:00,020 that will contain the elements 118 00:05:00,020 --> 00:05:01,581 for a specific page. 119 00:05:01,659 --> 00:05:05,979 So what we want to do is simply insert the "children" 120 00:05:05,979 --> 00:05:09,076 as a JSX expression inside the "body". 121 00:05:09,157 --> 00:05:11,459 We'll see this in action after 122 00:05:11,459 --> 00:05:13,378 we create our first page. 123 00:05:13,454 --> 00:05:16,312 Let's save this RootLayout now. 124 00:05:16,312 --> 00:05:20,527 By the way, I'll use ".jsx" as the extension 125 00:05:20,527 --> 00:05:23,975 for all files that contain JSX code, 126 00:05:24,071 --> 00:05:26,327 which effectively means any file 127 00:05:26,327 --> 00:05:28,584 that contains a React component. 128 00:05:28,655 --> 00:05:31,212 You can use ".js" instead for 129 00:05:31,212 --> 00:05:33,681 all the files if you prefer, 130 00:05:33,769 --> 00:05:35,670 but I think it's clearer to 131 00:05:35,670 --> 00:05:37,429 use a different extension 132 00:05:37,499 --> 00:05:40,040 for the files that contain React 133 00:05:40,040 --> 00:05:42,024 components with JSX code, 134 00:05:42,103 --> 00:05:45,509 as opposed to regular JavaScript files. 135 00:05:45,509 --> 00:05:48,219 Anyway, let's see how to run our app, 136 00:05:48,219 --> 00:05:49,391 in the terminal. 137 00:05:49,464 --> 00:05:51,927 Inside "node_modules" there's 138 00:05:51,927 --> 00:05:53,795 a folder called ".bin" 139 00:05:53,880 --> 00:05:58,001 where npm puts all the executable commands 140 00:05:58,001 --> 00:06:00,178 installed along with the packages 141 00:06:00,178 --> 00:06:01,497 in our dependencies. 142 00:06:01,562 --> 00:06:04,922 And there is a command line tool called "next", 143 00:06:04,922 --> 00:06:08,616 that we can use to manage our Next.js project. 144 00:06:08,616 --> 00:06:10,837 We can run it with "npx", 145 00:06:10,837 --> 00:06:12,715 that will automatically find 146 00:06:12,715 --> 00:06:14,258 it in the right folder, 147 00:06:14,325 --> 00:06:16,736 and if we pass the "--help" option 148 00:06:16,736 --> 00:06:19,678 it prints some usage instructions. 149 00:06:19,678 --> 00:06:24,320 The "next" tool accepts a command, that can be "build", 150 00:06:24,320 --> 00:06:25,924 "start", and so on. 151 00:06:26,008 --> 00:06:29,080 What we're interested in right now is "dev", 152 00:06:29,080 --> 00:06:32,298 that will start a local development server. 153 00:06:32,298 --> 00:06:35,083 So, let's try running "next dev". 154 00:06:35,318 --> 00:06:38,284 You can see that it started a server 155 00:06:38,284 --> 00:06:41,086 on our local machine on port 3000. 156 00:06:41,169 --> 00:06:42,889 If we click this link it will 157 00:06:42,889 --> 00:06:44,253 open it in the browser, 158 00:06:44,312 --> 00:06:48,164 and, at the moment, it just shows a 404 page, 159 00:06:48,164 --> 00:06:50,976 saying "this page could not be found". 160 00:06:50,976 --> 00:06:53,542 That's because we haven't actually 161 00:06:53,542 --> 00:06:56,032 created any pages in our app yet. 162 00:06:56,108 --> 00:06:58,264 But this already shows that 163 00:06:58,264 --> 00:07:00,341 the dev server is working. 164 00:07:00,420 --> 00:07:03,850 We'll create a home page in the next video. 165 00:07:03,850 --> 00:07:07,392 Before concluding, note how running "next 166 00:07:07,392 --> 00:07:10,588 dev" created a folder called ".next". 167 00:07:10,675 --> 00:07:13,319 This contains lots of files generated 168 00:07:13,319 --> 00:07:15,320 automatically by the server. 169 00:07:15,392 --> 00:07:17,267 We don't really need to worry 170 00:07:17,267 --> 00:07:18,691 about what's in there. 171 00:07:18,755 --> 00:07:21,912 But if you use Git for version control, 172 00:07:21,912 --> 00:07:24,832 you'll want to create a ".gitignore" file 173 00:07:24,832 --> 00:07:27,518 listing all the files and folders 174 00:07:27,518 --> 00:07:30,121 that should not be added to Git. 175 00:07:30,203 --> 00:07:33,915 Here you want to include that ".next" folder, 176 00:07:33,915 --> 00:07:36,010 along with "node_modules", 177 00:07:36,010 --> 00:07:40,286 that contains all the packages downloaded by npm. 178 00:07:40,286 --> 00:07:43,686 You don't have to use Git for this course, 179 00:07:43,686 --> 00:07:46,388 but I'm sure you'll use a version control 180 00:07:46,388 --> 00:07:48,695 system in a real world application. 181 00:07:48,761 --> 00:07:52,917 Anyway, we set up our Next.js project, 182 00:07:52,917 --> 00:07:55,387 by installing the dependencies 183 00:07:55,387 --> 00:07:57,281 listed in package.json. 184 00:07:57,364 --> 00:08:00,652 Then we created a RootLayout component 185 00:08:00,652 --> 00:08:02,728 inside the "app" folder, 186 00:08:02,815 --> 00:08:06,888 and started a local server by running "next dev". 13458

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.