At the place where I work, we have developed specific tools (with VB6), which interact with and generate/upload serverside VB6-Code
(parts of the serverside-code is generated as VBScript-snippets in a serverside DB, rarely-changing-stuff is sitting in VB6-COM-Dlls,
then interacting with an MS-SQLServer and also SQLite - on the same machine which hosts also the IIS-Webserver-instance) ...
The clientside stuff (the javascript-snippets) is for the most part declarative and auto-generated
(targetting the OpenUI5-js-framework, which supports Read/Write and ReadOnly JSON-Model-bindings)
If you look at this little Fiddle here:
https://jsfiddle.net/vnw96jfu/embedded/result,html,js
... there you can see the OpenUI5-stuff in action.
The fiddle does not contain any "hidden js-libs" - everything is in "plain sight" in only two parts:
1) the static (basically never-changing) HTML-content for this type of SPA (Single-Page-Application) - basically only acting as the loader for the Core-js-framework)
2) and then the (here hand-written) javascript-code, which demonstrates the DataBinding-capabilities of OpenUI5-controls in a little "hello-world-like" example
If you look at the few lines of js-code, you can easily see - how well that could be "automated" via a (VB6-implemented)
declarative Designer+Generator which then puts out the appropriate js-lines (after assigning the proper Model-Field-Mappings)...
Perhaps when I find a bit more time, I'll post a SubSet of what we use at work (making it "more generic") -
but feel free, to explore the OpenUI-Widget-classes yourself - there's no need to wait for me...
https://openui5.hana.ondemand.com/#/api
In the top-left-corner of the able linked page, you can filter the tree (e.g. for the mobile-namespace, by typing: sap.m )
...
or for a concrete widget-class inside the sap.m namespace, you could type sap.m.input... which should then offer:
https://openui5.hana.ondemand.com/#/...Input/overview
But make no mistake (despite the elegance which my example hopefully brought across) -
the paradigm (in the js-part, that later runs in the Browser) is heavily based on JSON-DataBinding.
Only VB6-Apps which make heavy usage of DataBinding in each and every Form they contain, would have a chance with some kind of semi-automated porting.
Though most VB6-Apps are not written that way - and thus "the Forms" are faster developed, when you do it from scratch (against the same DB-data).
The thing where we had to make only very few code-changes, is our DataLayer-Dlls (where we talk to the DB, and which all run at the serverside).
Olaf