【发布时间】:2020-03-04 07:11:11
【问题描述】:
我正在尝试创建一个包含 p5 草图的 React 页面,但这样做似乎需要我重写通常在浏览器中运行的标准 JavaScript 以使其作为一个反应组件工作。
例如,我想让 React 将此代码提供给客户端:
function setup() {
createCanvas(600, 600);
}
function draw() {
background(0);
}
但我找不到让 React 给客户端一个 JavaScript 文件的方法。相反,我必须创建一个这样的组件:
export default function(p: p5) {
p.setup = function setup() {
p.createCanvas(600, 600);
};
p.draw = function draw() {
p.background(0);
};
}
这可能看起来微不足道,但如果我和我的团队可以包含我们已经编写的代码,这些代码可以在 react 之外工作,而无需重写所有内容,这将使事情变得更容易。
解决问题的一种方法是将文件放在 React 的公共目录中,然后将其与 index.html 一起静态提供,但我宁愿只在客户端需要文件时才将文件提供给它,而不是一次提供每个文件。如果我可以让一个组件导入 JavaScript 文件并像处理图像一样发送它,那正是我正在寻找的。p>
编辑:抱歉,澄清一下我的意思,Node 是实际服务的东西,我想要的是当 React 呈现页面时,它也会运行 JavaScript 代码,就好像它是用 @ 编写的一样HTML 页面中的 987654324@ 标记。
【问题讨论】:
-
这些函数应该是全局可访问的吗?因为如果是这样,那会让你的工作更轻松。
-
如果您希望它们可全局访问,请将它们放在一个定义如下的对象中:
window.canvasHelpers = {setup: function() {}, draw: function() {}};在一个文件中,然后将该文件导入相关的 React 文件中。 -
React 是......不是服务页面的东西。你到底在做什么?
-
@AKX 抱歉,阅读编辑:抱歉,澄清我的意思,Node 是实际服务的东西,我想要的是当 React 呈现页面时,它也会运行 JavaScript 代码,就好像它是编写的一样在 HTML 页面的
-
React 不会生成 .html 页面(除非你明确地进行服务器端渲染)——是什么阻止你在那个 HTML 中添加那个
标签: javascript reactjs