之前我在研究Next.js博客时,发现它们很多缺少一个作为博客的基本的东西:评论,就算有,也是Gistus这类依赖于GitHub的评论系统,而在国内还是尽量选择一个无需登录的评论系统,于是我选择了Waline作为评论系统,在引入过程中遇到了一些坑,不过最后还是引入完成了。
模板选择
我选择了Netlify的一个Next.js博客模板,虽然简朴,但是可以作为试验的一个地方。
模板Github仓库地址:
https://github.com/netlify-templates/nextjs-blog-theme
引入Waline
首先我们需要以包形式安装Waline。
npm i -D @waline/client
然后在博客根目录下,我们找到components
文件夹,在里面新建一个JS组件,比如Comment.js
。
然后在Comment.js
中加入以下代码
import { useEffect } from 'react';
import { init } from '@waline/client';
import '@waline/client/dist/waline.css';
const WalineComment = () => {
useEffect(() => {
init({
el: '#waline',
serverURL: 'https://你的Waline后端地址',
// 此处可以配置更多配置,参考Waline官方文档...
});
}, []);
return <div id="waline" />;
};
export default WalineComment;
这样我们就建立了一个Js评论组件。
引入页面
我们打开博客文件根目录,找到pages/posts/[slug].js
这个文件,这个React组件负责渲染文章页面。
接下来在页头加入
import WalineComment from '../../components/Comment';
然后我们在需要加入Waline评论系统的地方引入容器,比如我是在这里加入代码(该文件约59至60行)
</header>
<main>
<article className="prose dark:prose-dark">
<MDXRemote {...source} components={components} />
</article>
//引入Waline评论系统
<WalineComment />
<div id="waline"></div>
</main>
<div className="grid md:grid-cols-2 lg:-mx-24 mt-12">
现在我们输入命令启动开发服务器查看效果
npm run dev
效果图(确保正确填写了Waline后端地址):