如何在没有 create-react-app 的情况下手动配置 React 的最小设置?

2024-04-26

我不想使用create-react-app。那么我该如何配置minimal一个简单的反应应用程序的工作开发环境?

Note:我知道我可能会包含所有内容在运行时作为 JS https://reactjs.org/docs/add-react-to-a-website.html(这是有据可查的),但我不想要这个,因为我仍然想要一个可用的版本用于生产!

I do not want:

  • 进行任何缩小(请参阅此处相关问题 https://stackoverflow.com/questions/55160698/how-to-use-react-without-unsafe-inline-javascript-css-code)
  • 进行任何串联(或者,如果更容易做到,我可以将所有 JS 例如串联在一个文件中)
  • 任何比我编写的 JS 更旧的浏览器支持(所以没有转译可以做到这一点)
  • 任何开发服务器(我可以手动重新加载。????)
  • 任何实时重新加载或高级开发功能

我的确想要:

  • 使用 React 组件
  • (可选)包括 JSX (我知道没有它也可以使用 React https://reactjs.org/docs/react-without-jsx.html,但我们可以说这是我想从 React 获得的最小优势。但是,请告诉我,这将“花费”包括哪些额外的设置/配置步骤,因此这个答案适用于那些想要 JSX 和那些不需要 JSX 的人。)

基本上,I just想要使用反应。没有周围所有花哨的其他东西!*

我只是问这个,因为React 官方文档 https://reactjs.org/docs/getting-started.html不要提及这种可能性。


注意:对于那些想知道为什么我想要这个的人来说,推理如下。

* 实际上,忽略这些方便的开发功能等听起来也很疯狂。但我声称这有合理的理由/用例。我的是例如所有这些对我来说都不可用/破坏了东西,因为我正在尝试使用 React 构建浏览器扩展 https://stackoverflow.com/questions/55160698/how-to-use-react-without-unsafe-inline-javascript-css-code.


Yes 我看到这个非常相似的问题 https://stackoverflow.com/questions/50565466/how-to-create-a-react-app-without-create-react-app,但不幸的是,用户比我先一步,答案只是非常具体的their问题。我想先了解一般情况,即我需要什么 and 如何设置?


先决条件:

  • Node.js (npm) 或纱线安装在您的计算机上或作为可执行文件

因此,对于一个非常小的设置,您需要...

  1. 初始化文件夹
  • cd path/to/my/folder
  • npm init
  1. 创建一个index.html
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8" />
        <title></title>
    </head>
    <body>
        <div id="root"></div>
        <script src="./node_modules/react/umd/react.development.js"></script>
        <script src="./node_modules/react-dom/umd/react-dom.development.js"></script>
        <script src="./dist/main.js"></script>
    </body>
</html>
  1. 那么你会想要npm install --save ...
  • react
  • 反应-dom
  • webpack
  • webpack-cli
  • @babel/核心
  • 巴别塔装载机
  • @babel/预设反应

npm install --save react react-dom
npm install --save-dev webpack webpack-cli @babel/core babel-loader @babel/preset-react

  1. Create .babelrc
{
  "presets": ["@babel/preset-react"]
}
  1. 创建 webpack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.jsx?$/,
        exclude: /node_modules/,
        use: {
          loader: "babel-loader"
        }
      }
    ]
  }
};
  1. Edit package.json要构建的脚本
"scripts": {
    "build": "webpack --mode development"
  },
  1. 编写你的根组件

创建一个src/components文件夹,然后创建您的src/components/app.jsx: (编辑 2021:使用函数,而不是类!)

import * as React from "react";

export class App extends React.Component {

  render() {
    return (
      <div>
        Hello, world!
      </div>
    );
  }
}
  1. 将你的 ReactDOM 渲染器写入src/index.js(注意 .js,而不是 jsx - 否则,如果没有更多配置,webpack 将找不到该文件):
import ReactDOM from "react-dom";
import { App } from "./components/app.jsx";

ReactDOM.render(
  <App />,
  document.getElementById("root")
);
  1. Build: npm run build
  2. 打开你的path/to/my/folder/index.html在现代浏览器中

你就完成了!您现在可以添加任何您想要的方便的附加组件,而不会出现任何不良的膨胀。我建议打字稿.

对于任何需要阅读的人支持旧版浏览器,只需执行以下两个步骤:

  1. npm install @babel/preset-env
  2. Edit .babelrc并将 @babel/preset-env 添加到您的预设中:
{
    "presets": ["@babel/preset-env", "@babel/preset-react"]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在没有 create-react-app 的情况下手动配置 React 的最小设置? 的相关文章

随机推荐

  • Google App Maker 将记录保存到数据库每条记录需要 240 毫秒

    我们有一个使用 Google Cloud SQL 表的 Google App Maker 应用 我们的位置是中欧布拉格 保存一项记录至少需要令人难以置信的 240 毫秒 看起来 Google 应用制作工具在我的位置附近有一个代理 延迟约 2
  • 当您的 ant 构建过程在版本控制上崩溃时该怎么办

    所以我有一个很好的 Java 项目 使用 Ant 构建到 dist 文件夹 整个项目处于版本控制之下 因此我只需通过 dist 文件夹路径上的 svn导出 即可部署最新版本 但我的构建不断删除 dist 文件夹内的 svn 文件夹及其所有依
  • D3 数据对象内的循环数组

    data name c1 id 4690 day 1 3 start 8 00 end 10 00 name c3 id 5283 day 3 4 start 8 00 end 17 00 name c4 id 4862 day 4 sta
  • 为什么要在 php 中使用异常处理?

    我已经编写 PHP 很长一段时间了 但对 PHP 5 的了解并不多 我了解 PHP 5 中的异常处理已经有一段时间了 但从未真正研究过它 经过快速谷歌后 使用异常处理似乎毫无意义 我看不出使用它比仅使用一些 if 语句 也许还有我自己的错误
  • 如何中断 java.util.Scanner nextLine 调用

    我正在使用多线程环境 其中一个线程通过重复调用不断侦听用户输入scanner nextLine 要结束应用程序 此运行循环将由另一个线程停止 但侦听线程不会停止 直到最后一个用户输入完成 由于nextLine 关闭流似乎不是一个选择 因为我
  • 异常:无效参数:continuationToken

    我正在尝试使用 工作示例 线性迭代器 来实现一个简单的延续令牌这个帖子 https stackoverflow com questions 45689629 how to use continuationtoken with recursi
  • NSFetchedResultsController XCode 7 问题

    Xcode 7 beta 6 和 NSFetchedResultsController 今天让我头疼 如果我使用 Xcode 6 编译相同的代码 使用 Swift 2 修复 程序可以在设备和模拟器 iOS 7 iOS8 上运行 但是 如果我
  • 如何更改更新数据库 ef 迁移的连接字符串?

    我正在尝试运行 Update Database 并且想指定连接字符串 但 CLI 正在查看错误的字符串 我的 appsettings json 文件中有两个连接字符串 Logging IncludeScopes false LogLevel
  • iOS/Objective-C 的 switch 语句中的失败

    假设我有一个包含五个案例的 switch 语句 但只有两个真正的方法被调用 如下所示 switch condition case conditionOutcome1 self firstMethod break case condition
  • 如何在隐身模式下启用 chrome 扩展的 pageAction 图标?

    即使选择 允许在隐身模式 后 使用 pageaction 在某些网址中呈现的扩展也不会在隐身模式下显示 background js 有以下内容 chrome runtime onInstalled addListener function
  • 使用WebView setHttpAuthUsernamePassword?

    我正在尝试进行基本身份验证以查看受保护的网址 我想访问受保护的网址 如下所示 http api test com userinfo vid 1234 所以我用 WebView 执行以下操作 mWebView setHttpAuthUsern
  • 如何在 Flutter 中保存用户登录详细信息?

    我是颤振新手 想要制作一个只有经过身份验证的用户 通过填写电子邮件和密码 才能使用的应用程序 所以我正在考虑制作一个名为的根小部件Authentication我将在其中检查用户是否经过身份验证 如果他们是那么带他们去Home Widget
  • ASP.NET MVC 4 cookie 消失

    我有一个 ASP NET 应用程序 它将身份验证 cookie 发送到 ASP NET MVC 应用程序 用作后台应用程序 我添加了一个全局过滤器 用于检查身份验证 cookie 的每个控制器操作 如果cookie存在 则允许用户进入该页面
  • 使用php在两个日期之间选择MS访问

    我想使用 php 从 ms access 选择数据 这是我的代码 dbdir D payroll2 ATT2000 MDB conn odbc connect DRIVER Microsoft Access Driver mdb DBQ d
  • 使用另一个视图控制器中的原型单元

    我想在多个故事板场景中使用相同的表视图单元格布局 我可以在其中一个场景中设计原型单元并以某种方式在另一个表视图控制器中访问它 即 dequeueReusableCellWithIdentifier 吗 这是不可能的 但您可以将原型单元格从源
  • 使用Boost获取成员函数的数量和参数类型? (升压::function_traits)

    对于普通的普通函数来说 它工作得很好 下面的代码工作得很好 它只打印应该的内容 int cdecl int char 2 int char include
  • 如何模拟 TCP/IP 错误?

    在多层应用程序上 我需要模拟各种 TCP IP 错误来测试一些重新连接代码 有谁知道我可以使用什么工具 基于 Windows 来实现此目的 谢谢 Scapy http secdev org projects scapy 允许您控制数据包的各
  • 有没有一种 CSS 唯一的方法来完全隐藏部分溢出的元素?

    想象一下 您有一个元素的高度是浏览器窗口高度的百分比 该元素包含一堆块元素 有没有办法使用类似的东西overflow hidden但要确保最后一个块元素在溢出时完全隐藏而不是部分隐藏 使用 JavaScript 很容易做到这一点 但我更喜欢
  • 在ms access中存储大量图像

    我有一个库存 联系人数据库 需要在其中存储大量图像 10k 件物品 1k 人 现在 由于纯粹的膨胀 显然 ole 对象是不可能的 有没有更好的方法来做到这一点 例如存储图像的路径 将存储在数据库的文件夹中 并在我需要的地方显示该图像 这会很
  • 如何在没有 create-react-app 的情况下手动配置 React 的最小设置?

    我不想使用create react app 那么我该如何配置minimal一个简单的反应应用程序的工作开发环境 Note 我知道我可能会包含所有内容在运行时作为 JS https reactjs org docs add react to