在本地浏览器中运行简单的反应js

pix*_*xel 8 reactjs

我是新手,我只是想在我的浏览器中运行一个最简单的react js文件.但我无法做到

请注意,我不想创建反应应用程序,我只想在我的本地系统上尝试它.

我做了以下

  1. 在我/Users/me/reactwork,我创建了2个文件clock.htmlclock.js
  2. 然后在Chrome浏览器中输入/Users/me/reactwork/clock.html.我期待看到我的钟,但我不喜欢

我做错了什么?

我是js的新手并做出反应,刚刚开始阅读,所以请一步一步指导我.

这是我的文件

clock.html

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Hello World</title>
    <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
    <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
    <script src="https://unpkg.com/babel-standalone@6.15.0/babel.min.js"></script>
  </head>
  <body>
    <div id="root"></div>
    <script type="text/babel" src="clock.js">

    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

clock.js

import React from 'react';
import ReactDOM from 'react-dom';

function tick() {
    const element = (
        <div>
            <h1>Hello, world!</h1>
            <h2>It is {new Date().toLocaleTimeString()}.</h2>
        </div>
    );

    ReactDOM.render(
        element,
        document.getElementById('root')
    );
}

setInterval(tick, 1000);
Run Code Online (Sandbox Code Playgroud)

Chrome开发者工具会显示此错误

Failed to load file:///Users/me/reactwork/clock.js: Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
Run Code Online (Sandbox Code Playgroud)

我重新研究了这个错误,发现我需要服务器,所以我从我的html和js文件所在的位置发出了以下命令

python -m SimpleHTTPServer
Run Code Online (Sandbox Code Playgroud)

这启动了端口8000上的服务器,然后我去了Chrome并输入了

http://localhost:8000/clock.html
Run Code Online (Sandbox Code Playgroud)

,但这显示Chrome Dev Tools中的错误

clock.js:1 Uncaught ReferenceError: require is not defined
    at <anonymous>:3:14
    at n (https://unpkg.com/babel-standalone@6.15.0/babel.min.js:12:27049)
    at r (https://unpkg.com/babel-standalone@6.15.0/babel.min.js:12:27558)
    at e.src.i.(anonymous function).error (https://unpkg.com/babel-standalone@6.15.0/babel.min.js:12:27873)
    at XMLHttpRequest.i.onreadystatechange (https://unpkg.com/babel-standalone@6.15.0/babel.min.js:12:27316)
Run Code Online (Sandbox Code Playgroud)

更新 我放弃尝试使其工作,因为反应页面建议在此链接上使用"Try React"自己尝试并使用我自己的文本编辑器(https://reactjs.org/docs/installation.html).这不起作用,正如我在上面的帖子中解释的那样.

虽然我希望我能以这种方式工作,但我无法做到,所以我决定将其作为"创建新应用程序"选项卡部分,然后修改index.js文件以使用我在clock.js中的代码.文件如上所述.那很有效.

Ned*_*rov 13

您可以直接react.js运行在浏览器NPMNode.js的NOT REQUIRED.这是一个片段:

// main.js

/* You don't need these imports
**  import React from 'react';
**  import ReactDOM from 'react-dom';
*/
// React and ReactDOM are already imported in you HTML
// Also import / require are NodeJS thing that doesn't exist in a browser


function tick() {
  const element = (
    <div>
      <h1>Hello, world!</h1>
      <h2>It is {new Date().toLocaleTimeString()}.</h2>
    </div>
  );
  ReactDOM.render(
    element,
    document.getElementById('the_root_of_your_reactJS_component')
  );
}

setInterval(tick, 1000);
Run Code Online (Sandbox Code Playgroud)
<!-- index.html -->


<body>

  <!-- some HTML -->
  <div id="the_root_of_your_reactJS_component"></div>
  <!-- some other HTML -->
  
  <script src="https://unpkg.com/babel-standalone@6/babel.min.js"></script>
  <!-- babel is required in order to parse JSX -->

  <script src="https://unpkg.com/react@16/umd/react.development.js"></script>
  <!-- import react.js -->

  <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"> </script>
  <!-- import react-dom.js -->

  <script type="text/babel" src="main.js"></script>
  <!-- import your JS and add - type="text/babel" - otherwise babel wont parse it -->
</body>
Run Code Online (Sandbox Code Playgroud)


Joh*_*ata 10

至少,您需要加载React(和ReactDOM)clock.html.React安装文档中提供了一些说明.

如果您想快速入门,更简单的选择可能是使用create-react-app.您只需要安装node + npm然后运行create-react-app自述文件中列出的几个命令:

npm install -g create-react-app

create-react-app my-app
cd my-app/
npm start
Run Code Online (Sandbox Code Playgroud)

这将创建一个简单的"Hello,world"应用程序并在浏览器中打开它.然后,您可以对其进行更改,并在浏览器中实时更新.