So i've dove into Node/Express head first (w/Learning Javascript Intermediate stuff) and im a bit confused at why a "view engine" like Jade or EJS is required?
I can't seem to find something that uses just normal HTML5? Or is it that I cannot pass values to normal HTML with express?
Lets pretend I had an index.html page that loads and when I "Login" it loads with the user name posted at the top (Just for example). Can I not pass values to a normal .html file within express?
Is a View Engine necessary for Express/Node?
No, it is not required. Express can happily serve static HTML5 files as you wish. You don't need a view engine for that. You can either create custom routes and use res.sendFile() for each page or you can use express.static() to automatically serve a whole directory of static HTML files or you can write your own code to construct whatever HTML5 content you want to send and use res.send() to send it.
Where a view engine is required is if you want a template-type of system where you can create an HTML template with placeholders for dynamic content and then have dynamic values inserted into the page on the server.
Can I not pass values to a normal .html file within express?
No, you can't do that with regular express. Express has facilities for serving static HTML files, but not for inserting dynamic content into an HTML file. That's what you use a view engine for. Express did not build that capability in itself because there are dozens of different view engine philosophies and Express didn't want to mandate one style so instead it supports a view engine interface for rendering from a template and you can select which view engine you want to use.
To answer the main question - a view engine is not necessary for express/node.
You're right though, you can't pass variables/values to pure html. The view engine is something that looks at the data you pass and generates the html markup for you.
Another approach to using a view engine is to use s front-end library/framework like jquery, react, or angular (or you can use plain javascript). The javascript can retrieve data (with ajax/fetch) and bind it to your html - well I guess it wouldn't be bound if you're using plain javascript or jquery, but you can update the DOM with your data.