마크다운 파일의 모든 단어 세기 ~ Astro
9733 단어 webdevastromarkdownprogramming
이전 Astro 기사를 팔로우했다면 reading time for an article 을 가져오는 함수를 이미 작성했습니다.
위 기사에서 설명한 방법은 기사당 단어 수를 사용하여 대략적인 읽기 시간을 검색했습니다.
지금까지는 꽤 정확했습니다.
이 방법은 공백을 기반으로 문자열을 제거하며 이는 CLI 스크립트에서 본 것과 다를 수 있습니다. 이 방법은 HTML 태그 내부의 모든 항목도 계산하기 때문입니다. (코드 블록 등)
읽기 시간 수정
현재 읽기 시간 함수는 읽기 시간이 얼마인지 알려주는 문자열만 반환합니다.
배열을 반환할 수 있도록 이 함수를 수정해 보겠습니다.
const WORDS_PER_MINUTE = 200;
export function getReadingTime(content) {
if (!content) return;
const clean = content.replace(/<\/?[^>]+(>|$)/g, '');
const numberOfWords = clean.split(/\s/g).length;
const amount = Math.ceil(numberOfWords / WORDS_PER_MINUTE);
return [numberOfWords, `${amount} min read`];
}
이 함수는 콘텐츠의 단어 수와 예상 읽기 시간을 반환합니다.
이 정보를 사용하여 두 값을 모두 포함하도록 이 함수를 호출하는
lib/posts.js
함수를 변경할 수 있습니다.async function load() {
const fetchedPosts = import.meta.globEager('../pages/posts/*.md');
const mappedPosts = Object.keys(fetchedPosts).map((key) => {
const post = fetchedPosts[key];
const url = key.replace('../pages/', '/').replace('.md', '/');
const item = { ...post.frontmatter, url };
const [numberOfWords, readingTime] = getReadingTime(post.metadata.html);
item.numberOfWords = numberOfWords;
item.readingTime = readingTime;
return item;
});
return mappedPosts;
}
보시다시피 단어 수와 읽기 시간을 포함하도록 기능을 변경했습니다.
Note: I created the posts lib function to load all posts in Astro faster.
이제 모든 것이 준비되었으므로 총 단어 수를 표시해 보겠습니다.
내 웹 사이트에서 나는
Stats.astro
이라는 구성 요소를 사용합니다. 총 구독자 수와 총 게시물 수에 대한 통계를 보여줍니다.이 예에서는 거기에 전체 단어를 추가하겠습니다.
이 함수가 모든 게시물을 로드하면 거기에 호출할 새 변수
totalWords
를 추가할 수 있습니다. 이 함수는 reduce method을 사용하여 모든 게시물의 총 단어를 요약합니다.const totalWords = allPosts.reduce(
(total, post) => (total += post.numberOfWords),
0
);
그런 다음 통계에서 이 값을 렌더링할 수 있습니다.
<li class="flex items-center">
<svg
xmlns="http://www.w3.org/2000/svg"
fill="currentColor"
class="w-5 h-5 mr-1"
viewBox="0 0 32 32"
fill="currentColor"
>
<path
d="M 3 6 L 3 25 L 13 25 C 14.101563 25 15 25.898438 15 27 L 17 27 C 17 25.898438 17.898438 25 19 25 L 29 25 L 29 6 L 19 6 C 17.808594 6 16.734375 6.527344 16 7.359375 C 15.265625 6.527344 14.191406 6 13 6 Z M 5 8 L 13 8 C 14.101563 8 15 8.898438 15 10 L 17 10 C 17 8.898438 17.898438 8 19 8 L 27 8 L 27 23 L 19 23 C 17.808594 23 16.734375 23.527344 16 24.359375 C 15.265625 23.527344 14.191406 23 13 23 L 5 23 Z M 15 12 L 15 14 L 17 14 L 17 12 Z M 15 16 L 15 18 L 17 18 L 17 16 Z M 15 20 L 15 22 L 17 22 L 17 20 Z"
></path></svg
>{totalWords} words written
</li>
이제 지금까지 작성한 총 단어 수가 표시됩니다!
이 웹사이트는 오픈 소스이므로 GitHub에서 전체 코드를 찾을 수도 있습니다.
읽어주셔서 감사합니다. 연결합시다!
제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나
Reference
이 문제에 관하여(마크다운 파일의 모든 단어 세기 ~ Astro), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/dailydevtips1/counting-all-words-across-markdown-files-astro-4m3p텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)