javascript - 不使用 Paperjs 代码时 Paperjs 导致类语法错误

标签 javascript paperjs

使用Paperjs:

<script type="text/javascript" src="paper.js"></script>
<script type="text/paperscript" canvas="myCanvas" src="myapp.js"></script>

尝试在 myapp.js 中创建一个类:

class Petal {
  constructor(index, x, y, diameter, round) {
    this.index = index;
    this.x = x;
    this.y = y;
    this.diameter = diameter;    
    this.round = round;

这会在 [paper.js:15421:12] 的 paper.js(不是我的代码,那是 paperjs 框架)中创建一个“语法错误意外标记”。

它指的是这个(第 4 行是 14521):

  function raise(pos, message) {
    var loc = getLineInfo(input, pos);
    message += " (" + loc.line + ":" + loc.column + ")";
    var err = new SyntaxError(message);
    err.pos = pos; err.loc = loc; err.raisedAt = tokPos;
    throw err;
  }

我是这样的编码新手,我只是被难住了。我正在制作的类甚至没有使用 paperjs 中的任何代码,所以我不知道为什么它会在 paper.js 文件中创建错误。也是堆栈溢出的新手,所以请告诉我我做错了什么。

最佳答案

通过指定type="text/paperscript"在您的<script>上标签,您正在将代码加载为 PaperScript而不是JavaScript .
这意味着Paper.js在将其传递给浏览器之前会先对其进行解析 JavaScript发动机。
为了解析您的代码,Paper.js使用acorn ,一个解析器库。以及acorn的版本捆绑Paper.js不支持ES6语法。
为了避免这种情况,您可以加载新版本的 acorn (支持 ES6 )在加载 Paper.js 之前.
这实际上是在 Paper.js 上所做的。 Playground :http://sketch.paperjs.org/

这是一个fiddle演示解决方案。
请注意,我使用了 https://unpkg.com快速加载最新版本的 npm 包,但您可以从任何您想要的位置加载它们。

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Debug</title>
    <!-- Load latest acron version first -->
    <script type="text/javascript" src="https://unpkg.com/acorn"></script>
    <!-- Then load Paper.js -->
    <script type="text/javascript" src="https://unpkg.com/paper"></script>
    <style>
      html,
      body {
          margin: 0;
          overflow: hidden;
          height: 100%;
      }

      canvas {
          width: 100%;
          height: 100%;
      }
    </style>
</head>
<body>
<canvas id="canvas" resize></canvas>
<script type="text/paperscript" canvas="canvas">
// Here you can now use ES6 syntax.
class MyClass {
    constructor() {
        new Path.Circle({
            center: view.center,
            radius: 50,
            fillColor: 'orange'
        })
    }
}

const myInstance = new MyClass();
</script>
</body>
</html>

关于javascript - 不使用 Paperjs 代码时 Paperjs 导致类语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58847325/

相关文章:

javascript - 如果语句因 $(this) 失败,但适用于绝对

javascript - AngularJS 过滤器不能很好地工作

javascript - 使用 Paper.js 设置图像以填充 Canvas

javascript - 变量作用域冲突Js

javascript - 从组 paperJS 中删除特定的子组

javascript - Paperjs 中的路径 VS 形状?

javascript - 如何将 rafael.js 和 paper.js 合并在一个 html 中?

javascript - Ionic 2 RC0 属性 'tz' 在类型 'typeof moment' 上不存在

javascript - 使用 $lookup 在 mongodb 中进行外部连接

javascript - 在 JavaScript 中链接多个异步函数