Metainformationen zur Seite
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
entwickler:node_js_plugin_entwicklung [2022/09/10 12:18] – angelegt - Externe Bearbeitung 127.0.0.1 | entwickler:node_js_plugin_entwicklung [2022/10/07 11:54] (aktuell) – Michael Schlenstedt | ||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== Node JS Plugin Entwicklung | ====== Node JS Plugin Entwicklung | ||
- | |||
- | |||
- | |||
Voraussetzung für diese Anleitung ist das [[plugins: | Voraussetzung für diese Anleitung ist das [[plugins: | ||
- | |||
- | |||
- | |||
Der Port vom Express Server hat sich ab v0.0.3 geändert. | Der Port vom Express Server hat sich ab v0.0.3 geändert. | ||
- | |||
- | |||
===== Plugin Generator benutzen ===== | ===== Plugin Generator benutzen ===== | ||
Zeile 23: | Zeile 15: | ||
Die Idee des Plugins ist es einen [[https:// | Die Idee des Plugins ist es einen [[https:// | ||
Der Express Server läuft auf Port 3300 und reagiert auf den Pfad '' | Der Express Server läuft auf Port 3300 und reagiert auf den Pfad '' | ||
- | |||
Die '' | Die '' | ||
'' | '' | ||
- | |||
- | |||
Das Plugin bietet auch die Möglichkeit den Express Server zu stoppen oder neu zu starten. Ausserdem können Logs gelesen werden und es werden Metriken angezeigt. | Das Plugin bietet auch die Möglichkeit den Express Server zu stoppen oder neu zu starten. Ausserdem können Logs gelesen werden und es werden Metriken angezeigt. | ||
Zeile 38: | Zeile 27: | ||
Um sich in den Express Server einzuklinken muss dein Plugin eine '' | Um sich in den Express Server einzuklinken muss dein Plugin eine '' | ||
- | < | + | < |
module.exports = ({router, static, logger, _, translate}) => { | module.exports = ({router, static, logger, _, translate}) => { | ||
return router; | return router; | ||
}; | }; | ||
</ | </ | ||
- | |||
- | |||
**Parameters: | **Parameters: | ||
Zeile 62: | Zeile 49: | ||
Wichtig ist, dass der '' | Wichtig ist, dass der '' | ||
- | + | < | |
- | + | ||
- | < | + | |
module.exports = ({router}) => { | module.exports = ({router}) => { | ||
router.get('/', | router.get('/', | ||
Zeile 74: | Zeile 59: | ||
}; | }; | ||
</ | </ | ||
- | |||
- | |||
Es können natürlich auch mehrere Routen zurückgegeben werden | Es können natürlich auch mehrere Routen zurückgegeben werden | ||
- | < | + | < |
module.exports = ({router}) => { | module.exports = ({router}) => { | ||
router.get('/', | router.get('/', | ||
Zeile 90: | Zeile 73: | ||
}; | }; | ||
</ | </ | ||
- | |||
- | |||
Alles was man auf Router Ebene mit Express gemacht werden kann, kannst du auch in dem Plugin machen. | Alles was man auf Router Ebene mit Express gemacht werden kann, kannst du auch in dem Plugin machen. | ||
Zeile 103: | Zeile 84: | ||
* next: die Standard Next Funktion von Express | * next: die Standard Next Funktion von Express | ||
- | < | + | < |
const clients = []; | const clients = []; | ||
module.exports = ({router, logger}) => { | module.exports = ({router, logger}) => { | ||
Zeile 117: | Zeile 98: | ||
}; | }; | ||
</ | </ | ||
- | |||
- | |||
Anhand der Url können auch mehrere WebSockets pro Plugin benutzt werden. | Anhand der Url können auch mehrere WebSockets pro Plugin benutzt werden. | ||
Zeile 131: | Zeile 110: | ||
'' | '' | ||
- | + | < | |
- | + | ||
- | < | + | |
RewriteEngine On # this is required | RewriteEngine On # this is required | ||
RewriteRule ^index.cgi http:// | RewriteRule ^index.cgi http:// | ||
</ | </ | ||
- | |||
- | |||
Wenn jegliche Anfrage umgeleitet werden soll | Wenn jegliche Anfrage umgeleitet werden soll | ||
- | < | + | < |
RewriteEngine On | RewriteEngine On | ||
RewriteRule ^index.cgi http:// | RewriteRule ^index.cgi http:// | ||
RewriteRule ^(.\*) http:// | RewriteRule ^(.\*) http:// | ||
</ | </ | ||
- | |||
- | |||
Wenn ausschließlich '' | Wenn ausschließlich '' | ||
- | < | + | < |
RewriteEngine On | RewriteEngine On | ||
RewriteRule ^my-express-routes/ | RewriteRule ^my-express-routes/ | ||
</ | </ | ||
- | |||
- | |||
==== Fehlerhinweis, | ==== Fehlerhinweis, | ||
Zeile 167: | Zeile 138: | ||
'' | '' | ||
- | < | + | < |
# | # | ||
Zeile 200: | Zeile 171: | ||
LoxBerry:: | LoxBerry:: | ||
</ | </ | ||
- | |||
- | |||
'' | '' | ||
- | < | + | < |
< | < | ||
<p style=" | <p style=" | ||
Zeile 214: | Zeile 183: | ||
<p> | <p> | ||
</ | </ | ||
- | |||
- | |||
'' | '' | ||
- | < | + | < |
[COMMON] | [COMMON] | ||
MISSING_PLUGIN=" | MISSING_PLUGIN=" | ||
Zeile 233: | Zeile 200: | ||
EXPRESS_PLUGIN=" | EXPRESS_PLUGIN=" | ||
</ | </ | ||
- | |||
- | |||
===== Handlebars Template Engine ===== | ===== Handlebars Template Engine ===== | ||
Zeile 242: | Zeile 207: | ||
// | // | ||
- | < | + | < |
< | < | ||
</ | </ | ||
- | |||
- | |||
Um die Datei zu rendern muss in der '' | Um die Datei zu rendern muss in der '' | ||
Zeile 264: | Zeile 227: | ||
Hier ist ein kleines Beispiel | Hier ist ein kleines Beispiel | ||
- | < | + | < |
// templates/ | // templates/ | ||
< | < | ||
Zeile 276: | Zeile 239: | ||
< | < | ||
</ | </ | ||
- | |||
- | |||
Das verinfachte Layout würde folgendesmaßen ausshen: Der Titel wird ersetzt mit “My Page Title” und der Body wird ersetzt mit dem '' | Das verinfachte Layout würde folgendesmaßen ausshen: Der Titel wird ersetzt mit “My Page Title” und der Body wird ersetzt mit dem '' | ||
- | < | + | < |
< | < | ||
< | < | ||
Zeile 293: | Zeile 254: | ||
</ | </ | ||
</ | </ | ||
- | |||
===== Übersetzungen ===== | ===== Übersetzungen ===== | ||
- | Mit dem Express Server haben wir auch die Möglichkeit Übersetzungsdateien zu benutzen. Diese Müssen wie bei jedem Plugin in '' | + | Mit dem Express Server haben wir auch die Möglichkeit Übersetzungsdateien zu benutzen. Diese Müssen wie bei jedem Plugin in '' |
- | \\ | + | |
Die Übersetzungen sind mit [[https:// | Die Übersetzungen sind mit [[https:// | ||
- | < | + | < |
module.exports = { | module.exports = { | ||
key: ' | key: ' | ||
Zeile 308: | Zeile 268: | ||
} | } | ||
</ | </ | ||
- | |||
- | |||
**Benutzung im Express Handler** | **Benutzung im Express Handler** | ||
- | < | + | < |
module.exports = ({router, logger, translate}) => { | module.exports = ({router, logger, translate}) => { | ||
router.get('/', | router.get('/', | ||
Zeile 324: | Zeile 282: | ||
}; | }; | ||
</ | </ | ||
- | |||
- | |||
**Handlebars mit Übersetzungen** | **Handlebars mit Übersetzungen** | ||
Zeile 331: | Zeile 287: | ||
Um die Übersetzungen in einem Template zu nutzen steht der Helper '' | Um die Übersetzungen in einem Template zu nutzen steht der Helper '' | ||
- | < | + | < |
module.exports = { | module.exports = { | ||
helloWorld: 'Hello World' | helloWorld: 'Hello World' | ||
Zeile 337: | Zeile 293: | ||
} | } | ||
</ | </ | ||
- | |||
- | |||
<code syntaxhighlighter-pre> | <code syntaxhighlighter-pre> | ||
Zeile 344: | Zeile 298: | ||
< | < | ||
</ | </ | ||
- | |||
- | |||
===== Logger ===== | ===== Logger ===== | ||
Zeile 363: | Zeile 315: | ||
* error(message: | * error(message: | ||
</ | </ | ||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||
- | |||