Hi Evgeny, sorry but I can't attend Global Summit.
Hi Evgeny, Rob asked me to post his demo app he created as he's not around ATM.
The demo is the IRIS implementation variant of a very popular example app: https://github.com/gothinkster/realworld
The IRIS demo is at: Conduit on IRIS using QEWD.js
The app is a Medium.com clone (called Conduit) which is implemented with all sorts of front- and back-ends. Which makes it very easy to compare different technologies.
I'm happy to hear the course was useful for you!
Btw, I can also recommend the YouTube channel from the Frontend Developer conference lately in Amsterdam:https://www.youtube.com/channel/UC1nBp6ouBB1o5P8YvPznPOw
You'll find a featured video there from the creator of Vue.js (Evan You) about how Vue.js will go forward. Btw, in terms of GitHub stars, the Vue.js project currently has 88k stars while React has 91k - it became quickly one of the leading frameworks and adoption is comparable to React.
I'm also more and more convinced Vue.js is a very complementary front-end for Caché/IRIS (and a natural fit) because of it's simplicity, flexibility and feature richness:
It's very easy to learn and allows to bind your front-end to your back-end using the technology you prefer like WebSockets (using QEWD), REST, GraphQL, ...)
To use SQL from Node.js - keeping the advantages of both worlds (JS & COS) - I created a small helper module you can use in your own Node.js handler modules.
The way it works is:
you call a function/method in COS from your Node.js handler, passing all necessary parameters in
the helper module puts them in a temp global (this means you don't have any limits on the amount of data you pass to Caché)
your COS code uses the input data (parameters) in the $$$jsData("params", ...) global (I defined a macro for readability)
your code fills the $$$jsData("json", ...) global with the result data (remember that JSON maps 1-to-1 on a Caché global)
I released a new module for this: qewd-cos - it's explained in detail in the module how it works with a working example. This module defines a standardized way of calling your own functions in Caché - take a look at the source code to see how you can call Caché functions and return standard responses in QEWD.
Btw, you can also use QEWD in the other direction: you can call from your COS code your own QEWD REST (or microService) endpoints using HTTP calls using ##class(%Net.HttpRequest). This is e.g. very useful to send e-mails using standard NPM modules allowing you to use templating engines (like handlebars, ...). It allows you to create more advanced e-mails much easier. Or more in general, to make external Node.js modules/functionality available in Caché which is not built-in.
To compare them in terms of GitHub stars:
Vue.js has an exponentially growing popularity, compares well to Angular but is much more compact and is nearly as popular as React (but React came out one year earlier!).
I completely agree Herman! Vue.js looks so "natural" once you start coding with it that you ask yourself the question: "why didn't I think of this before?" ...
IMHO, there's also one big difference between Angular and Vue.js: Angular is a "complete" framework in the sense that it contains all functionality you may need (what makes it big and heavy - 452 kB minified!) while Vue.js is a library for your view + business logic (what makes it so compact and lightweight - only 16 kB minified). With Vue.js, you only include functionality you need for your application. One would argue that with current hardware devices this is no longer an issue, but the performance hit lies in the execution of this amount of code at runtime, which makes it slower the bigger the framework code is.
In fact, the guy who started Vue.js (Evan You) was first working at Google Labs with Angular where he saw the need to make an easier to understand, much more compact library allowing you to do the same with a flat learning curve. When you see Vue.js now with it's companion libs like Vuex, I think he did a really great job!
Excellent news! This makes Caché & Globals technology really visible to Node.js developers - most of them are using #NoSQL technology - an excellent match!
This is a very cool concept and a nice application of the WebSocket technology used in QEWD! It allows you to build very modular resilient systems using Node.js with Caché at the back-end. Love the idea! :-)
You can also perfectly communicate with the back-end using CSP/REST, using Caché as the application server (as you can see in parts 2 & 3). This is a choice the developer has to make.
However, using Node.js as the application server (and Caché serving as the database - or even application server too) gives you a lot of advantages:
In terms of comparing performance: if someone - as Rob suggests - can write the RealWorld Conduit example back-end in CSP, you'll have a very realistic comparison between the two options!
To leave a comment or answer to post please log in
Please log in