首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预热重新加载/重建SSR

预热重新加载/重建SSR
EN

Stack Overflow用户
提问于 2020-09-30 01:24:33
回答 1查看 537关注 0票数 1

我正在尝试将自动浏览器刷新添加到我的preact ssr构建的开发环境中。

package.json

代码语言:javascript
复制
 "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start:client": "webpack -w",
    "start:server": "babel-node server.js",
    "dev": "yarn run start:client & yarn run start:server"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "@babel/cli": "^7.11.6",
    "@babel/core": "^7.11.6",
    "@babel/node": "^7.10.5",
    "@babel/preset-env": "^7.11.5",
    "babel-loader": "^8.1.0",
    "babel-plugin-transform-react-jsx": "^6.24.1",
    "webpack": "^4.44.2",
    "webpack-cli": "^3.3.12"
  },
  "dependencies": {
    "express": "^4.17.1",
    "preact": "^10.5.2",
    "preact-render-to-string": "^5.1.10",
    "preact-router": "^3.2.1"
  }

webpack.config.js

代码语言:javascript
复制
const path = require("path");

module.exports = {
    entry: "./src/index.js",
    output: {
        path: path.join(__dirname, "dist"),
        filename: "app.js"
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                use: {
                    loader: "babel-loader",
                    options: {
                        presets: ['@babel/preset-env']
                    }
                }
            }
        ]
    },
    mode: 'development'
};

server.js

代码语言:javascript
复制
const express = require('express');
const path = require('path');
const render = require('preact-render-to-string');
const { h } = require('preact');

const { App } = require('./src/App');


const app = express();

const HTMLShell = (html) => `
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title>preact ssr</title>
    </head>
    <body>
        <div id="app">${html}</div>
        <script src="./app.js"></script>
    </body>
</html>
`;

app.use(express.static(path.join(__dirname, 'dist')));

app.get('*', (req, res) => {
    const html = render(<App />);

    res.send(HTMLShell(html));
});

app.listen(3001);

当我运行yarn dev时,webpack正在正确地监视任何更改和重建。我必须手动刷新浏览器才能看到效果,有没有自动化的方法?

EN

回答 1

Stack Overflow用户

发布于 2020-10-09 05:39:24

看起来您并没有将webpack-dev-server作为此项目的一部分,它负责在发生更改时处理浏览器的实时重新加载。首先将其添加到您的项目中:

代码语言:javascript
复制
yarn add webpack-dev-server --dev

然后,将package.json中的当前scripts替换为以下内容:

代码语言:javascript
复制
"scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start:client": "webpack-dev-server",
    "start:server": "babel-node server.js",
    "dev": "yarn run start:client & yarn run start:server"
  },

运行yarn dev应该会让您在进行更改后重新加载并重新编译。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64124636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档