我创建了两个独立的分离成束,一个是我的服务器和一个我的客户。但是客户端包仍然没有得到通过,当有人访问根路线浏览器下载。
我跟快递到这里治疗public/
文件夹作为免费提供的公共目录index.js
内:
app.use(express.static('public'));
app.get('/', (req, res) => {
const content = renderToString(<Home />);
我还添加了与ES6模板字符串,像这样的HTML片段:
import express from 'express';
import React from 'react';
import { renderToString } from 'react-dom/server';
import Home from './client/components/Home';
const app = express();
app.use(express.static('public'));
app.get('/', (req, res) => {
const content = renderToString(<Home />);
const html = `<html><head><body><div>${content}</div><script src="bundle.js"></script></body></head></html>`;
res.send(content);
});
这个想法是当用户会从这个端点的响应,他们将看到来自<Home />
组件的内容,而且还告诉用户的浏览器返回到我的服务器,并下载bundle.js
文件。
人们期望,我刷新页面,并即时检索本地主机,并为bundle.js
文件的请求,看到我在Home.js
成分添加的控制台日志:
import React from 'react';
const Home = () => {
return (
<div>
<div>I am an OK home component</div>
<button onClick={() => console.log('Howdy!')}>Press me!</button>
</div>
);
};
export default Home;
我刷新浏览器,并没有看到控制台日志,也不在网络选项卡中bundle.js
文件。
这里是什么让?
所以,我创建的变量html
在那里我存储从模板字符串在它与bundle.js文件的HTML,但当时我并不在任何地方使用这个变量。
我曾与res.send(content);
更换res.send(html);
。