This is the front-end web-server of the Raspberry Communication Network (that is still in development).
You need to have Node.js installed to run this script. Just in case update your npm with the command:
npm install -g npm@latest
To install the dependencies listed above, run the following from the commandline.
npm install
Now you can run the server by typing:
node server.js
Just type node server.js -h
or
Usage: server.js [options]
Options:
-h, --help show this help message and exit
-p, --port define the port for the server to run on
--loglevel define at which level the console should output
--test start the server and exit after 10 seconds
This configuration applies to the server.json.
In the server.json all common web file-types have their own configuration at routes.
{
"routes": {
".html": {
"path": "./res/html/",
"mime": "text/html"
}
}
}
In the configuration a path and mime-type is defined. When the server starts recieves a request, it reads the configuration and searches for the file in the specific route. If the file exists it gets transportet with the defined mime-type. The type of the file is determined with the file's extension.
It is also possible to mount additional folders into the web-application by defining them at mounts. Mounts are more important than routes so when the server recieves a request, it first looks if the request-url has a mounted directory (or file).
{
"mounts": [
{
"path": "./path/to/directory/",
"mount": "/mount/"
}
]
}
The path Attribute defines the mounted directory (of file) on the local filesystem. The mount attribute defines where the directory is mounted in the web-application. The mount-path supports RegEx strings (the value is interpreted as a regular Expression by default).
This server automatically embeds Vue.js, jQuery and the script.js and style.sass stored in ./glob. And yeah, that's right. You can embed .sass-files. When encountering a .sass file, the server compiles it into .css. The result will then be stored in the ./.cache directory. The server also detects changes on the original file and refreshes the cached file when the change was detected. The refreshing only happens, when the file was requested.
- SASS-Files and caching of preprocessed files
- Mounting of folders or files on other locations (by using the config.json)
- A package.json because it seems to be important nowadays
- HTTP-Statuscode integration with specific pages
- Handling POST-Methods
- Integrating Backend-Applications via a standardized JSON-interface
- Change from JSON to CSON and consider this in the standardized interface