8 ms·
I hope that isn't considered too much self-promotion, but it's on topic. You can have what you want with our product, Elevate Web Builder. It creates single-p
by TimJYoung 10y ago
I hope that isn't considered too much self-promotion, but it's on topic.
You can have what you want with our product, Elevate Web Builder. It creates single-page web applications in a Delphi-like IDE:
http://www.elevatesoft.com/products?category=ewb&type=web http://www.elevatesoft.com/products?category=ewb&type=web
(examples at the bottom)
We're releasing version 2.06 shortly, and it has much-improved designer drawing performance and design-time/run-time layout performance. The layout performance improvements greatly improve the initial load performance.
The Delphi RAD model of development is actually perfect for single-page web applications because you're inherently only writing one layer of the application, the UI.
- lallysingh 10y agoAFAIK, HN typically encourages plugging your own product.
- markoutso 10y agoThat's very impressive. Do you have an example for http://todomvc.com/ http://todomvc.com/?
- TimJYoung 10y agoGood question - the quick answer is no, but we hope to put one out soon.
- revanx_ 10y agoI couldn't help but notice that your component library doesn't include a TreeView component, do you have this planned for the near future?
- TimJYoung 10y agoYes, it's the one glaring hole right now in the component library, besides a charting control. Both will be addressed before summer. Our upcoming 2.06 release includes a new menu bar control (horizontal), which was also a sorely-missed control.
- i336_ 10y agoI had a quick look and decided to try the audio player. The volume control isn't draggable. Also, I was a bit baffled at the framework's decision to inline the page font, which is unlikely to change. It looks like you're using your own HTTP server solution which doesn't seem to have caching, so all content is being redownloaded each visit. ETags and Last-Modified are very easy to implement, FWIW. (Note: I say that from the standpoint of reassurance, not insult!) This seems kind of interesting, but my immediate concerns are interoperability with plain JS and how rapidly blocking issues are resolved since this isn't open source. I'm very curious to see what HN would make of this system; have you ever posted it? Maybe that could be considered after the TreeView component and a TodoMVC example were available. Note that I'm not dissing this at all. It's clear to me that this has a niche of people that are very happy and productive using this because it lets them reuse knowledge they gained years ago. (I've looked at Pascal a bit, but never really played with it. Lazarus is somewhere on my todo list, just to get a feel for things.)
- TimJYoung 10y agoThanks for the feedback, it is always appreciated. I'll take these one at a time: 1) The "volume control" is a cheat - I created that demo and used a progress bar instead of an actual draggable horizontal gauge (not available). 2) The font is the icon font (a trimmed-down version of Font Awesome) used for the icons in the applications. It's the preferred way of doing vector icons in Elevate Web Builder, at least for now, but you also have the option of turning off both embedding of the icon font and whether the icon font is included at all (both are compiler options). In general, Elevate Web Builder always tries to keep the number of requests required to load the application to a minimum, hence the very aggressive in-lining of everything. 3) The If-Modified problem is a bug, and a really embarrassing one at that (I'm installing a fixed server this afternoon). There's a millisecond file timestamp comparison issue that is causing the If-Modified to never kick in. The web server that we provide is just a "nice to have" thing because it automatically handles the database JSON API for loading datasets and consuming transactions, so that's how it's typically used, with less usage for static resources. Larger customers typically implement their own back-end database handling for IIS, Apache, etc. It's pretty easy to implement and the JSON API is very simple. 4) In terms of interoperability with JS, you can include external JS source with any project and it will get deployed with the project. After that, you also need an external interface to the JS code so that the compiler knows how to resolve any of the JS symbols: http://www.elevatesoft.com/manual?action=viewtopic&id=ewb2&topic=External_Interfaces http://www.elevatesoft.com/manual?action=viewtopic&id=ewb2&t... 5) As for issues and how they are resolved: we're pretty responsive regarding support/bugs, but Elevate Web Builder includes source code to the entire run-time and component library, so you're free to modify most of the product and we're able to give immediate hot fixes for most issues (~90% of issues/bugs are in this code and not in the IDE/compiler). In fact, you could take the command-line compiler that we separately provide and use it to create your own Object Pascal <--> JS IDE/product. 6) We've mentioned the product here before and it's received mixed reactions. It is, without a doubt, an odd product for most developers coming from traditional web development. :-) There are a lot of design choices that go against what one would recommend when hand-coding an HTML/JS/CSS application, but work beautifully when you're talking about a compiler doing the work for you. The main point of the product is to capture the productivity that Delphi provided in the desktop arena and bring it to web applications. This means an intense focus on performance, reducing dependencies and deployment issues, and ensuring that one can concentrate on the business task at hand. Here is a "Hello World" in Elevate Web Builder: a) Select File/New Project from the main menu. b) Drop a button on the main form. c) Double-click the button and type in: ShowMessage('Hello World'); d) Hit F9 to run the application. You've now created a web application that shows a modal dialog with "Hello World" when you click on the button, and it will run on any modern browser (>= IE9), including mobile. Contrast that with the setup/coding involved to get any sort of hand-coded web application up and running. You can see how this works in more detail here: https://www.youtube.com/watch?v=o1cU0KoJU8Q https://www.youtube.com/watch?v=o1cU0KoJU8Q If you download a trial version, you can get a feel for the technology in the product by looking at the WebUI unit (WebUI.wbs). It's a ~13k-line UI layer that implements both the design-time external interface and a run-time virtual DOM that allows for very fast performance due to its BeginUpdate..EndUpdate reference-counted update cycle functionality. The run-time avoids interrogating or touching the DOM like it has the plague. ;-) It will also show how the animation primitives work, along with how the control interfaces are implemented. The control interfaces allow you to selectively skin controls on a per-control, per-project basis, with on-demand loading of the customized skins for each project at design-time.