Skip to content

Component-based Classic ASP – React in Classic ASP???

Lately I have been working a lot with React and Redux, and have found the concept of creating reusable components to be very useful. I have also been blessed with working on some Classic ASP, which has got me thinking…

Could we create reusable components using Classic ASP?

I’ve had a bit of a play with a simple project structure that enables you to create some basic components. It is not as pretty as React (as you would expect), but it seems to get the job done!

Classic ASP Component Project Structure

How do we write a component?

The example components that I have created are very simple. They have only one publicly exposed function called Render. All this method does is return compiled HTML.
My first thought was to perhaps just build the HTML inside the Render function, but I wanted to enable all the nice snippets that I can use in Atom. So I separated out the HTML inside its very own file. This is then read by the Render method.

Alright, lets see the code!

The Header Component

The BodyContainer Component

The includes.asp file just includes all the components.

How do I add components to my page?

In the example project the components are used in the index.asp page. I have included Bootstrap just to make things look pretty.

Basically, all we are doing is a Response.Write and passing the returned HTML from the components Render function.

What next?

As I said in the beginning, this is just a very basic example of creating reusable components for Classic ASP. You could:

  • Create components that could take in some parameters to affect how the component is rendered.
  • Create a routing component that decides what child components it needs to render (trying to simulate a SPA???)

I’m not saying that this is a good idea…it was just something I was thinking about 😄

Published inClassic ASPReact

One Comment

  1. Dude…this is brilliant! I am working for a company that has been using a classic asp application since 2005 with very little updates. I have been tasked with making it responsive and adding additional functionality (despite my pleas to start migrating to a newer platform) and this helped me a ton! Thank you very very much!

Comments are closed, but trackbacks and pingbacks are open.