From bd6f24c286615e32d14dbb23ecc8f86eea869063 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sat, 24 Feb 2024 17:33:35 +0800 Subject: [PATCH] :sparkles: Posts --- app/page.tsx | 2 +- app/posts/[id]/page.tsx | 39 +++++++++++++++++++++++++ app/posts/layout.tsx | 14 +++++++++ app/posts/page.tsx | 40 ++++++++++++++++++++++++++ bun.lockb | Bin 169951 -> 248275 bytes components/AppShell.tsx | 7 +++-- components/NavigationDrawer.tsx | 7 ++--- components/posts/PostContent.tsx | 7 +++++ content/posts.ts | 47 +++++++++++++++++++++++++++++++ content/posts/initial.md | 14 +++++++++ next.config.mjs | 14 +++++++-- package.json | 15 ++++++++-- tailwind.config.ts | 11 +------- 13 files changed, 195 insertions(+), 22 deletions(-) create mode 100644 app/posts/[id]/page.tsx create mode 100644 app/posts/layout.tsx create mode 100644 app/posts/page.tsx create mode 100644 components/posts/PostContent.tsx create mode 100644 content/posts.ts create mode 100644 content/posts/initial.md diff --git a/app/page.tsx b/app/page.tsx index 389711e..0da7615 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -34,7 +34,7 @@ export default function Home() { - Logo + Logo diff --git a/app/posts/[id]/page.tsx b/app/posts/[id]/page.tsx new file mode 100644 index 0000000..0f0c653 --- /dev/null +++ b/app/posts/[id]/page.tsx @@ -0,0 +1,39 @@ +import { Box, Card, CardContent, CardMedia, Divider, Typography } from "@mui/material"; +import { getSinglePost } from "@/content/posts"; +import Image from "next/image"; +import PostContent from "@/components/posts/PostContent"; + +export default function PostDetailPage({ params }: { params: { id: string } }) { + const post = getSinglePost(params.id); + + return ( + + { + post.thumbnail && + + {post.title} + + } + + + + + {post.title} + + + {post.description ?? "No description yet."} + + + + + + + + + ); +} \ No newline at end of file diff --git a/app/posts/layout.tsx b/app/posts/layout.tsx new file mode 100644 index 0000000..93ce1ed --- /dev/null +++ b/app/posts/layout.tsx @@ -0,0 +1,14 @@ +import { Box, Container } from "@mui/material"; +import { ReactNode } from "react"; + +export default function PostLayout({children}: Readonly<{ + children: ReactNode; +}>) { + return ( + + + {children} + + + ) +} \ No newline at end of file diff --git a/app/posts/page.tsx b/app/posts/page.tsx new file mode 100644 index 0000000..686dea8 --- /dev/null +++ b/app/posts/page.tsx @@ -0,0 +1,40 @@ +import { Button, Card, CardActions, CardContent, CardMedia, Typography } from "@mui/material"; +import { getSortedPosts } from "@/content/posts"; +import Image from "next/image"; +import Link from "next/link"; + +export default function PostList() { + const posts = getSortedPosts(); + + return ( + posts.map((post) => ( + + { + post.thumbnail && + + {post.title} + + } + + + + {post.title} + + + {post.description ?? "No description yet."} + + + + + + + + + )) + ); +} \ No newline at end of file diff --git a/bun.lockb b/bun.lockb index 8e7f92ef58875fabfc3a327c9f1f35d8fbbfae1b..3e9a2eba374bcc9efd0ab6b76fb37793e3252c46 100755 GIT binary patch delta 83719 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 UOYVTM?or+f9!GxCKl9lC0XQC9zyJUM delta 34494 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 diff --git a/components/AppShell.tsx b/components/AppShell.tsx index f5871c0..3c033ba 100644 --- a/components/AppShell.tsx +++ b/components/AppShell.tsx @@ -15,6 +15,7 @@ import { SITE_NAME } from "@/app/consts"; import NavigationDrawer, { DRAWER_WIDTH, AppNavigationHeader, isMobileQuery } from "@/components/NavigationDrawer"; import MenuIcon from "@mui/icons-material/Menu"; import Image from "next/image"; +import Link from "next/link"; function HideOnScroll(props: { window?: () => Window; @@ -105,11 +106,13 @@ export default function AppShell({ children }: { aria-label="menu" sx={{ ml: isMobile ? 0.5 : 0, mr: 2 }} > - Logo + Logo - {SITE_NAME} + + {SITE_NAME} + , title: "首页", link: "/" } + { icon: , title: "首页", link: "/" }, + { icon: , title: "新闻", link: "/posts" }, ]; export const AppNavigationHeader = styled("div")(({ theme }) => ({ diff --git a/components/posts/PostContent.tsx b/components/posts/PostContent.tsx new file mode 100644 index 0000000..9aed9e3 --- /dev/null +++ b/components/posts/PostContent.tsx @@ -0,0 +1,7 @@ +"use client"; + +import MuiMarkdown from "mui-markdown"; + +export default function PostContent({ content }: { content: string }) { + return {content}; +} \ No newline at end of file diff --git a/content/posts.ts b/content/posts.ts new file mode 100644 index 0000000..96d7723 --- /dev/null +++ b/content/posts.ts @@ -0,0 +1,47 @@ +import fs from "fs"; +import path from "path"; +import matter from "gray-matter"; + +const postsDirectory = path.join(process.cwd(), "content", "posts"); + +export interface Post { + id: string; + title: string; + thumbnail?: string; + description?: string; + content?: string; + date: Date; +} + +export function getSortedPosts() { + const fileNames = fs.readdirSync(postsDirectory); + const allPostsData: Post[] = fileNames.map((fileName) => { + const id = fileName.replace(/\.md$/, ""); + + const fullPath = path.join(postsDirectory, fileName); + const fileContents = fs.readFileSync(fullPath, "utf8"); + + const matterResult = matter(fileContents); + + return { + id, + ...matterResult.data + } as Post; + }); + + return allPostsData.sort((a, b) => { + return a.date < b.date ? 1 : -1; + }); +} + +export function getSinglePost(id: string) { + const fullPath = path.join(postsDirectory, id + ".md"); + const fileContents = fs.readFileSync(fullPath, "utf8"); + const matterResult = matter(fileContents); + + return { + id, + content: matterResult.content, + ...matterResult.data, + } as Post; +} \ No newline at end of file diff --git a/content/posts/initial.md b/content/posts/initial.md new file mode 100644 index 0000000..f3022f1 --- /dev/null +++ b/content/posts/initial.md @@ -0,0 +1,14 @@ +--- +thumbnail: 'https://images.unsplash.com/photo-1707344088547-3cf7cea5ca49?q=80&w=2970&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDF8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D' +title: 'Two Forms of Pre-rendering' +date: '2020-01-01' +--- + +# Woah! + +Next.js has two forms of pre-rendering: **Static Generation** and **Server-side Rendering**. The difference is in **when** it generates the HTML for a page. + +- **Static Generation** is the pre-rendering method that generates the HTML at **build time**. The pre-rendered HTML is then _reused_ on each request. +- **Server-side Rendering** is the pre-rendering method that generates the HTML on **each request**. + +Importantly, Next.js lets you **choose** which pre-rendering form to use for each page. You can create a "hybrid" Next.js app by using Static Generation for most pages and using Server-side Rendering for others. \ No newline at end of file diff --git a/next.config.mjs b/next.config.mjs index 4678774..51bb7ad 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,4 +1,14 @@ -/** @type {import('next').NextConfig} */ -const nextConfig = {}; +/** @type {import("next").NextConfig} */ +const nextConfig = { + pageExtensions: ["js", "jsx", "mdx", "ts", "tsx"], + images: { + remotePatterns: [ + { + protocol: "https", + hostname: "**", + }, + ], + } +}; export default nextConfig; diff --git a/package.json b/package.json index a33fa81..ef9f884 100644 --- a/package.json +++ b/package.json @@ -13,23 +13,32 @@ "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", "@fontsource/roboto": "^5.0.8", + "@mdx-js/loader": "^3.0.1", + "@mdx-js/react": "^3.0.1", "@mui/icons-material": "^5.15.10", "@mui/material": "^5.15.10", "@mui/material-nextjs": "^5.15.11", + "@next/mdx": "^14.1.0", + "@types/mdx": "^2.0.11", + "gray-matter": "^4.0.3", + "html-react-parser": "^5.1.7", + "marked": "^12.0.0", + "mui-markdown": "^1.1.13", "next": "14.1.0", "react": "^18", "react-dom": "^18" }, "devDependencies": { - "typescript": "^5", + "@tailwindcss/typography": "^0.5.10", "@types/node": "^20", "@types/react": "^18", "@types/react-dom": "^18", "autoprefixer": "^10.0.1", + "eslint": "^8", + "eslint-config-next": "14.1.0", "postcss": "^8", "tailwindcss": "^3.3.0", - "eslint": "^8", - "eslint-config-next": "14.1.0" + "typescript": "^5" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0", diff --git a/tailwind.config.ts b/tailwind.config.ts index 7e4bd91..fc1a762 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -6,15 +6,6 @@ const config: Config = { "./components/**/*.{js,ts,jsx,tsx,mdx}", "./app/**/*.{js,ts,jsx,tsx,mdx}", ], - theme: { - extend: { - backgroundImage: { - "gradient-radial": "radial-gradient(var(--tw-gradient-stops))", - "gradient-conic": - "conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))", - }, - }, - }, - plugins: [], + plugins: [require("@tailwindcss/typography")], }; export default config;