Export Image
Export Code
Connected

Fork of P5.js Starter

Nick Hogle

Sunday, May 18, 2025: 0 viewsMonday, May 19, 2025: 0 viewsTuesday, May 20, 2025: 0 viewsWednesday, May 21, 2025: 0 viewsThursday, May 22, 2025: 0 viewsFriday, May 23, 2025: 0 viewsSaturday, May 24, 2025: 0 viewsSunday, May 25, 2025: 0 viewsMonday, May 26, 2025: 0 viewsTuesday, May 27, 2025: 0 viewsWednesday, May 28, 2025: 0 viewsThursday, May 29, 2025: 0 viewsFriday, May 30, 2025: 0 viewsSaturday, May 31, 2025: 0 viewsSunday, June 1, 2025: 0 viewsMonday, June 2, 2025: 0 viewsTuesday, June 3, 2025: 0 viewsWednesday, June 4, 2025: 0 viewsThursday, June 5, 2025: 0 viewsFriday, June 6, 2025: 0 viewsSaturday, June 7, 2025: 0 viewsSunday, June 8, 2025: 0 viewsMonday, June 9, 2025: 0 viewsTuesday, June 10, 2025: 0 viewsWednesday, June 11, 2025: 0 viewsThursday, June 12, 2025: 0 viewsFriday, June 13, 2025: 0 viewsSaturday, June 14, 2025: 0 viewsSunday, June 15, 2025: 0 viewsMonday, June 16, 2025: 1 viewTuesday, June 17, 2025: 1 viewWednesday, June 18, 2025: 0 viewsThursday, June 19, 2025: 0 viewsFriday, June 20, 2025: 0 viewsSaturday, June 21, 2025: 0 viewsSunday, June 22, 2025: 0 viewsMonday, June 23, 2025: 0 viewsTuesday, June 24, 2025: 0 viewsWednesday, June 25, 2025: 0 viewsThursday, June 26, 2025: 0 viewsFriday, June 27, 2025: 0 viewsSaturday, June 28, 2025: 0 viewsSunday, June 29, 2025: 0 viewsMonday, June 30, 2025: 0 viewsTuesday, July 1, 2025: 0 viewsWednesday, July 2, 2025: 1 viewThursday, July 3, 2025: 0 viewsFriday, July 4, 2025: 0 viewsSaturday, July 5, 2025: 0 viewsSunday, July 6, 2025: 0 viewsMonday, July 7, 2025: 0 viewsTuesday, July 8, 2025: 0 viewsWednesday, July 9, 2025: 1 viewThursday, July 10, 2025: 0 viewsFriday, July 11, 2025: 0 viewsSaturday, July 12, 2025: 0 viewsSunday, July 13, 2025: 0 viewsMonday, July 14, 2025: 0 viewsTuesday, July 15, 2025: 0 viewsWednesday, July 16, 2025: 0 viewsThursday, July 17, 2025: 0 viewsFriday, July 18, 2025: 0 viewsSaturday, July 19, 2025: 0 viewsSunday, July 20, 2025: 0 viewsMonday, July 21, 2025: 0 viewsTuesday, July 22, 2025: 0 viewsWednesday, July 23, 2025: 0 viewsThursday, July 24, 2025: 0 viewsFriday, July 25, 2025: 0 viewsSaturday, July 26, 2025: 0 viewsSunday, July 27, 2025: 0 viewsMonday, July 28, 2025: 0 viewsTuesday, July 29, 2025: 0 viewsWednesday, July 30, 2025: 0 viewsThursday, July 31, 2025: 0 viewsFriday, August 1, 2025: 0 viewsSaturday, August 2, 2025: 0 viewsSunday, August 3, 2025: 0 viewsMonday, August 4, 2025: 0 viewsTuesday, August 5, 2025: 0 viewsWednesday, August 6, 2025: 0 viewsThursday, August 7, 2025: 0 viewsFriday, August 8, 2025: 0 viewsSaturday, August 9, 2025: 0 viewsSunday, August 10, 2025: 0 viewsMonday, August 11, 2025: 0 viewsTuesday, August 12, 2025: 0 viewsWednesday, August 13, 2025: 0 viewsThursday, August 14, 2025: 0 views
21 views in last 90 days
Last edited Feb 10, 2024
Created on Feb 10, 2024
Forked from P5.js Starter

Unlocking P5.js with hot reloading!

This example is copied from the P5: Functions example. Several modifications were required to make it work in VizHub with hot reloading:

  • Since VizHub uses ES modules, we can't rely on the P5 globals (like setup and draw), and we can't rely on the way P5 usually runs and interprets those.
  • Therefore in index.js, some setup is required to import P5 and manually execute the Sketch.
  • To support hot reloading, we store the sketch instance on the container DOM element, and remove the old one if it's present.
  • The sketch is defined in sketch.js as an ES module that exports a function that accepts the container element. This was required so that we can call use the P5 parent function to tell it to attach the canvas to our container element.
  • Within the sketch, we can't reference functions like createCanvas and background because we are using ES modules and not globals. However, we can "simulate" globals by extracting those functions from the p5 instance p! Since those internally reference this, we need to use bind to make sure that they work properly. If you need more p5 functions, you can follow the same pattern used here.
  • Finally, we need to attach our setup and draw functions to the p5 instance.

I've tried to make this setup mimic regular P5 in the internals as much as possible. It should, in theory, be possible to copy the code from any P5 example straight into this template. Just make sure to:

  • Set up .parent on the canvas
  • Extract the p5 instance functions you need
  • Attach your setup and draw functions

Magically, this all works pretty well with VizHub's hot reloading, so you can use Alt+drag to edit numbers and see the rendered graphic update instantly.

Enjoy!

MIT Licensed