[英]How to include plain JavaScript in a React app?
我正在尝试创建一个包含 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 文件并像处理图像一样发送它,那正是我正在寻找的。
编辑:抱歉,为了澄清我的意思,Node 是实际服务的东西,我想要的是当 React 呈现页面时,它也会运行 JavaScript 代码,就好像它是写在 HTML 页面中的<script>
标记中一样。
我已经解决了。 本质上,我将我想要运行的所有代码放在像sketch.js
这样的文件中,但将其包围在导出的 function 中:
export default function Sketch() {
function setup() {
createCanvas(600, 600);
}
function draw() {
background(0);
}
}
然后在app.js
中,您可以执行以下操作:
import Sketch from './sketch';
Sketch();
这将在客户端的浏览器中运行 function 中的所有代码。
所以只是一个选项,我们这样做是为了在我们的应用程序上选择性地加载某些脚本。 在构造函数(或者可能是 willMount,玩弄它)上的组件中,创建一个新的脚本标签和 append 该脚本标签到你的应用程序的头部。 这将导致脚本仅在渲染此组件时运行(取决于您调用 function 以添加脚本标记的位置)。 您可能还需要考虑根据您的操作删除脚本标签,但您明白了。
function 看起来像这样:
addScriptTag = () => {
script = document.createElement('script');
script.src = [url/path of the javascript you want to server from your node server];
// Or just set the javascript on the script tag by adding innerText and type arts
document.head.appendChild(script)
}
然后做类似的事情:
constructor() {
this.addScriptTag();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.