Nodejs 输出静态页面
Nodejs 输出静态页面
不懂 seo,但是推广说每个详情页这种都想输出成静态页面,为了收录多
想了想,感觉用 node+模板搭个中间层是不是就能搞定?生成了不光展示,让直接输出到固定目录?
没实践过,只是想了想,有没有实践过的兄弟出来聊聊
如果我没有理解地错的话,python + frozen flask 就可以实现你说的功能,flask 定义路由,使用 jinja2 模板,直接生成静态文件,文档见:
https://pythonhosted.org/Frozen-Flask/
好陌生, 不过可以研究下。
可以用 hexo,我也写过一个 https://github.com/xcatliu/pagic
nuxt ?
就这个了
谢谢上面几个大佬指点
express 支持服务端渲染,只是看你选什么模板引擎而已(pug,handlebars,ejs…还有好多),koa 还有其他几个框架可能需要引入三方包才支持.
这个我倒是知道,就是对 seo 这块不太了解到底怎么样才是他想要的。 听 5 楼的意思只要服务端渲染就可以了 那就简化了我的问题~ 谢啦
我可能说的有点乱毕竟小菜鸟~~~
一般来说,伴随 SEO 的问题是要求页面再大量请求下也能访问到,这个时候需要 CDN,你不生成静态页,就靠服务端渲染,服务端渲染说白了就是服务器吐出全部的 html 内容嘛,这个性能是瓶颈,能顶住?
我以为会自己进缓存…难道五楼的意思不是吗…
一张口就来性能、CDN。。。
我只是根据楼主的提问(比较小白,看起来网站也是起步阶段)提出具体的建议。从技术方案上讲,服务端渲染的页面相对来说更简单一点,退一步讲服务端渲染与生成静态页(把服务器端渲染的内容保存为文件)也并不冲突。
前一段时间我就吐槽过现在的程序员为了性能不惜代价,大炮打蚊子的情况数不胜数。技术谁都能学会,但能把技术用得恰到好处的并不多。
在 Node.js 中输出静态页面通常涉及设置一个简单的 HTTP 服务器,并将 HTML 文件内容发送到客户端。以下是一个使用 Node.js 内置模块 http
和 fs
(文件系统)来输出静态页面的示例代码:
const http = require('http');
const fs = require('fs');
const path = require('path');
const server = http.createServer((req, res) => {
// 假设静态页面存放在 ./public 目录下
const rootDir = './public';
// 解析请求的 URL 路径
let filePath = '.' + req.url;
if (filePath == './') {
filePath = './public/index.html';
}
// 将相对路径转换为绝对路径
const absPath = path.join(rootDir, path.relative('.', filePath));
// 读取文件内容并返回给客户端
fs.readFile(absPath, (err, data) => {
if (err) {
res.writeHead(404);
res.end('File not found');
} else {
const extname = path.extname(absPath);
let contentType = 'text/html';
switch (extname) {
case '.js':
contentType = 'text/javascript';
break;
case '.css':
contentType = 'text/css';
break;
// 可以根据需要添加更多的 MIME 类型
}
res.writeHead(200, { 'Content-Type': contentType });
res.end(data);
}
});
});
server.listen(3000, () => {
console.log('Server is listening on port 3000');
});
这个示例中,服务器会监听端口 3000,并将 ./public
目录下的文件作为静态资源提供给客户端。你可以根据需要修改代码,以支持更多的文件类型和更复杂的路由逻辑。