Javascript p5.js实例模式下的依赖项,不传递实例

Javascript p5.js实例模式下的依赖项,不传递实例,javascript,p5.js,Javascript,P5.js,根据我收集的信息,不鼓励在p5中使用全局模式,因为它会污染全局名称空间。我使用实例模式已经有一段时间了,但是创建依赖项总是令人沮丧。为了使用p5函数,我在其他文件中的所有函数都必须将整个p5实例传递给它们。如果我在一个项目中创建了一组实体,那么让每个实体都包含整个p5库就浪费了一大堆资源。有没有更好的方法来实现这一点?据我所知,您不必将p5实例“传递”到其他文件中的函数中。p5实例应该声明为全局。这不应使用比全局模式更多的资源 因此,我们没有将所有p5函数都附加到全局窗口对象(全局模式),而是将

根据我收集的信息,不鼓励在p5中使用全局模式,因为它会污染全局名称空间。我使用实例模式已经有一段时间了,但是创建依赖项总是令人沮丧。为了使用p5函数,我在其他文件中的所有函数都必须将整个p5实例传递给它们。如果我在一个项目中创建了一组实体,那么让每个实体都包含整个p5库就浪费了一大堆资源。有没有更好的方法来实现这一点?

据我所知,您不必将p5实例“传递”到其他文件中的函数中。p5实例应该声明为全局。这不应使用比全局模式更多的资源

因此,我们没有将所有p5函数都附加到全局
窗口
对象(全局模式),而是将它们全部附加到全局p5实例对象(实例模式)。这只是名称空间的问题

考虑以下示例,它是的一个修改版本:

您可以在其他文件中操作全局
myp5
实例。例如,在您的
other.js
中:

//other.js
function randomBackgroundColor() {
  myp5.background(myp5.random(0, 255));
}

setInterval(randomBackgroundColor, 1000); //change background color every 1000 milliseconds
在html文件中包含这两个js文件(首先是sketch.js)将生成一个背景不断变化的画布和一个矩形

//other.js
function randomBackgroundColor() {
  myp5.background(myp5.random(0, 255));
}

setInterval(randomBackgroundColor, 1000); //change background color every 1000 milliseconds