我怎样才能 link 多个 p5 JS 项目到同一个 index.html?

How can I link multiple p5 JS projects to the same index.html?

我有一个 p5 JavaScript 项目文件夹,其中包含许多 JavaScript documents/projects。为了在浏览器中查看我的代码,显然我只是 运行 linked HTML 文档。

我的问题是,如果我在 index.html 中 link 多个 p5 JavaScript 项目,我只会得到最后一个 linked JavaScript 项目.

我可以简单地为每个项目创建一个单独的 HTML 文档,但这会使我的项目文件夹中的文档数量翻倍,并可能为我自己创建很多不必要的工作。

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>JS learnings</title>
  </head>
  <body>
    <script language="javascript" type="text/javascript" src="node_modules/p5/lib/p5.js"></script>
    <script language="javascript" type="text/javascript" src="node_modules/p5/lib/addons/p5.dom.js"></script>
    <script language="javascript" type="text/javascript" src="node_modules/p5/lib/addons/p5.sound.js"></script>
    <script src="./classes.js"></script>;
    <script src="./function-picture.js"></script>;
    <script src="./ifs-within-ifs.js"></script>;
    <script src="./while-and-for-loops.js"></script>;
    <script src="./Boolean.js"></script>;
    <script src="./object-var.js"></script>;
    <script src="./move.js"></script>;
  </body>
</html>

此代码仅在浏览器中显示 ./move.js。

如果你想在一个window中支持多个草图,你将需要使用实例模式

默认情况下,P5.js 对其变量和函数使用全局命名空间。因此,每次定义 setup()draw() 函数时,您都会覆盖之前的任何值。这就是为什么你只能看到你加载的最后一个草图。

要解决这个问题,您可以使用实例模式 将每个草图封装在非全局范围内。您可以阅读有关实例模式的更多信息 here,但这里有一个示例:

var s = function( sketch ) {

  var x = 100; 
  var y = 100;

  sketch.setup = function() {
    sketch.createCanvas(200, 200);
  };

  sketch.draw = function() {
    sketch.background(0);
    sketch.fill(255);
    sketch.rect(x,y,50,50);
  };
};

var myp5 = new p5(s);

您可能希望为每个草图创建一个新的 p5 实例。