Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Next.js静态服务器端渲染和Gatsby.js_Javascript_Reactjs_Next.js_Gatsby_Server Side Rendering - Fatal编程技术网

Javascript Next.js静态服务器端渲染和Gatsby.js

Javascript Next.js静态服务器端渲染和Gatsby.js,javascript,reactjs,next.js,gatsby,server-side-rendering,Javascript,Reactjs,Next.js,Gatsby,Server Side Rendering,我想用Next.js建立一个网站,并试图更好地了解他们的网站,以及您可以使用它的不同方式。 首先,这里有一个静态站点生成器。当您运行Gatsby的build命令时,您会得到一个/public文件夹,该文件夹是完全静态的,可以在不需要任何后端的情况下进行部署。如果我理解正确,这意味着在第一次请求时,整个静态文件夹都会发送到客户端,从那时起,包括路由在内的所有事情都会在客户端进行。 另一方面,使用Next.js可以进行静态生成,这意味着所有页面在构建时都在服务器上预呈现(如Gatsby),但应用程序

我想用Next.js建立一个网站,并试图更好地了解他们的网站,以及您可以使用它的不同方式。
首先,这里有一个静态站点生成器。当您运行Gatsby的
build
命令时,您会得到一个
/public
文件夹,该文件夹是完全静态的,可以在不需要任何后端的情况下进行部署。如果我理解正确,这意味着在第一次请求时,整个静态文件夹都会发送到客户端,从那时起,包括路由在内的所有事情都会在客户端进行。
另一方面,使用Next.js可以进行静态生成,这意味着所有页面在构建时都在服务器上预呈现(如Gatsby),但应用程序仍然依赖后端(成熟的服务器或无服务器功能)进行路由。也就是说,页面是预先呈现的,但与盖茨比不同,它们是根据请求发送给客户机的,即在导航时。(我发现Next只有最初的请求,但与盖茨比有什么区别?
我在这一切中感到困惑的是,像Next的文档之类的东西。他们从陈述开始

下一步
export
允许您将应用程序导出为静态HTML,无需Node.js服务器即可独立运行

因此,听起来这个选项让我们能够像盖茨比一样使用Next,即作为一个完全静态的文件夹。
但他们接着说:

如果您的页面没有
getInitialProps
您可能根本不需要
下一次导出
<代码>下一个版本已经足够了,多亏了

但是,自动静态优化只涉及服务器端静态预渲染,并且
下一个构建
不会生成一个类似盖茨比的静态文件夹,该文件夹可以作为独立文件夹部署。
那么我在这里错过了什么?Gatsby.js和Next.js有什么区别?盖茨比能做下一个做不到的事吗?不使用
export
命令,我可以用Next构建一个完全静态的站点吗?
最重要的是,我是否可以构建和部署一个Next.js应用程序,其中一些页面是完全静态的(比如Gatsby),一些页面是预先呈现的(
getStaticProps
GetStaticPath
),一些页面是服务器端呈现的(
getServerSideProps


提前多谢

第一个请求是
/index.html
,因此不会将整个
public
发送到客户端

盖茨比优化了加载过程,以确保首先加载关键资源(HTML、CSS、JS),从而确保最佳的用户体验。从那里,它将加载呈现整个页面所需的剩余资源,并从主页预取链接页面。当然,如果您请求了到另一个页面的路由,那么客户机最初将获取该页面的HTML,但随后的过程将类似

Gatsby在这方面仍然比Next.js做得更好(SSG是Next的一个非常新的特性,这是Gatsby的核心功能)-参见

在回答您的问题时,是的,您可以使用Next进行完整SSG、部分SSR/SSG和完整SSR。如果您想要完整的SSG,您需要执行
next export
,否则对于其他模式,您处于标准的next territory和next将同时处理SSG/SSR,因为您有一个运行的传统web服务器,既可以提供静态内容,也可以执行动态SSR