From 1b3c4f596e1826fb0ea3f9743feb9879573bb9c1 Mon Sep 17 00:00:00 2001 From: Hitalo Souza <63821277+enghitalo@users.noreply.github.com> Date: Mon, 11 Dec 2023 08:10:06 -0400 Subject: [PATCH] examples: serve the wasm mandelbrot project using a v web server (#19937) --- cmd/tools/modules/testing/common.v | 4 +- examples/wasm/mandelbrot/README.md | 18 ++-- examples/wasm/mandelbrot/main.v | 29 ++++++ examples/wasm/mandelbrot/mandelbrot.html | 89 ++++++++++--------- .../{mandelbrot.v => mandelbrot.wasm.v} | 0 5 files changed, 92 insertions(+), 48 deletions(-) create mode 100644 examples/wasm/mandelbrot/main.v rename examples/wasm/mandelbrot/{mandelbrot.v => mandelbrot.wasm.v} (100%) diff --git a/cmd/tools/modules/testing/common.v b/cmd/tools/modules/testing/common.v index 77209bdac87243..5448eba9b82c4d 100644 --- a/cmd/tools/modules/testing/common.v +++ b/cmd/tools/modules/testing/common.v @@ -277,8 +277,8 @@ pub fn new_test_session(_vargs string, will_compile bool) TestSession { skip_files << 'examples/sokol/sounds/wav_player.v' skip_files << 'examples/sokol/sounds/simple_sin_tones.v' } - // examples/wasm/mandelbrot/mandelbrot.v requires special compilation flags: `-b wasm -os browser`, skip it for now: - skip_files << 'examples/wasm/mandelbrot/mandelbrot.v' + // examples/wasm/mandelbrot/mandelbrot.wasm.v requires special compilation flags: `-b wasm -os browser`, skip it for now: + skip_files << 'examples/wasm/mandelbrot/mandelbrot.wasm.v' } vargs := _vargs.replace('-progress', '') vexe := pref.vexe_path() diff --git a/examples/wasm/mandelbrot/README.md b/examples/wasm/mandelbrot/README.md index 9c4cb6c4af7994..9b7f0dda5f75f0 100644 --- a/examples/wasm/mandelbrot/README.md +++ b/examples/wasm/mandelbrot/README.md @@ -1,12 +1,20 @@ -# V Mandelbrot Example +# Run V Mandelbrot Example + +## Using only V + +``` +v run main.v +``` + +## Using Python or Emscripten 1. First, create `mandelbrot.wasm`. Compile with `-os browser`. ``` -v -b wasm -os browser mandelbrot.v +v -b wasm -os browser mandelbrot.wasm.v ``` 2. Then, open the `mandelbrot.html` file in the browser. - - CORS errors do not allow `mandelbrot.wasm` to be loaded. - - Use `python -m http.server 8080` - - Use `emrun mandelbrot.html` \ No newline at end of file + - CORS errors do not allow `mandelbrot.wasm` to be loaded. + - Use `python -m http.server 8080` + - Use `emrun mandelbrot.html` diff --git a/examples/wasm/mandelbrot/main.v b/examples/wasm/mandelbrot/main.v new file mode 100644 index 00000000000000..a3a8988ca7d81a --- /dev/null +++ b/examples/wasm/mandelbrot/main.v @@ -0,0 +1,29 @@ +module main + +import vweb +import os + +const http_port = 3001 + +struct App { + vweb.Context +} + +fn main() { + vweb.run(new_app(), http_port) +} + +fn new_app() &App { + mut app := &App{} + + os.execute_or_panic('v -b wasm -os browser mandelbrot.wasm.v') + + app.mount_static_folder_at(os.resource_abs_path('./'), '/') + return app +} + +@['/'; get] +pub fn (mut app App) controller_mandelbrot() !vweb.Result { + file := os.read_file('mandelbrot.html') or { panic(err) } + return app.html(file) +} diff --git a/examples/wasm/mandelbrot/mandelbrot.html b/examples/wasm/mandelbrot/mandelbrot.html index 7d65a3070756c2..5bc8c53d574033 100644 --- a/examples/wasm/mandelbrot/mandelbrot.html +++ b/examples/wasm/mandelbrot/mandelbrot.html @@ -1,47 +1,54 @@ -
- - - -