2021-04-02 05:31:02 +03:00
|
|
|
# Web Stuff
|
|
|
|
|
2021-06-07 00:32:59 +03:00
|
|
|
This is a collection of API's and build tools for packaging our various Widgetry
|
|
|
|
apps as web applications.
|
2021-04-02 05:31:02 +03:00
|
|
|
|
|
|
|
## Goals
|
|
|
|
|
|
|
|
A web developer, who might not know anything about rust or wasm, should be able
|
|
|
|
to use our packaged javascript libraries on their website with minimal
|
|
|
|
customization or arcanery.
|
|
|
|
|
|
|
|
Users of their website should be able to interact with the widgetry app without
|
|
|
|
it feeling weird or having to jump through hoops.
|
|
|
|
|
|
|
|
## Limitations
|
|
|
|
|
|
|
|
### JS feature: `import.meta`
|
|
|
|
|
|
|
|
To allow the application to live at any URL (rather than presupposing it lives
|
|
|
|
at root, or whatever), we rely on `import.meta` which isn't supported on some
|
|
|
|
browsers before 2018. See: https://caniuse.com/?search=import.meta
|
|
|
|
|
|
|
|
An alternative would be to require configuration, so the loader knows where to
|
2021-06-07 00:32:59 +03:00
|
|
|
download it's "\*\_wasm.bg file".
|
2021-04-02 05:31:02 +03:00
|
|
|
|
|
|
|
### Browser Feature: WebGL
|
|
|
|
|
2021-06-07 00:32:59 +03:00
|
|
|
We prefer WebGL2, but now gracefully fall back to WebGL1. This should cover all
|
|
|
|
common browsers since late 2014. https://caniuse.com/?search=webgl
|
2021-04-02 05:31:02 +03:00
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
|
|
|
See [`src/web_root/*.js`](examples/) for code examples.
|
|
|
|
|
|
|
|
You can build and see the examples in your webbrowser with:
|
|
|
|
|
|
|
|
```
|
|
|
|
// install typescript build dependency
|
|
|
|
npm install
|
2021-06-07 00:32:59 +03:00
|
|
|
make dev
|
2021-04-02 05:31:02 +03:00
|
|
|
make server
|
|
|
|
```
|
2021-07-16 20:43:27 +03:00
|
|
|
|
|
|
|
The workflow for interactive development of just one app in debug mode:
|
|
|
|
|
|
|
|
```
|
2021-07-17 20:09:56 +03:00
|
|
|
make abstreet server
|
2021-07-16 20:43:27 +03:00
|
|
|
```
|