计算你的博客的“阅读时间”⏱🦉

2025-06-07

计算你的博客的“阅读时间”⏱🦉

您可以订阅我的RSS 源以获取我的最新帖子。


我们可以在标准博客中添加任何可以增强阅读体验的内容吗?

预计阅读时间如何?

我们将如何计算它?

好吧,我们先看看其他人怎么做的!

  • Dev.to会统计每篇文章的字数,然后除以 275(每分钟字数)。结果会向上取整,得出实际阅读分钟数。信息来源:此处
  • Medium会统计每篇文章的字数,然后除以 265(每分钟字数)。他们会对图片进行调整,不管这是什么意思!听起来很有意思,真希望能看到他们的代码!我猜他们也会把这个数字四舍五入。信息来源在这里

我发现这些计算的一个问题是,它们把代码片段当成了普通文本!我怀疑人们读代码的速度能跟普通文本一样!😲⚡

选择一个典型的阅读速度很难,人们针对不同的人群进行了研究,得出了典型的阅读速度。你经常看到的引用是:学习速度为每分钟100到200个词(wpm),理解速度为每分钟200到400个词。基于此,阅读教程所需的时间会比阅读个人账户的时间更长。

我将向您展示如何执行与Dev.to类似的操作,但我会以不同的方式执行以下操作:

  • 使用 250 wpm 作为我的阅读速度;
  • 我会在下拉菜单中显示计算结果。我想知道这个神奇数字的来源,或许你博客的读者也想知道!

阅读时间

您可以在下方的笔中看到紫色的阅读时间。单击它即可显示计算结果。

HTML

<div class="reading-time">
    <details>
        <summary>1 min read</summary>
        <span></span>
    </details>
</div>
Enter fullscreen mode Exit fullscreen mode

<details>元素是一个“手风琴”,隐藏了额外的细节,用户可以根据需要查看或隐藏。

始终显示<summary>,用于显示我们的阅读时间。<span>是默认隐藏的附加详细信息,我们在此处添加计算的详细信息。我们将其包裹在 中,<div>以便于样式设置。

CSS

:root {
  --purple: rgb(115, 0, 209);
}

.reading-time{
  position: relative;
  display: inline-block;
  cursor: pointer;
}

.reading-time details {
  position: absolute;
  background:white;
  z-index: 1;
}

.reading-time summary{
    color:var(--purple);
    font-weight: 600;
}
Enter fullscreen mode Exit fullscreen mode

<div>我们将内容的环绕设置为position:relative,这样我们就可以<details>绝对定位到它,从而将其从正常的页面流中移除。这样做是因为现在当我们点击阅读时间以显示更多详细信息时,它不会扩展尺寸并使其下方的元素进一步向下推。我们将其设置为z-index:1,这样它就会显示在下方内容的上方。

JavaScript

const post = document.getElementById("post");
const readingTimeSummary = document.querySelector(".reading-time summary");
const readingTimeDetails = document.querySelector(".reading-time details span");
const avgWordsPerMin = 250;

setReadingTime();

function setReadingTime(){
    let count = getWordCount();
    let time = Math.ceil(count / avgWordsPerMin);

    readingTimeSummary.innerText = time + " min read";
    readingTimeDetails.innerText = count + " words read at " 
       + avgWordsPerMin + " words per minute.";
}

function getWordCount(){
  return post.innerText.match(/\w+/g).length;
}
Enter fullscreen mode Exit fullscreen mode

我会解释的getWordCount(),其余的应该清楚了。

我们使用正则表达式 (regex)来获取帖子中的所有单词。该函数使用正则表达式搜索帖子match()中的文本,并将所有匹配结果返回到一个数组中。

正则表达式位于两个正斜杠之间,后跟一个“ g ”表示全局搜索。全局搜索会查找所有匹配项,如果省略“ g ”,则只查找第一个匹配项。正则表达式w+会查找一个或多个单词。

返回的数组match()包含每个单词作为元素。因此,数组的大小应该等于单词的数量,我们使用length数组的属性来获取它。

就这些!

读码速度

我找不到任何有关代码典型读取速度的经验信息。

在编程发展的早期,研究人员曾寻找衡量编程效率的方法,他们选择以代码行数作为主要指标。如今,这种方法已不再流行,而是被称为“编程效率悖论”

不过,或许阅读代码行比逐字逐句地阅读更有用,因为编程语法与口语有很大不同。显然,代码的复杂性和所使用的编程语言都会影响阅读时间。关键在于,很难想出一个通用公式来估算理解任何一段代码所需的时间。

如果让我猜测的话,我会说阅读代码可能占据前面讨论的“学习”范围的低端,因为实际上我们正在学习程序的逻辑,而不仅仅是理解叙述。

我将向您展示我博客示例中代码片段的字数统计。您可以自行判断这些简单示例的阅读时间是否合理。

HTML 代码片段

29个字。阅读时间:7秒。

HTML 代码片段的字数统计

CSS 代码片段

174个字。阅读时间:42秒。

css 代码片段的字数统计

JavaScript 代码片段

107个字。阅读时间:26秒。

JavaScript 代码片段的字数统计

最后的话

你在 4 分钟内读完了这篇文章吗?🤔😛

我想写一些比这更复杂的东西来得出一个估计的阅读时间,以更有意义的方式考虑代码。

如果您喜欢这篇文章,请告诉我。

也许接下来,我将谈论如何在您的博客中添加评论。

黑客快乐!👩‍💻👨‍💻🙌

文章来源:https://dev.to/robole/add-the-estimated-reading-time-to-your-blog-do-you-read-code-at-275-words-per-一分钟-3don
PREV
Lighthouse 是一个误导性的性能工具吗?
NEXT
如何修复 CSS Position Sticky 不起作用的问题