Next.js allows you to pre-render pages at build time, which is a game-changer for web development. This feature is particularly useful for static sites and blogs.
With Next.js, you can collect page data at build time using the `getStaticProps` method. This method is called on the server and allows you to fetch data from an API or database.
By collecting page data at build time, you can improve the performance of your website and reduce the load on your server. This is especially important for websites with a large number of pages or those that receive a high volume of traffic.
Next.js Build Process
Next.js lets us know that it's running through its build process, including optimizing the app for performance, compiling the app, and collecting data.
This process starts with a breakdown of how it's built each page, allowing us to see which pages and assets were statically generated.
All of the pages and assets were statically generated with one route tagged as requiring a server, which would be our API route.
Next.js provides the ability to build lambda functions as part of the Next.js API, but for the purposes of this walkthrough, we can ignore the API route.
Next.js generates pages by detecting how an app is fetching its data, using APIs like getStaticProps and getServerSideProps to determine how to build the app.
If you only use getStaticProps to fetch data, Next.js will fetch that data at build time, leaving you with a completely static page.
This static page is then served on first load, with the scripts hydrating the page during this process, but ideally with fewer changes or no changes at all.
How Next.js Works
Next.js is a powerful tool for building fast and scalable web applications, and understanding how it works is crucial for getting the most out of it.
Next.js uses Static Generation to render pages at compile time, which gives us the ability to serve the entire content on first load.
During the build process, Next.js optimizes the app for performance, compiles the app, and collects data.
Next.js provides a few different APIs to fetch data, including getStaticProps and getServerSideProps, which determines how Next.js will build your app.
If you only use getStaticProps to fetch data, Next.js will fetch that data at build time, leaving you with a completely static page.
Next.js also provides the ability to export the app into static files into a separate directory after the app has been built.
To do this, you would run the next build command to build the app, then run next export, which makes the app available as static files in the out directory.
Next.js shows a breakdown of how it's built each page during the build process, including statically generated pages and assets.
This breakdown is displayed using a legend at the bottom, which helps you understand the different components of your app.
Next.js can also build lambda functions as part of the Next.js API, but for the purposes of this walkthrough, we can ignore the API route.
Static Generation renders the page mostly like it would in the browser but at compile time, giving us the ability to serve the entire content on first load.
Scripts still hydrate the page during this process, but ideally with fewer changes or no changes at all.
Building a Next.js App
Building a Next.js App is a straightforward process that Next.js guides you through. Next.js lets you know that it's running through its build process, including optimizing the app for performance, compiling the app, and collecting data.
During the build process, Next.js shows you a breakdown of how it's built each page. This is useful for understanding how your app is structured and what's being generated statically.
Next.js provides the ability to export the app into static files into a separate directory after the app has been built. To do this, you would run the next build command to build the app, then run next export which makes the app available as static files in the out directory.
Building a Next.js App
To build a Next.js app, you'll need Node installed with npm and a terminal to run commands. This is the only requirement to get started.
Next.js lets you know it's running through its build process, which includes optimizing the app for performance, compiling the app, and collecting data. This process is essential for creating a fast and efficient app.
Next.js shows a breakdown of how it's built each page, giving you a clear understanding of what's happening behind the scenes. This is a great way to see how your app is coming together.
Using the legend at the bottom, you can see which pages and assets were statically generated. Note that API routes require a server, but you can ignore them for now.
Next.js provides the ability to export the app into static files in a separate directory after the build process is complete. This is done by running the next build command and then next export.
Running next export makes the app available as static files in the out directory. This is a key step in creating a static app with Next.js.
What to Build?
As you start building your Next.js app, you get to decide what kind of tool you want to create.
You can use other similar environments, frameworks, or even just Vercel functions directly to create a similar tool.
The possibilities are endless, so take some time to think about what you want to build.
You can even test grabbing bits of information from a page by using Puppeteer inside of your function.
Collecting a screenshot of that website is also a great idea to see how it works.
Sources
- https://developer.mozilla.org/en-US/blog/static-site-generation-with-nextjs/
- https://www.freecodecamp.org/news/static-site-generation-with-nextjs/
- https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
- https://spacejelly.dev/posts/build-a-web-scraper-with-puppeteer-next-js-api-routes
- https://sentry.io/answers/next-js-13-window-is-not-defined/
Featured Images: pexels.com