https://codeytek.com/course/next-js-tutorials-for-beginners/
A Next JS Application Demo.
- Clone this repo by running
git clone https://github.com/imranhsayed/next-js-app
cd next-js-app
npm install
npm run dev
- simple-nextjs-app Simple next js app
- express-with-next)) Simple next js app with custom express server
- express-with-next-ssr)) Custom end point by creating express server, and displaying clean URL for single post (
'/post/slug' instead of '/post?id=22'
) - shared-component-navigation Example to show navigation and Creating Layout Component that can be shared between multiple component.
- dynamic-page-query-string Example to create dynamic post pages by extracting query string from url using
withRouter
- route-masking Example to show a different URL on the browser than the actual URL that your app sees by adding "as" props to the link.
const express = require( 'express' );
const next = require( 'next' );
const port = 3000;
const dev = process.env.NODE_ENV !== 'production';
const app = next( { dev } );
const handle = app.getRequestHandler();
/**
* app (next js ) will prepare our server with express, and then,
* wrap express application inside next
*
*/
app.prepare()
.then( () => {
const server = express();
/**
* This will override the default '/about' next js route and when user goes to '/about'
* it will serve index.js because route '/' which we are rendering in app.render() belongs to index.js
*/
server.get( '/about', ( req, res ) => {
return app.render( req, res, '/' );
} );
/**
* Wrapping express app inside next will allow us to create routes by using
* express js function inside of the next js build
*
* '*' means all routes which are not explicit , use this route for them.
*/
server.get( '*', ( req, res ) => {
return handle( req, res );
} );
server.listen( port, ( err ) => {
if ( err ) {
throw err;
}
console.warn( `Ready on http://localhost:${port}` );
} );
} );
dev
Starts local development server at http://localhost:3000build
Runs buildstart
Runs next js server
- Node
- Express
- React
- Next JS
- Webpack
- Babel