I can be short here: all the Core functions in B4J that are mentioned in the B4JS Introduction can be used. So, on a Sunday morning, some light reading which goes perfectly together with a nice breakfast…
Lets look a little into some topics.
Smart String Literal:
This is such an extraordinary B4X feature that I definitely wanted at least some kind of support for it.
An example:
Sub Class_Globals Dim myString As String Dim myGlobalName As String = "GlobalAlain" End Sub 'Initializes the object. You can NOT add parameters. Public Sub InitializeB4JS() Dim myName As String = "Alain" ' smartstrings (does not support date, time or xml function myString = $"Hello planet "B4X"! This is a test from ${myName} and ${myGlobalName}"$ Log("myString.Contains('planet'): " & myString.Contains("planet")) End Sub
The result in the browsers log:
Hello planet "B4X"! This is a test from Alain and GlobalAlain myString.Contains('planet'): true
As you can see, it can handle quotes in the string, and variables. It does not support the special $DateTime{}, $Date{}, $Time{} and $xml{} tags. But you can make a workaround for it by putting it in a variable first:
Dim myDate as String = DateTime.Date(DateTime.Now) Dim myTime as String = DateTime.Time(DateTime.Now) Dim myString as String = $"Here is the current date: ${myDate} and the current time: ${myTime}"$
The result in the console is something like this:
Here is the current date: 03/11/2018 and the current time: 08:25:37
Timer:
When using a timer, you must keep in mind that it runs in the browser. This means, even when your server is down, your timer will keep running.
The usage is exactly as the B4J counterpart:
Sub Class_Globals Private lblTimer As Timer Private Page As ABMPage 'ignore, just to be able to run ABMPage functions Private ToastID As Int Private ABM As ABMaterial 'ignore, just to be able to use ABM constants End Sub ' Initializes the object. You can NOT add parameters and MUST be called InitializeB4JS. ' is automatically called when the class is created in Javascript Public Sub InitializeB4JS() lblTimer.Initialize("lblTimer", 5000) End Sub Sub lblTimer_Tick ToastID = ToastID + 1 Page.B4JSShowToast("TimerToast" & ToastID, "green", "I'm shown in the timer without the server every 5 seconds!", 3000, False) End Sub
StringBuilder:
Although the Smart String Literal is still better to use, B4JS does also support the StringBuilder.
Dim sb As StringBuilder sb.Initialize sb.Append("0123456789").Append(CRLF).Append("0123456789") Log("sb.ToString: " & sb.ToString) Log("Length: " & sb.Length) ' should show 21, including the return sb.Insert(2,"X") Log("sb.ToString: " & sb.ToString) sb.Remove(2,3) Log("sb.ToString: " & sb.ToString)
The result output in the Browser console:
sb.ToString: 0123456789 0123456789 Length: 21 sb.ToString: 01X23456789 0123456789 sb.ToString: 0123456789 0123456789
This concludes this tutorial. As a B4X developer, there are not many differences between B4JS and the familiar B4X syntax, which makes it very easy to get started with.
The next tutorial will dig a bit deeper into using inline JavaScript, another feature that speeds up development considerably.
Alwaysbusy