首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在create-react-app中使用公共文件夹中的脚本?

create-react-app项目中使用公共文件夹(通常是public文件夹)中的脚本,可以通过以下几种方式实现:

基础概念

create-react-app是一个用于快速搭建React应用的脚手架工具,它提供了一个public文件夹,用于存放不需要经过Webpack处理的静态资源,如图片、字体文件等。这些文件在构建过程中会被复制到输出目录(通常是build文件夹)的根目录下。

相关优势

  • 简化资源管理:将不需要编译的静态资源放在public文件夹中,可以简化资源的管理和维护。
  • 自动复制:构建过程中,public文件夹中的内容会被自动复制到输出目录,无需手动操作。

类型与应用场景

  • 脚本文件:如JavaScript文件,可以在HTML中直接引用。
  • 样式文件:如CSS文件,可以通过<link>标签引入。
  • 图片和字体:可以直接通过相对路径引用。

如何在create-react-app中使用公共文件夹中的脚本

方法一:通过HTML文件引用

public/index.html文件中,你可以直接通过<script>标签引用public文件夹中的脚本文件。

代码语言:txt
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <!-- ... 其他头部信息 ... -->
</head>
<body>
    <noscript>You need to enable JavaScript to run this app.</noscript>
    <div id="root"></div>
    <!-- 引用公共文件夹中的脚本 -->
    <script src="%PUBLIC_URL%/scripts/myScript.js"></script>
</body>
</html>

方法二:通过环境变量引用

如果你需要在JavaScript代码中动态引用公共文件夹中的脚本,可以使用环境变量process.env.PUBLIC_URL

代码语言:txt
复制
const scriptUrl = `${process.env.PUBLIC_URL}/scripts/myScript.js`;
const script = document.createElement('script');
script.src = scriptUrl;
document.head.appendChild(script);

遇到的问题及解决方法

问题:脚本未正确加载

原因:可能是路径错误或者构建过程中文件未被正确复制。

解决方法

  1. 检查路径:确保%PUBLIC_URL%process.env.PUBLIC_URL正确指向了公共文件夹。
  2. 清理缓存:有时候浏览器缓存会导致脚本未更新,尝试清除缓存或使用无痕模式查看效果。
  3. 重新构建:运行npm run build重新构建项目,确保文件被正确复制。

示例代码

假设你在public/scripts文件夹中有一个名为myScript.js的脚本文件,以下是如何在React组件中动态加载它的示例:

代码语言:txt
复制
import React, { useEffect } from 'react';

function App() {
  useEffect(() => {
    const scriptUrl = `${process.env.PUBLIC_URL}/scripts/myScript.js`;
    const script = document.createElement('script');
    script.src = scriptUrl;
    script.async = true;
    document.head.appendChild(script);

    // 清理函数
    return () => {
      document.head.removeChild(script);
    };
  }, []);

  return (
    <div className="App">
      <h1>Hello, World!</h1>
    </div>
  );
}

export default App;

通过以上方法,你可以在create-react-app项目中有效地使用公共文件夹中的脚本文件。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【shell脚本】$ 在shell脚本中的使用

shell脚本中 '$' 与不同的符号搭配其表示的意义也会不同 特殊标志符 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。...例如,第一个参数是$1,第二个参数是$2 $# 传递给脚本或函数的参数个数 $* 传递给脚本或函数的所有参数 $@ 传递给脚本或函数的所有参数 $?...上个命令的退出状态 $$ 当前Shell进程ID $() 与 `(反引号) 一样用来命令替换使用 ${} 引用变量划分出边界 注释:$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" "...)包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。...但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数

6.2K20
  • shell脚本中的数组常见使用方式

    数组定义: shell中数组的定义是使用 小括号来表示的,其中数组元素之间用空格作为分隔,比如: $ a=(1 2 3 abcd China) 2. 数组的访问: a....获取数组元素的个数: 在上述获取所有元素的前面加上一个# 就可以了,如下: $ echo ${#a[*]} 5 3. 数组的修改: a....追加元素到数组中: shadow@DESKTOP-SRI6HMB ~ $ echo ${a[*]} 1 2 b abcd China shadow@DESKTOP-SRI6HMB ~ $ a[${#a[...数组名称中含有shell变量: 当数组名称中含有shell变量的时候,此时随着shell变量的变化,那么引用的数组自然也就不同;此时可以通过如下的方式实现 变量的嵌套: 嵌套变量有两个符号,一个用来组合成完整的变量名称...,另一个用于 标记组合后的内容是一个变量,而后一个符号需要用 单引号括起来,剩余的部分需要用双引号括起来;然后用echo 来显示这个变量,但因为 单引号 引用的字符不会被shell解释,所以输出结果是单引号

    3.1K20

    使用脚本操作UpdatePanel中控件的问题

    假设有一个脚本(用js或者jQuery等类似手段编写),为UpdatePanel中的一个普通的TextBox赋值。...但是等到点击button之后,仅仅是UpdatePanel中的内部内容刷新了,整个页面根本不刷新(换句话说,整个页面的jQuery根本没有执行)。因此没有任何作用了。   ...,必须通过getInstance方法获取单例之后使用,而Sys.Application可以直接使用。...后者则从客户端的角度(加载了所有Html以及服务端自动生成的脚本等),可以进行额外的控制了。一般我们开发人员主要考虑在这两个事件中处理事情居多。...如果把脚本注册代码仅写在这个方法块里边,和Page_Load那种效果一样,只注册一次脚本。所以根据情况而定。   至于PageRequestManager的事件是针对UpdatePanel为主。

    1.6K100

    如何在 Python 测试脚本中访问需要登录的 GAE 服务

    1、问题背景我有一个 GAE restful 服务,需要使用管理员帐户登录。而我正在用 Python 编写一个自动化脚本来测试这个服务。这个脚本只是执行一个 HTTP POST,然后检查返回的响应。...对我来说困难的部分是如何将测试脚本验证为管理员用户。我创建了一个管理员帐户用于测试目的。但我不确定如何在测试脚本中使用该帐户。...有没有办法让我的测试脚本使用 oath2 或其他方法将自己验证为测试管理员帐户?2、解决方案可以使用 oauth2 来验证测试脚本作为测试管理员帐户。...以下是有关如何执行此操作的步骤:使用您的测试管理员帐户登录 Google Cloud Console。导航到“API 和服务”>“凭据”。单击“创建凭据”>“OAuth 客户端 ID”。...在您的测试脚本中,使用 google-auth-oauthlib 库来验证您的应用程序。

    11710

    Shell-alias在Shell脚本中的使用

    概述 在shell中开启alias 实际操作 概述 众所周知,shell脚本使用的是非交互式方式,在非交互式模式下alias扩展功能默认是关闭的,此时虽然可以定义alias别名,但是shell不会将alias...---- 在shell中开启alias 使用shell内置命令shopt命令来开启alias扩展选项。...在非交互式模式下是关闭的,但可以用可shopt来将其开启 shopt -s expand_aliases ---- 实际操作 在我们的项目中某个模块的双机启动脚本(root用户下操作),其中应用的启停使用了...alias建立的同义词来操作,如果想要在脚本中使用,必须开启同义词才。...项目启动中会依赖一些环境变量,所以双机启动脚本中需要显式的引入.bash_profile文件。 所以我们将 开启alias的命令放在 .bash_profile中。

    2.3K10

    如何在Linux 系统上比较Bash脚本中的字符串?

    在本教程中,我们将向您展示如何在Linux 系统上比较Bash 脚本中的字符串,我们将在一个简单的 if/else Bash 脚本的上下文中展示这一点,这样您就可以看到在开发脚本时测试这种情况是如何工作的...在本教程中,您将学习: 如何在 Bash 中比较字符串 比较字符串的 if/else Bash 脚本示例 Bash 脚本:字符串比较示例 例1 在 Bash 脚本中,您通常会将一个或两个字符串存储为变量...在此示例中,我们使用=运算符和if语句来确定两个字符串是否彼此相等。该if语句将继续其第一个子句或else原因,具体取决于字符串是否相等。 #!...总结 在本教程中,我们了解了如何在 Bash 脚本中比较字符串,尤其是在 Bash 脚本的上下文中if/else。...当然,此功能可以扩展到更健壮的脚本,这些脚本可以读取用户的输入或使用 case 运算符等。这些都是在 Bash 中比较字符串所需的所有比较方法。

    4K00

    如何在Linux系统中列出当前目录下的所有文件和文件夹?

    如何在Linux系统中列出当前目录下的所有文件和文件夹? 摘要 在这篇技术博客中,我将详细介绍如何在Linux系统中列出当前目录下的所有文件和文件夹。...下面我们将逐一介绍这些方法: 使用ls命令 ls 使用ls命令可以列出当前目录下的所有文件和文件夹。...小结 通过本文的介绍,您现在应该已经掌握了在Linux系统中列出当前目录下所有文件和文件夹的几种常用方法。使用ls命令可以轻松实现这一功能,并且可以根据需要显示详细信息或隐藏文件。...通过本文的学习,您现在应该已经了解了几种在Linux系统中列出当前目录下所有文件和文件夹的方法。...同时,也可以关注Linux系统的发展,以及新的文件管理工具的出现,为我们的工作带来更多便利。 参考资料 Linux ls命令文档 Linux命令行与Shell脚本编程大全

    50110

    几个Linux命令及脚本使用中的有趣技巧

    openssl rand -base64 200|cut -b 1-11|head -n 1 实例4.不切换当前工作目录,使用cd命令并显示切换后目标目录的内容。...(cd /bin;ls) 本例子中,使用()定义了一个子shell,对当前的shell并无影响,所有改变仅限于子shell中,上述操作在某些场景中特别有用。...实例7.删除文本中的空白行。 sed -i '/^$/d' a.txt 实现这个功能的命令很多,可能这是最简单一个命令了。...实例8.通过正则表达式的匹配,将匹配内容使用&替代,按照指定格式输出。 echo "My name is Ivan."...My phone number is 010-87654321"|sed 's/[a-zA-Z0-9]\+/{&}' 上面例子分别匹配出了目标字符串中的单词(包括数字和字母),并把匹配内容分别使用

    54930

    shell脚本中的if条件语句介绍和使用案例

    #前言:在生产工作中if条件语句是最常使用的,如使用来判断服务状态,监控服务器的CPU,内存,磁盘等操作,所以我们需要熟悉和掌握if条件语句。 简介 if条件语句,简单来说就是:如果,那么。...shell scripts]# sh if2.sh 3 input 3 success [root@shell scripts]# sh if2.sh 4 input failure 4.if条件语句的使用案例...echo "mysqld service down" | mail -s "mysqld" 1075792988@qq.com systemctl restart mysqld fi #然后将写的监控脚本放进定时任务里面...配置邮件报警功能 3.进行判断,如果取到的值小于200M,就报警 4.编写shell脚本 5.加入crond定时任务,然后每3分钟检查一次 #总结:if条件语句可以做的事情还有很多,大家可以根据工作需求去多多开发挖掘...,下篇将继续写shell脚本的另外一个条件语句case。

    9.8K40

    如何在Spring中优雅的使用单例模式?

    Java使用构造方法去创建对象可以有三种方式: 使用new关键字 使用Class.getInstance(通过反射调用无参构造方法) 使用Constructor.newInstance(实则也是通过反射的方式调用任何构造方法...) 单例模式私有化了构造方法,所以其他类无法使用通过new的方式去创建对象,在其他类使用该类的实例时,只能通过getInstance去获取。...Spring下使用单例模式 最成功的单例并不是双重检验锁,而是枚举,枚举本身就是一种单例,并且无法使用反射攻击,再一个最优雅的是Spring本身实现的单例: 常用Spring中 @Repository、...,因为@Component+@Bean并不是单例,在调用过程中可能会出现多个Bean实例,导致蜜汁错误。...该组件的生命周期就交由Spring容器管理,声明为单例的组件在Spring容器只会实例化一个Bean,多次请求中复用同一个Bean,Spring会先从缓存的Map中查询是否存在该Bean,如果不存在才会创建对象

    6.5K20

    如何使用Python选择性地删除文件夹中的文件?

    问题1 问题描述:在一个文件夹中,有着普通文件以及文件夹,那么我们如何做到删除全部文件夹而不删除文件呢? 如下图所示,我们想要删除test文件夹中的所有文件夹,而保留其他文件: ?...Version 1 看到这个问题的第一刻,我想到的是文件夹没有后缀名,其他文件有后缀名,而拥有后缀名则意味着文件名称里面会有.的存在,我们就可以利用这个差别,来区分两者,进而实现问题描述中的功能。...我们可以看到,test文件夹中的文件已经全部删除。 ? Version 2.0 但是,后来仔细一想,上面这种方法却存在一个非常大的问题,如果普通文件是没有后缀名,也就是文件名称中不存在....接着,我又发现了文件夹和普通文件的另外一个区别,也就是文件夹是可以使用os.chdir("file_name")这个命令的,而普通文件则显然不行,会出现异常。...问题2 问题描述:我们如何做到删除一个文件夹中的空白文件夹,而不删除其他文件呢? ? 可以看出,问题2是问题1的进阶版本,只需要在问题1的代码基础上,增加一个判断文件夹是否空白的语句即可。

    13.3K30

    如何在FME中更好的使用Tester转换器

    Tester转换器 过滤规则: 需处理字段: Name与Address(要素只能有Name或Address中的一个字段) 规则: 不能只有半括号(有全括号的可以):(、)、(、) 不能有特殊字符: 英文...、*、# 处理思路: 首先,确定要使用的转换器。既然是过滤,第一个要考虑的就是tester转换器,接下来就要考虑使用什么规则、怎么组合。...规则的组合: 在这里,我使用正则来过滤,表达式的设置截图如图1所示。...特殊字符设置比较简单,只要是要素中要测试字段包含了该字符就算通过了规则,全括号与半括号的规则稍微复杂了一点,需要通过使用两条规则来组合,并且对第三条与第六条规则进行了取反设置。...更多内容可到视频中查看: ?

    3.6K10

    如何在CM中启用YARN的使用率报告

    Cluster Utilization Report)是整个多租户方案体系里的一部分,可以用来查看租户的资源使用情况,并可以通过Cloudera Manager的API导出资源使用报表。...YARN的容器使用情况度量收集 ---- 1.首先在YARN服务中开启容器使用情况度量收集 [gxt0igoa4o.jpeg] [lf2kuu5h3w.jpeg] 对于“容器使用情况MapReduce作业用户...2.这个时候CM会自动在HDFS中创建用于收集YARN容器使用情况的目录,/tmp/cmYarnContainerMetrics,用户属组为cmjobuser:hadoop,权限为770 [povqey0e9g.jpeg...如果你在CM中专门指定了一个池,如下配置 [0ydaqohy8r.jpeg] 则需要确保CM的动态资源池配置的放置规则中有如下策略: [7cwr5reg7p.jpeg] 否则你需要在YARN中创建你在CM...注:Fayson在测试过程中,CM并没有专门指定队列,所以在运行任务的时候默认使用的是第二条放置策略,即:使用池 root.users.username ,如果该池不存在则加以创建。

    4.4K50

    几个Linux命令及脚本使用中的奇淫巧技

    openssl rand -base64 200|cut -b 1-11|head -n 1 实例4.不切换当前工作目录,使用cd命令并显示切换后目标目录的内容。...(cd /bin;ls) 本例子中,使用()定义了一个子shell,对当前的shell并无影响,所有改变仅限于子shell中,上述操作在某些场景中特别有用。...while true ; do display=`echo $RANDMOM|md5sum` ; echo $display $display ; done 实例6.使用一条命令随机创建一个指定格式的文件或目录...实例7.删除文本中的空白行。 sed -i '/^$/d' a.txt 实现这个功能的命令很多,可能这是最简单一个命令了。 实例8.通过正则表达式的匹配,将匹配内容使用&替代,按照指定格式输出。...My phone number is 010-87654321"|sed 's/[a-zA-Z0-9]\+/{&}' 上面例子分别匹配出了目标字符串中的单词(包括数字和字母),并把匹配内容分别使用[]和

    65720
    领券