首页 > 其他分享 >在Next.js博客中快速引入Waline评论系统

在Next.js博客中快速引入Waline评论系统

时间:2023-09-14 09:57:33浏览次数:40  
标签:waline 博客 Next 评论 引入 js Waline

之前我在研究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后端地址):
效果图

标签:waline,博客,Next,评论,引入,js,Waline
From: https://www.cnblogs.com/onesong/p/nextjs_waline.html

相关文章

  • JS深入学习笔记 - 第一章.构造函数原型与原型链
    1.构造函数和原型 1.1概述在典型的 OOP语言中(如Java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS并没有引入类的概念。在ES6之前,对象不是基于类创建的,而是一种称为构建函数的特殊函数来定义对象和它们的特征。有三种创建对象的方式:对象字面量(constob......
  • 【Vuejs】Date()常用方法
    Date()常用方法vardate=newDate()console.log(date);//FriOct29202114:18:13GMT+0800(中国标准时间)console.log(date.getMonth());//获取月份(0-11,0代表1月,所以在显示当前时间的时候需要date.getMonth()+1)console.log(date.getYear());......
  • Node.js vs. Spring Boot:Hello World 性能对决,谁更快一点?
    前言:SpringBoot在Java生态中备受欢迎,它是一款基于Java构建的轻量级服务端框架,主要用于Web服务。SpringBoot的应用使得创建各类基于Spring的企业级应用变得异常简单。Node.js作为一种基于ChromeV8引擎的JavaScript运行时环境,在服务端上运行JavaScript代码。它以其独......
  • SpringMVC报错:HTTP Status 405 - JSPs only permit GET POST or HEAD
    错误描述如果项目是运行在Tomcat8及以上版本,浏览器发出的PUT请求和DELETE请求可以被页面控制器(Controller)成功接收到,但是返回JSP页面则会报HTTP405的错误提示:"消息JSP只允许GET、POST或HEAD。Jasper还允许OPTIONS"。原因分析原因是Tomcat按照JCP规范(JSP......
  • P5505 [JSOI2011] 分特产
    原题还是二项式反演,主要问题是怎么发现他是这个关系因为我们发现我们钦定\(T,P\subseteqS,|T|=|P|\)时,我们假设里面有一个元素\(x,y\)不相同,则他们会计算两次因此是二项式反演......
  • Node.js child_process spawn All In One
    Node.jschild_processspawnAllInOneNode.js多线程//const{spawn}=require('child_process');const{spawn}=require('node:child_process');//$ls-al/usr等价于constls=spawn('ls',['-lh','/usr�......
  • 七牛云存储____官方js上传(基于pupload插件)
    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getS......
  • 七牛云存储____js打水印加上传图片
    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+"://" +request.getServerName()+":"+......
  • 七牛云存储____七牛js直接上传图片
    <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%><%Stringpath=request.getContextPath();StringbasePath=request.getScheme()+"://"+request.getServerName()+":"+request.getS......
  • JSNeedAttention
    JSAttentionpush返回的是数组增加后的长度!!!对象名可变setFieldsValue({[`bank${index}`]:val});判断是否空对象Object.keys(obj);JSON.stringify(obj)!=="{}";还有$.isEmptyObject(data2);Object.getOwnPropertyNames(data3);//和Object.keys类似关闭标签替......