02Geek HTML5 and JavaScript, TypeScript, React, Flash, ActionScript online School
Previous VideoPrevious Video

Adding ES6/JSX Support on the Server

Setting up EJS as Your Layout System

In this tutorial, we transition from static HTML to a more dynamic server-side approach using EJS, a templating engine. By the end of this guide, you'll have your Express server configured to render reusable templates and integrate React components on the server.


Step 1: Move HTML to the Views Folder

  1. Organize your project structure:

    • Create a folder named views in your project root.
    • Move your static index.html file into the views folder.
  2. Rename the file to blank.ejs to reflect its new role as a reusable template.


Step 2: Install EJS

Run the following command to add EJS as a dependency:

npm install ejs --save

This step ensures EJS is available in your production environment.


Step 3: Configure Express to Use EJS

Update your server.js to integrate EJS:

// Load Express and initialize the app
const express = require('express');
const app = express();

// Set EJS as the templating engine
app.set('view engine', 'ejs');

// Serve static files from the "public" folder
app.use(express.static('public'));

// Define a route to render the EJS template
app.get('/', (req, res) => {
  res.render('layout/blank');
});

// Start the server
app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Step 4: Render the Template Dynamically

Now, when you navigate to http://localhost:3000, the server dynamically serves the blank.ejs file using the templating engine.


Why Use EJS?

EJS allows you to inject dynamic data, making it ideal for rendering server-side React components in future steps. This setup is critical for creating reusable layouts and integrating React into the server environment.

Ready to move forward? In the next video, we'll configure ES6 and JSX on the server to start rendering React components directly within this templating system.

Changes in 2024 and Modern Alternatives to EJS

As of 2024, EJS remains a straightforward and reliable templating engine for small or legacy projects. However, modern development practices often favor full-stack frameworks like Next.js or Remix, which integrate server-side rendering (SSR) and dynamic data handling natively without requiring a separate templating engine like EJS.

Key Updates:

  1. Component-Based Architectures: React developers increasingly use component-driven rendering, even on the server side. Frameworks like Next.js replace traditional template engines by dynamically rendering React components directly.

  2. Server Components: React's server components (introduced as a stable feature) provide a seamless way to fetch and render data on the server, reducing the need for intermediary templating layers like EJS.

  3. File-Based Routing: Next.js simplifies server rendering with a file-based routing system, negating the need for manual routing configurations common in Express + EJS setups.

  4. TypeScript Support: Modern projects often prioritize TypeScript for type safety. While EJS lacks TypeScript-first tooling, frameworks like Next.js fully embrace TypeScript.

  5. Static and Dynamic Rendering: Next.js offers a mix of static site generation (SSG), incremental static regeneration (ISR), and SSR, allowing developers to optimize for both performance and interactivity.

Summary of Using EJS in 2024:

  • Pros:
    • Lightweight and easy to integrate for small-scale applications.
    • Minimal overhead compared to full-stack frameworks.
  • Cons:
    • Limited scalability for larger projects.
    • Lack of advanced features like automatic code-splitting and prefetching.

Transition to Modern Tools: While EJS is still useful for educational purposes and small-scale applications, developers working on modern React projects should consider using Next.js. Its built-in SSR, API routes, and support for React's latest features make it a go-to choice for scalable, performant applications.

Next Steps:

For those continuing with EJS for templating, the next lecture will focus on integrating ES6 and JSX to bring React's power to the server. However, for production-scale applications in 2024, exploring Next.js for server-side React is highly recommended.

Building an Express Server

Learn to set up an Express server for React applications, including configuring Node.js and serving static files.

08:40

Setting up EJS as our Layout system

Learn how to integrate EJS into your Express server for rendering dynamic templates and enabling React server-side rendering.

06:49

Adding ES6/JSX Support on the Server

Learn how to enable ES6 and JSX support in Express with Babel Register and prepare your server for React rendering.

07:41

Server Side Rendering

Learn how to integrate server-side rendering (SSR) in React to boost performance and SEO.

08:29

Node Module Exports in Node.js for Production and Development

Learn how to use Node.js module exports to separate production and development environments effectively. Understand the CommonJS module system and improve project structure.

05:19