我正在将一个现有的React应用程序集成到Next.js中,主要用于SEO功能。
我把css文件链接粘贴到Next.js
标签中,它们看起来工作得很好。当我尝试使用<script>
标签对javascript文件做同样的操作时,它不会执行这些脚本中的代码。但我可以看到它们在chrome开发工具中加载了http 200
。
我尝试使用npm
中名为Loadjs
的库来加载componentDidMount
中的脚本,但得到的结果与使用<script>
标记完全相同。
在Next.js
中,有没有一种我不知道的正确方法来做这么简单的事情?
下面是pages/index.js
文件中包含的代码。
import React from "react"
import Head from 'next/head'
import MyAwesomeComponent from "../components/mycomponent.js"
export default () => (
<div>
<Head>
<link type="text/css" rel="stylesheet" href="static/css/chatwidget.css" />
<link type="text/css" rel="stylesheet" href="static/css/download.css" />
<script type="text/javascript" src="static/libs/jquery.min.js"></script>
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/malihu-custom-scrollbar-plugin@3.1.5/jquery.mCustomScrollbar.concat.min.js"></script>
<script type="text/javascript" src="static/libs/bootstrap.min.js"></script>
<script type="text/javascript" src="static/libs/owl.carousel.min.js"></script>
<script type="text/javascript" src="static/scripts/chatHead.js"></script>
<script type="text/javascript" src="static/libs/jquery.magnific-popup.js"></script>
</Head>
<MyAwesomeComponent /> {/* a simple React component that returns : <p>Hello World </p>*/}
</div>
)
很抱歉我的回答太晚了。事实证明,我链接的所有scripts
都缺少了一个脚本,该脚本实际上会为每个操作运行functions
。
7条答案
按热度按时间bvjxkvbb1#
这对我很有效:
为静态文件创建文件夹:
<root>/public/static/script.js
在您的index.js中,位于
<root>/pages/index.js
请注意,
static
是我在本例中使用的名称,这不是必需的,它可以与任何其他文件夹名称一起使用。a1o7rhls2#
使用下面的方法,您可以轻松地将脚本文件的原始脚本文本放入生成的Next.js HTML页面的
<head>
中,而无需进行字符转义、格式化和通常的假装,无论如何,我们最终实际上并不只是构建HTML页面。有许多用例您可能希望脚本在不连接网络的情况下运行。例如:第三方脚本,监控/分析脚本,预计在
<head>
中没有单独的网络负载。其中许多都被缩小,损坏,你的名字,只是应该复制,粘贴,继续生活。Next.js使这一点非常困难,假装一切与Web开发是神奇地React和Webpack所有的时间现在(我希望对吗?)
我发现的最好的开发者体验方式是这样做:
_文件.js
下一个配置文件js
https://github.com/vercel/next.js/blob/canary/packages/next/next-server/server/config.ts#L33
原始Js来自文件.js
希望这能把某人从我忍受的几个小时的沮丧中解救出来。😭
jdg4fx2g3#
您还可以运行js代码
q1qsirdb4#
对于Next.js v11及更高版本,您可以使用Next组件
Script
https://nextjs.org/blog/next-11#script-optimization
ftf50wuq5#
愿这对你有帮助
将静态文件夹移动到根目录下的公用文件夹中
s2j5cfk06#
这是我尝试过的,它对我很有效。我使用了两个文件
entry-script.js
和main-script.js
。我把这些像这样<root>/static/entry-script.js
和<root>/static/main-script.js
。entry-script.js
的内容如下。主要的逻辑在文件
main-script.js
中。在NextJS的文件_doucment.js
中,我将我的文件entry-script.js
包含在如下的主体中qmelpv7a7#
我写了一篇文章详细阐述了这个问题,希望它能派上用场:
https://www.devtwins.com/blog/how-to-add-a-third-party-script-to-a-nextjs-website