It's called graceful degradation... which you get through progressive enhancement. You should at LEAST have the page loading something resembling useful content with fallback navigation WITHOUT CSS or JavaScript before you even THINK about adding either to the page. That way when/if fancy bits of the scripting or style goes bits-up face-down the user at least gets something RESEMBLING useful content.
... at least in the case of something actually content oriented. There are some things -- like webgl games -- you're just not going to pull that off with. In that case, well, at least tell the user something is wrong with feature detection and/or the noscript tag. ... and for the love of Christmas, NOT using "browser sniffing"!
But really if it's a business website with a content oriented UI, making it a web application should be a fancy add-on to make it nicer, NOT the only means of providing access to the CONTENT.
... since all this 'web application' crap pretty much tells the infirmed, the poor, and people in many workplaces to go perform an anatomically impossible lewd act upon themselves. Hence why SO many of these "web apps" are sloppily implemented half-assed crap built by people who really have little if any business using HTML, CSS, or JavaScript in the first damned place!
Pretty sad when the core technology -- HTML -- was created to allow EVERYONE to access content regardless of device capabilities or physical limitations. An ideal that few these days seem to embrace until they end up where most of the people coming to me hat-in-hand as prospective clients end up. In court for WCAG or similar guideline violations.
Make a normal website FIRST, then ENHANCE it with your web crapplets. You'll actually find that said process simplifies the whole shebang since you've got a more solid foundation to build off of in terms of semantics and letting HTML/CSS handle more of the heavy lifting... instead of derping EVERYTHING into the damned JavaScript whether it belongs there or not. (see react, vue, CSR, and other such mentally enfeebled trash.)
Users in workplaces stuck on legacy Windows either due to budget constraints or application lock-in, scripting blocked for security or bandwidth concerns, etc, etc will end up thanking you for it.
If you're making something that's going to be shown in the browser to "any user that comes along" it should be able to handle the following situations:
1) Images off/blocked
2) CSS off/blocked
3) Scripting Off/blocked
If you're not managing that you probably shouldn't be working on something that's web-facing that isn't a standalone application built with something like UWP, nw.js, electron, etc, etc.
JUST like how you should at least TRY to meet WCAG minimums, TRY to have semantic markup, TRY to maintain separation of presentation from content even down to the class/id level. (the reason HTML and CSS are separate specifications), etc, etc, etc...
I'm not saying you can't do all that fancy stuff, I'm just saying have a bloody plan for when all the fancy crap goes bits-up face-down! EVEN if that plan is degrading all the way back to just plain HTML with no scripting and no style.
Again, progressive enhancement. Start with your content or a reasonable facsimile of future content in a flat text editor and organize it to make sense as if HTML, CSS, and JavaScript don't even exist. THEN you mark it up semantically your tags saying what things ARE, NOT what you want them to look like. Being the semantic stage neutral containers like DIV and SPAN don't belong there, and if you use H1..H6 and HR properly you can also skip the (idiotically pointlessly redundant dragging us back to browser wars mentality) HTML 5 "structural" tags (article, aside, main, nav, section, header, footer). THEN you bend that markup to your will with CSS to create the layouts, leveraging as much of the semantics as you can so you're not pissing all over the HTML with classes and ID's for nothing, only adding your neutral containers (DIV, SPAN) and classes/id's when you absolutely need them or as wrappers to isolate semantic branches. Said classes and ID's ALSO not saying what you want things to look like since that has ZERO damned business in the HTML. (hence why classes like w3-red, text-center, box-shadow, and so forth are pure mental huffing midgetry -- you want that go back to writing HTML 3.2 with tables for layout and font/center tags.).
THEN AND ONLY THEN do you really have any business ENHANCING the page with JavaScript, creating an application out of -- or running one atop -- that accessible baseline.
It's not difficult, it's just that people MAKE it difficult! With bloated garbage frameworks, nonsensical pre-processor rubbish, and generally pissing on the entire reason we even have websites in the first huffing place!
But let me tell you what I REALLY think!