### 2 Simple demos for the webrouter unit The 2 demos do the same, the difference is in how they achieve the same result: demorouter is the simplest. It registers 5 static routes, one for each form. demorouter2 is more advanced. It registers 1 route with a parameter. ### Compiling for running in the browser: ``` pas2js -browser -Jc -Jirtl.js demorouter.pas pas2js -browser -Jc -Jirtl.js demorouter2.pas ``` When using lazarus, you can also open the respective .lpi files, and compile your project. ### Choosing a history model: The router supports 3 models - Abstract (only for testing purposes) - Hash: the history is created by adding the route in the #hash part of te URL - HTML5: the history is created by using the window.history.pushState() API of the browser. Most modern browsers support this, but it requires server-side support to work safely. When in doubt, use the hash mechanism : ``` Router.InitHistory(hkHash) ``` ### Server support. If the history mechanism has set the url to e.g. http://localhost:3000/Form3 and the user returns back to this URL, the server needs to know it should serve the demorouter.html file; it needs to be configured that it serves the 'main page' of the project if it encounters an URL that it doesn't know. You can start a small node server that does this: for demorouter.html: ``` nodejs histsrv.js ``` for demorouter2.html: ``` nodejs histsrv2.js ```