Implement dynamic routing in Express by utilizing handlebars templates

My current goal is to extract a page name from a GET request using express so that I can dynamically load a handlebar file based on this specified name.

The challenge arises when the page loads, as express continues to receive requests for assets such as style.css, bundle.js...

Is there a way to isolate and retrieve just the requested page name?

Below is an illustration of what I am attempting to achieve:

app.get('*', (req, res) => {
   let pageCalled = req.originalUrl;
   let page = pageCalled.replace(' ', '').replace(/\//g, '');

   if (page === '') page = 'index';

   if (fs.exists(`./views/pages/${page}.hbs`)) {
       res.render(`pages/${page}`);
   } else {
       res.render(`pages/404`);
}})

Answer №1

Utilizing regular expressions in express routing can be incredibly helpful.

app.get(/.*html$/, (req, res) => {
  // Implement necessary actions here
})

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

step-by-step guide on reading images locally and converting them into file objects with node.js

I am facing an issue with reading a .png file in my node project folder and sending it to a remote REST API that expects form-data format. This API uploads the image to S3 and returns the image URL. Previously, I used this API for image uploads in the fro ...

What is the best way to structure an array for JSON transmission between Express/NodeJS and ReactJS?

I have a query similar to the one posted on POST array of objects to REST API. However, I need a different formatting for my answer. My dataresults array contains Objects like: [ { reviewID: 5, TextComment: 'lol2314'}, { reviewID: 4, TextC ...

Sorting complex strings in Typescript based on the dates contained within them

How can I sort a list of 2 strings with dates inside them so that the earlier one always comes first? The date is always after the second comma. For example, const example = ["AAA,5,2020-09-17T21:14:09.0545516Z", "AAA,0,2020-09-03T20:38:08. ...

Unable to locate the value of the query string

I need help finding the query string value for the URL www.example.com/product?id=23 This is the code I am using: let myApp = angular.module('myApp', []); myApp.controller('test', ['$scope', '$location', '$ ...

What is the proper way to utilize the setState() function in ReactJS?

I am new to the world of ReactJS and I have been exploring the concepts of state and setState(). While trying to implement a name change using setState(), I found myself wondering where exactly in my code should I invoke the setState() method: Should I c ...

The waypoints.js snippet seems to be malfunctioning in this specific context

After experimenting with waypoints.js (jQuery.waypoints) for some time, I've been attempting to utilize this library to incorporate animations on children elements within a specific container. Here is the approach I have taken: var waypoints = $( ...

Adding wrapAll in jQuery or PHP after tags with identical IDs can be achieved by selecting all the target elements

web development <?php foreach ($forlop as $value) : ?> <?php $stringTitle = substr($value->getTitle(), 0, 1); ?> <?php if(is_numeric($stringTitle)){ echo "<h3 id ...

Exploring how process.argv in NodeJS can be utilized within JavaScript code compiled by

I'm having trouble compiling a basic TypeScript file using webpack (with 'awesome-typescript-loader') that needs to access command line arguments. It seems like the compiled JavaScript is causing a problem by overriding the Node 'proce ...

What is the best way to choose an HTML element in React?

Is there a way in React to change the theme value based on localStorage and set it to either light or dark mode? https://i.sstatic.net/Iecsj.jpg I am familiar with using Ref hooks in components, but how can I access a DOM element in the index.html file? ...

Sending AJAX information to multiple pages

I have created an HTML page where I am struggling to pass two variables using the POST method to a PHP page. The PHP page is supposed to accept these variables and then call an API to retrieve data based on them. However, my challenge is in receiving this ...

Success message displayed for Ajax form submission, yet email delivery remains pending

In my PHP code for sending emails, I have a function called "Send to friend" that works perfectly with standard PHP post. This confirms that the sendtomail.php file is functioning correctly as well. /* AJAX Code for Send to Friend */ $(function() { $(&ap ...

manipulating data using javascript

I have an array of objects like this: var arr = [{'name':'one','age':24},{'name':'two','age':21}] Then I assigned this array to another variable var newVar = arr. Next, I modified the value of a ...

How do I verify response values in Postman tests when the input parameter may be empty and can have multiple possible values?

In my program, there is an input parameter known as IsFruit that can have a value of either 0 or 1. If IsFruit is set to 0, the response should return fruits with a FruitsYN value of N. Similarly, if it is set to 1, FruitsYN should be Y. In cases where I ...

Is there a way to prevent the repositioning of bootstraps (reactstrap) drop-down menu when the screen sizes are altered?

When in portrait mode, there is ample space for the drop-down menu to display below the button you click to reveal it: https://i.sstatic.net/WEgYl.png However, when the screen size shrinks (such as in landscape mode on certain mobile devices), the menu&a ...

What mistakes am I making in my usage of React hooks in this situation?

As part of my journey through the FullstackOpen course at the University of Helsinki, I am working on creating a simple Phonebook application. In troubleshooting my code, I've noticed that my 'filterBy' state is consistently one step behind, ...

The elements within the "ng-repeat" directive are not appearing as expected

My application makes a get request using Angular's http service and then loops over the returned data to display an unordered list in the view. However, I am facing an issue where the data is available after the get request but is not being displayed ...

Getting access to scope variables in an Angular controller written in ES6 style can be achieved by using

In my new Angular project, I decided to switch to using ES6 (Babel). However, I encountered an issue where ES6 classes cannot have variables. This led me to wonder how I could set my $scope variable now. Let's consider a simple controller: class Mai ...

Troubleshooting static resource serving in Node.js on OpenShift

After setting up a basic node0.10 cartridge on OpenShift, I encountered an issue with my index.html file where I couldn't access certain files from the node_modules folder. Instead, I kept receiving 404 http errors. The imports in my index.html are s ...

Execute an asynchronous request using Javascript to communicate with a Spring Controller

I've created a JSP page that includes some JavaScript code: function sendData(tableID) { var table = document.getElementById(tableID); var dataArray= new Array(); for (var i = 1;i<table.rows.length; i++){ var row = table. ...

A guide on how to use Javascript to take a screenshot of an entire webpage

When a user triggers a script, it injects JavaScript code into the current page to make DOM changes. After interacting with the page, the user may want to save their modifications for later viewing or editing. However, if the original page source is edited ...