hiermit möchte ich Euch die erste öffentlich Alpha-Version von PB2Web vorstellen.
Was ist es?
PB2Web ist ein System, mit dem Ihr Web-Applikationen erstellen könnt. Dabei wird
PureBasic-Code von einem Parser in JavaScript gewandelt, welches dann in Verbindung
mit anderen JavaScript-Libraries (z.B. JQuery) im Webbrowser ausgeführt wird.
Klingt kompliziert? Ist es nicht!
Wie funktioniert es?
PB2Web hier oder hier herunterladen und in einen beliebigen Ordner entpacken. Es wird als Tool
in der IDE eingerichtet (ich habe es mir auf das Tastaturkürzel <Ctrl> + <F5> gelegt).
Dann schreibt ihr 'normalen' PureBasic-Code. Wenn nun PB2Web aufgerufen wird, wandelt
es den PB-Code und kopiert ihn zusammen mit den anderen benötigten Dateien in einen
vorher festgelegten Pfad Eures lokalen Webservers. Hiernach wird der Standardbrowser
aufgerufen, der dann die Web-Applikation startet.
Eine ausführliche Installationsanleitung findet Ihr hier.
Bitte unbedingt beim Ausprobieren beachten:
Ich habe oben 'normalen' PureBasic-Code bewusst in Anführungsstriche geschrieben,
denn bei der Benutzung von PB2Web sind einige Sachen zu beachten. Das liegt vor allem
daran, dass JavaScript (also die Sprache, in die gewandelt wird) einige Eigenarten besitzt,
die man als PureBasic-Programmierer nicht unbedingt kennt.
* Vergesst die Event-Schleife! Ereignisse (also beispielsweise das Drücken eines Buttons
oder das Feuern eines Timer-Events) funktionieren in PB2Web nur, wenn man sie mit den
neuen Bind*() - Befehlen (ab Version 5.20) bindet.
(Wait)WindowEvent() gibt es in PB2Web nicht.
* Achtet auf Groß- und Kleinschreibung! Während für PB myVar und myVAR das gleiche ist,
arbeitet JavaScript case-sensitiv. Für JS sind myVar und myVAR zwei unterschiedliche Variablen.
* Initialisiert Variablen! PB initialisiert Variablen automatisch. JavaScript tut das nicht. Eine
numerische Variable besitzt in PB initial den Wert 0. Ein String ist initial ein Leerstring.
In JS ist das nicht der Fall. Hier haben alle Variablen initial einen Wert 'undefined'
Beispiel:
Code: Alles auswählen
; falsch:
Define myString.s
myString + "Hallo"
MessageRequester("", myString) ; gibt 'undefinedHallo' aus
; richtig:
Define myString.s = ""
myString + "Hallo"
MessageRequester("", myString) ; gibt 'Hallo' aus
asynchron arbeitet. Blockierende Prozesse werden zumeist mit einer nicht mehr reagierenden
Webseite bestraft. Verwendet anstelle von Delay() lieber Timer.
Wenn Ihr das oben lest, dann versteht Ihr vielleicht, dass es wenig sinnvoll ist, einen x-beliebigen
vorhandenen Code PB2Web zum Fraß vorzuwerfen, um zu schauen, wie das dann im Browser aussieht.
In den meisten Fällen sind Anpassungen und ein wenig Umdenken vonnöten.
Systemvoraussetzungen:
* Ein halbwegs aktuelles Windows-OS (Linux / Mac sind geplant, haben aber keine hohe Priorität)
* PureBasic ab Version 5.20 (wegen den Binding-Befehlen)
* Ein wenig Geduld und Spucke beim Testen der Software
Einen Webserver (beispielsweise Apache, IIS, oder ähnliches) benötigt man für die ersten
Schritte nicht zwingend. Es wäre aber von Vorteil, wenn ein solcher vorhanden wäre, damit
manche Beispiele (wie z.B. CGI-Test.pb) funktionieren.
Was geht nicht?
Gemessen an der Fülle von PureBasic-Befehlen scheint der bereits umgesetzte Teil relativ
gering zu sein (dennoch habe ich schon die ein oder andere nette Web-Applikation mit diesen
Befehlen erstellen können).
Definitiv nicht umgesetzt sind derzeit folgende Libraries:
AudioCD, Cipher, Clipboard, Database, Dialog, Drag & Drop, File, FileSystem, Ftp, Help, Http, Library,
Mail, Memory, Network, OnError, Packer, Printer, Process, Regular Expression, Runtime, Scintilla,
Serial Port, SysTray, Thread, XML, 2D und 3D Games & Multimedia Libraries.
Dass einige Libs nicht umgesetzt sind, liegt in der Natur der Sache: Im Browser kann man
beispielsweise nicht direkt auf das Filesystem zugreifen. Ebenso sind Datenbank-Zugriffe
nicht möglich.
Ebenso werden Macros, Interfaces, Imports und API-Aufrufe nicht unterstützt.
(X)IncludeFile werden momentan nur auf erster Ebene ausgeführt.
Bitte beachtet:
PB2Web ist momentan noch ziemlich weit von dem entfernt, was man als fertiges Produkt
bezeichnen könnte. Das Framework ist noch ziemlich lückenhaft (von den 1500 PureBasic-
Befehlen sind derzeit knapp 250 umgesetzt worden). Ich könnte noch ewig hier im stillen
Kämmerlein an PB2Web programmieren, aber irgendwann muss auch mal ein Anfang
gemacht werden. Vielleicht kann ich auf diesem Weg ja auch den einen oder anderen dazu
animieren, an dem Projekt teilzunehmen und mitzuarbeiten.
Eine gute Dokumentation ist so gut wie nicht vorhanden. Aber hey, ich bin ja hier und
stehe Rede und Antwort Und hier ist dann noch eine Hilfe zur Selbsthilfe.
Außerdem ist im Download-Paket ein Examples-Ordner vorhanden, der einiges an Code beinhaltet.
Auf http://pb2web.de/ findet man überdies auch noch einiges an nützlichen
Informationen (beispielsweise bezüglich Theming und Kommunikation mit einem Server).
So, das war es fürs Erste. Bin gespannt auf Euer Feedback.
Viel Spaß beim PB2Web'en & Grüße ... Kiffi