gpt4 book ai didi

javascript - 在同一目录中使用导入/导出两个 JavaScript 文件时遇到困难,不使用 React 或 Node

转载 作者:行者123 更新时间:2023-12-02 23:02:33 26 4
gpt4 key购买 nike

我正在遵循一个简单的在线教程。没有什么奇怪的事情发生,而且我没有使用 Node 或 React。那家伙正在使用沙盒,但我只是使用括号和桌面上的一个文件夹来包含我的文件。一切都很好,直到我必须将一个类从一个脚本 (paddle.js) 导出到主脚本 (index.js)。在更改第一行之前,正如预期的那样,浏览器中只有一个空白 Canvas 。更改第一行后(分别通过插入导出/导入命令),我在 Chrome 中收到以下错误:

Uncaught SyntaxError: Unexpected identifier index.js:1

Uncaught SyntaxError: Unexpected token export paddle.js:1

这是我的脚本 paddle.js:

export default class Paddle {
constructor(gameWidth, gameHeight){

this.width = 150;
this.height = 30;

this.position = {
x: (gameWidth - this.width) / 2,
y: gameHeight - this.height - 10,
};
}

draw(ctx){
ctx.fillRect(this.position.x,this.position.y,this.width,this.height);
}
}

这是我的脚本index.js:

import Paddle from 'paddle';

let canvas = document.getElementById("gameScreen");

let ctx = canvas.getContext('2d');

const GAME_WIDTH = 800;

const GAME_HEIGHT = 600;

ctx.clearRect(0,0, GAME_WIDTH,GAME_HEIGHT) //clears region between corners of screen, necessary fro re-drawing because screen does not 'reset' until I tell it to.

let paddle = new Paddle(GAME_WIDTH, GAME_HEIGHT);
paddle.draw(ctx);

这是我的 html 文件,index.html(主要是样板文件):

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<style>

#gameScreen{

border: 1px solid black;

}

</style>

<title>breakout tutorial</title>
</head>

<body>

<canvas id = "gameScreen" width="800" height="600"></canvas>

<script src = "index.js"></script>
<script src = "paddle.js"></script>
</body>
</html>

我应该在屏幕底部看到一个蓝色的桨,就像这个人的视频中一样:

https://www.youtube.com/watch?v=3EMxBkqC4z0 enter image description here

编辑: @Talgat Saribayev 所以我正在尝试遵循您的建议并从控制台运行 HTTP 服务器。我将目录设置为附件 zip 的“/src”目录,该目录位于我的桌面上。我收到“404 未找到”错误。我认为这是一个简单的解决方法,但我不知道该怎么做。可能是类(class)中的导入行。帮忙?

https://drive.google.com/file/d/1xKGUpfmjHggY50lUyFrAKFqo_msPjZKS/view?usp=sharing

最佳答案

好的,hatinacat2000 给出了答案,但是您可以在 Chrome 上 native 启用 ES6 导入导出。我将尝试解释每个步骤和配置,以便运行您的代码。

  1. type="module" 添加到脚本标记
<script type="module" src = "index.js"></script>
<script type="module" src = "paddle.js"></script>

为了启用ES6模块。欲了解更多信息:https://medium.com/dev-channel/es6-modules-in-chrome-canary-m60-ba588dfb8ab7

  • 负载抛出一些服务器,否则将面临 CORS 问题。试试这个 https://www.npmjs.com/package/http-server

  • 您还需要更新 index.js 代码中的 import

  • import Paddle from './paddle.js';

    就是这样,现在您可以 native 使用 ES6 模块


    编辑其余说明专门针对 hatinacat2000 案例。

    1. 将文件解压到任意目录,打开终端并移至MyFiles
    2. 将您的 Assets 目录/文件夹移至src
    $ tree ./src -L 1
    ./src
    ├── assets
    ├── ball.js
    ├── game.js
    ├── index.html
    ├── index.js
    ├── input.js
    └── paddle.js
  • 将 js 文件中的所有导入更改为相对导入。不要忘记 .js 扩展名。例如对于 game.js
  • import Paddle from "./paddle.js";
    import InputHandler from "./input.js";
    import Ball from "./ball.js";
  • 运行您的 http 服务器。 $ http-server ./src 并在浏览器中打开 http://localhost:8080/
  • 这就是我所拥有的 enter image description here

    关于javascript - 在同一目录中使用导入/导出两个 JavaScript 文件时遇到困难,不使用 React 或 Node,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57734510/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com