标签: server-side-rendering

Next 13 如何设置客户端组件的<title>?

我正在将 Next 12 应用程序迁移到 Next 13 及其新/app目录。

我有一个<LoginPage>组件(呈现 @ /login),显然,它需要使用钩子来管理表单数据。因此,我已经用'use client'指令标记了它。

然而,这意味着新的元数据 API 不能用于设置<title>,理想情况下,我希望设置像 一样简单Login | ${process.env.NEXT_PUBLIC_APP_NAME}

任何帮助表示赞赏!

seo server-side-rendering next.js next.js13

5
推荐指数
2
解决办法
2472
查看次数

Next.js 服务器组件中 useState 的替代方案?

鉴于我有一个静态站点(https://abdullahraheel.tech/),其唯一的交互功能是切换暗模式的能力,我承认useState在服务器组件中使用是不可能的。

export default function RootLayout({ children }: { children: React.ReactNode }) {
    const [darkMode, setDarkMode] = useState(true);
    return (
        <html lang="en">
            <head />
            <body className={inter.className}>
                <div className={darkMode ? "dark" : ""}>
                    <main className="min-h-screen bg-white px-5 dark:bg-black absolute left-0 right-0 -z-50">
                        <FallingStar />
                        <Navbar darkMode={darkMode} setDarkMode={setDarkMode} />
                        <div className="mx-auto max-w-3xl z-50 mb-10">
                            {children}
                            <Footer />
                        </div>
                        <AnalyticsWrapper />
                    </main>
                </div>
            </body>
        </html>
    );
}
Run Code Online (Sandbox Code Playgroud)

鉴于上面的代码,我只是将 dark 类应用到我的容器 div 中。深色模式在导航栏中切换。

在 Next.js 13 中,我利用layout.tsx 中的“use client”关键字将整个布局转换为客户端组件。然而,考虑到我对默认启用深色模式的偏好,我现在认识到将整个布局作为客户端组件可能不是最佳方法。因此,我想将站点转换为服务器端组件,以便稍后可以进行水合以实现所需的交互性。

javascript typescript server-side-rendering next.js tailwind-css

5
推荐指数
1
解决办法
2449
查看次数

Angular 检测到“HttpClient”未配置为使用“fetch” API。(Angular 17 - SSR)

更新到 Angular 17 后出现此错误:

NG02801:Angular 检测到“HttpClient”未配置为使用“fetch” API。强烈建议为使用服务器端渲染的应用程序启用“fetch”,以获得更好的性能和兼容性。要启用“fetch”,请将“withFetch()”添加到应用程序根目录的“provideHttpClient()”调用中。

我认为在对我的服务进行编码并HttpClient通过注入函数导入之后,它达到了这一点。

httpclient fetch-api server-side-rendering angular

5
推荐指数
1
解决办法
1万
查看次数

ejs模板的客户端和服务器端渲染

我一直想学习 NodeJS 以便能够在服务器端和客户端运行相同的代码。我正在将 NodeJS 与 Express 和 EJS 一起使用。所以。我有一个 .ejs 页面,里面有很多 HTML、JS、CSS 和一些模板。为了正义,让它变成这样:

the_list-->some.ejs

<ul> 
<% for(i=0;i>the_list.length;i++) { %>
    <li>the_list[i]</li>
<% } %>
</ul>    
Run Code Online (Sandbox Code Playgroud)

在服务器上进行一些渲染后,我们有一个完美的列表。

所以。现在我想在客户端重新渲染它。我提出了一些 ajax 请求,现在我在 the_list 中有新项目。什么是正确的方法?

ejs node.js client-side-templating server-side-rendering

4
推荐指数
2
解决办法
9552
查看次数

如何从角度通用构建中删除 sourceMappingURL?

我正在使用这个 repo 作为基础。我已经解决了几乎所有其他插件的错误,但我无法解决这个错误。

在进行 SSR 构建时,没有其他插件需要 .map 文件,因为它是生产版本。但我不知道它是从哪里爬进来的。

这是导致错误的行。在server.js文件中。

margin: -1px 0; }\n\n/*# sourceMappingURL=swiper.component.css.map
Run Code Online (Sandbox Code Playgroud)

我不想每次进行构建时都手动删除它,因此如何解决问题以及问题可能是什么。

错误 出了点问题,请稍后再试!错误 { 错误:未捕获(承诺):错误:无法匹配任何路由。URL 段:'swiper.component.css.map' 错误:无法匹配任何路由。URL 段:CatchSubscriber.selector (E:\xampp\htdocs\havemybooks\ dist\server.js:146195:29) 在 CatchSubscriber.error (E:\xampp\htdocs\havemybooks\dist\server.js:29486:31) 在 MapSubscriber.Subscriber._error (E:\xampp\htdocs\havemybooks\ dist\server.js:20931:26)

更新:

我发现罪魁祸首是具有内联的插件/*# sourceMappingURL=swiper.component.css.map */ 所以是否有 webpack 配置来替换已经存在的内联源映射。

我尝试--devtool false使用 webpack 但没有成功

javascript server-side-rendering angular-universal angular

4
推荐指数
1
解决办法
2618
查看次数

如何隐藏网络选项卡中的数据?

在我的 angular 应用程序中,如果我转到开发工具网络选项卡,我将能够看到来自后端的响应和请求。有谁知道如何隐藏或屏蔽这些数据,如果我进行服务器端渲染,这可能吗?

javascript web-frontend node.js server-side-rendering angular

4
推荐指数
1
解决办法
8036
查看次数

没想到服务器 HTML 在 &lt;main&gt; 中包含一个 &lt;div&gt;

我在一个使用以下项目的项目中工作:

  • 反应/反应-dom@16.9.0
  • @loadable/组件
  • 样式组件
  • 反应路由器dom

该应用程序呈现服务器端和客户端。

我正在使用@loadable/component这种方式动态代码拆分。

路由器.tsx

import * as React from 'react'
import loadable from '@loadable/component'
import { Route, Switch } from 'react-router-dom'

const NotFound = loadable(() =>
  import('../components/NotFound/NotFound' /* webpackChunkName: "notfound" */)
)

const routes = (
  <Switch>
    <Route component={NotFound} />
  </Switch>
)

export default routes
Run Code Online (Sandbox Code Playgroud)

加载页面时,此错误出现在控制台上,页面似乎闪烁了一秒钟。

react-dom.development.js:546 Warning: Did not expect server HTML to contain a <div> in <main>.
Run Code Online (Sandbox Code Playgroud)

当我检查双方(服务器/客户端)的输出时,它们是相同的

当我@loadable/component像下面那样删除时,它可以工作并且错误消失了。

路由器无负载.tsx

import * as React …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs server-side-rendering react-router-dom loadable-component

4
推荐指数
1
解决办法
4878
查看次数

在 React 服务器端渲染时未定义 CSS-Module 类

我没有将 Webpack 配置用于 React SSR。相反,这是我的配置:

require("@babel/register")({
  presets: ["@babel/preset-env", "@babel/preset-flow", "@babel/preset-react"],
  plugins: [
    "@babel/plugin-transform-runtime",
    "@babel/plugin-proposal-class-properties",
    "babel-plugin-dynamic-import-node",
    "@babel/plugin-transform-modules-commonjs",    
    [
      "module-resolver",
      {
        root: ["./src"]
      }
    ]
  ]
});

require("ignore-styles");

module.exports = require("./server.js");
Run Code Online (Sandbox Code Playgroud)

问题是 css 类在呈现的 html 中未定义。我怎样才能解决这个问题?

reactjs css-modules server-side-rendering babel-register

4
推荐指数
1
解决办法
767
查看次数

Angular 9 SSR Build Serve 错误——错误参考错误:文档未定义

错误参考错误:文档未定义

import { readFileSync } from 'fs';
const domino = require('domino');  // import the library `domino`
const DIST_FOLDER = join(process.cwd(), 'dist/browser');
const template = readFileSync(join(DIST_FOLDER, 'index.html')).toString(); // use `index.html` as template
const win = domino.createWindow(template); // create object Window
global['window'] = win;
global['Event'] = win.Event;               // assign the `win.Event` to prop `Event`
global['document'] = win.document;
Run Code Online (Sandbox Code Playgroud)

即使在 Server.ts 中添加这个修复问题但在性能 TTFB 时间太高。任何有解决方案...?

server-side-rendering angular-universal angular angular9

4
推荐指数
2
解决办法
3894
查看次数

无法在 Next 中传递道具

我正在使用 Next Js (React SSR) 制作服务器端渲染应用程序。

Index.js(简单地调用index中的另一个组件Layout)

import Layout from "./layout";
import React from "react";

class Home extends React.Component {
  render() {
    return (
      <div>
        <Layout />
      </div>
    );
  }
}

export default Home;
Run Code Online (Sandbox Code Playgroud)

布局.js

import React from "react";
import Product from "./product";

class Layout extends React.Component {
  static async getInitialProps() {
    const res = await fetch("https://api.github.com/repos/developit/preact");
    console.log(res);
    const json = await res.json();
    return { stars: json.stargazers_count };
  }

  componentDidMount() {
    if (localStorage.getItem("userLoggedIn")) {
      //Get products details for logged …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs server-side-rendering next.js

4
推荐指数
1
解决办法
3407
查看次数