【发布时间】:2020-06-27 22:20:09
【问题描述】:
我是网络开发的初学者,我正在开发一个网络应用程序,首先使用 Node.JS 从两个网站(Maitres Restaurateurs 和 Guide Michelin)scrape 餐厅信息,然后开始使用 ExpressJS应用程序。我使用 res.sendFile() 函数显示我的 HTML 页面,然后使用 res.json() 在 HTML 页面中发送 JSON 文件。
首先,这是我的工作目录(一团糟):
src
├server.js
├index.html
├server-side
├bib.js
├jsx
├react.jsx
server.js 代码(我在 listFinal 变量中得到一个 JSON 对象,其中包含我所有的餐厅信息scraped 与两个网站上的 puppeteer。感谢 bib.js):
const express = require('express');
const app = new express();
const bib = require('./server-side/bib');
var listFinal = bib.get();
app.get('/', function (req, res) {
res.sendFile('./index.html', {root: __dirname});
res.send(listFinal);
});
app.listen(8000, function () {
console.log('Example app listening on port 8000!');
});
服务器运行良好。但是我的 HTML 或我的 React 代码都没有工作(我对 React 完全陌生)。我的 HTML 上显示的唯一内容是存储在变量 listFinal 中的巨大 JSON。该列表的长度(或大小)为 50,其结构如下:
[{"name": "Saperlipopette ",
"url": "www.saperlipopette1.fr",
"address": "9 place du Théâtre, Puteaux, 92800, France",
"price_style": "36 - 65 EUR • Cuisine moderne",
"phone": "+33 1 41 37 00 00"},
...]
我的index.html 代码:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Session 3 Work - Axel Joly</title>
<meta name="description" content="Bib gourmand + Maitre restaurateur scrappeur">
<meta name="author" content="Axel Joly">
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>Welcome to the Bib Gourmand and Maitre Restaurateur list (made by Axel Joly):</h1>
<div id="root">
<ul id="list-rest">
</ul>
</div>
<script src="./jsx/react.jsx"></script>
</body>
</html>
还有我的react.jsx 代码:
var React = require('react');
var ReactDOM = require('react-dom');
export class Hello extends React.Component {
render() {
return (
<h1>Welcome to React!!</h1>
);
}
}
ReactDOM.render(<Hello />, document.getElementById('root'));
如前所述,它们都不显示。
当我运行 node server.js 并转到 localhost:8000/ 时,我得到了这个:
如您所见,没有呈现 <h1> 标头,通常都使用 React 和 HTML 显示。另外,我不知道如何在 HTML 中“检索”我的变量 listFinal 以将其呈现为带有 <ul> 和 <li> 标签的 li。
【问题讨论】:
-
这可能是因为您还没有创建 react-app 并且正在尝试使用
jsx文件来运行反应代码您想要做的是通过npx create-react-app client创建一个反应应用程序,其中将包含客户端代码,那么我建议使用concurrently同时运行客户端和服务器端。 (如果您愿意将当前代码放在codesandbox上,我可以为您设置) -
@AbdullahAbid 嗨!感谢您的评论,我尝试了您的第一个建议,但我无法做到。我做了一个github repo,然后是一个codesandbox。这是:codesandbox
-
仅供参考,它是 scraper(和 scrape、scraped、scraping)而不是 scrapper
标签: javascript html node.js reactjs express