简单的说,p5.js是一个js类库;canvas是一个html5新增的一个元素,"canvas" 即 "画布", 此元素是为了客户端矢量图形而设计的。它自己没有行为,却把一个绘图 API 展现给客户端 JavaScript 以使脚本能够把想绘制的东西都绘制到一块画布上。两者要想绘图,都需执行js代码。仔细看p5的初始代码,
function setup() {createCanvas(400, 400)//为html页面创建canvas元素
}
两者的本质都是通过js来实现canvas的表现,p5.js与jquery库无异,将一些常用的功能需求的代码进行封装,以实现代码的简化。也就是任何p5.js可实现的,通过纯canvas的js api都能实现,不过要想实现,往往牺牲得是时间与效率。而p5.js提供了一种仅需少量代码就能实现很炫酷的操作的方法。两者渲染速度比较,理论上应该是一样的,毕竟大家殊途同归嘛,都是通过js来实现的,只要纯js写的足够优化,是会比p5.js快一丢丢的,差异不明显。明显的差异是p5.js在网页加载时需要下载p5.js的类库才能进行操作,而canvas api由于是客户端提供的原因,则不需要。