Using Node and Electron to build Desktop Apps
-
Node.is
-
Node Package Manager
-
Electron
Introduction
AppStudio now supports the use of a some of the biggest new technologies in the web development world.
Node.js is a runtime environment that executes JavaScript code outside the browser. That makes it suitable for writing server side software, which would normally be done in PHP or other languages. It works by having an executable stub which is able to call the V8 JavaScript engine, which powers Chrome.
npm is a repository of code which can be used with Node.js. It's included when you download Node. There is a huge number of packages available - over 750,000 at last count. You can include these packages in your Node project to add functionality. It might be for convenience: there are a lot of libraries which are much easier to include in your project than to write yourself. It might be for functionality: the modules can implement features which would not be available in the browser.
An example of a convenient library would be Lodash which adds hundreds of additional functions to JavaScript. A missing feature library would be fs-extra which allows full access to the file system.
Electron is framework which allows for the development of desktop GUI applications. Since it's built on Node.js, it already has the ability to run JavaScript code. It also uses Chrome's browser engine to render the UI using regular HTML. Each Electron app includes the V8 Runtime as well as the Chrome browser. Slack, Github Desktop and WhatsApp are examples of apps built using Electron.
Tutorial: Make an Electron app
AppStudio allows you to make normal AppStudio apps (programmed in Javascript or BASIC) into full blown Electron apps. You can distribute these apps as full blown executables, able to run on Windows, MacOS and Linux.
1. Download and install Node and npm
https://nodejs.org/en/download/
If you're on Windows, you may need to do a restart after installation.
2. Using AppStudio, create a new project called ElectronWeather and save it.
3. Open a terminal window in ElectronWeather.appstudio.
4. npm init $ npm init This utility will walk you through creating a package.json file. It only covers the most common items, and tries to guess sensible defaults.
See `npm help json` for definitive documentation on these fields and exactly what they do.
Use `npm install <pkg>` afterwards to install a package and save it as a dependency in the package.json file.
Press ^C at any time to quit. package name: (node.appstudio) version: (1.0.0) description: entry point: (electronMain.js) test command: git repository: keywords: author: license: (ISC) About to write to /Users/george/Dropbox/AppStudio/as7/Node.appstudio/package.json:
{
"name": "node.appstudio", "version": "1.0.0", "description": "", "main": "electronMain.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC"
}
Is this OK? (yes) yes
5. npm install weather-js https://www.npmjs.com/package/weather-js
6. npm install electron
7. Drag and drop package.json into AppStudio
8. Create a file called electronMain.js in your project folder.
9. Drag and drop it into AppStudio. Set loadType to 'noload'.
10. Set deploy option to a local path - something like local-deploy
11. deploy to it.
12. open a command window in local-deploy/ElectronWeather
13. npm install
14. npm start - the app should run
15. Add a button to Form1
16. Add this code to Form1. weather = require("weather-js")
function Button1_onclick()
weather.find({search: "San Francisco, CA", degreeType: "F"}, weatherFindCallback)
End function
function weatherFindCallback(err, result)
if err Then MsgBox(err) else Print JSON.stringify(result, null, 2) End if
End function
17. Add this to extraheaders:
Node itself isn't that useful - it's meant to run on a server.
Node + Electron lets you run web apps locally Node + Electron + Electron-packager to distribute them