{"id":1749,"date":"2021-09-07T20:50:47","date_gmt":"2021-09-07T11:50:47","guid":{"rendered":"http:\/\/www.agile-software.site\/?p=1749"},"modified":"2021-09-11T06:02:27","modified_gmt":"2021-09-10T21:02:27","slug":"next-js%e3%83%9d%e3%83%bc%e3%83%88%e3%83%95%e3%82%a9%e3%83%aa%e3%82%aa%e3%82%b5%e3%82%a4%e3%83%88","status":"publish","type":"post","link":"https:\/\/agile-software.net\/?p=1749","title":{"rendered":"Next.js[\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\u30b5\u30a4\u30c8]"},"content":{"rendered":"\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code><\/code><\/pre><\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/05\/09\/next-js\/\n\n\n\n<h2 class=\"wp-block-heading\"><\/h2>\n\n\n\n<p>raw-loader\u306f\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u306e\u8aad\u307f\u8fbc\u307f\u3002<br>gray-matter\u306ffrontmatter\u90e8\u5206\u306e\u51e6\u7406<br>react-markdown\u306fReact\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u306e\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u51e6\u7406<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>npm install raw-loader gray-matter react-markdown<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">blog.js<\/h2>\n\n\n\n<p>\u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u3093\u3067props\u306e\u4e2d\u306b\u7f6e\u304f<br>getStaticProps\u306e\u4e2d\u306e\u30c7\u30fc\u30bf\u306fprops\u306e{}\u306b\u5165\u308c\u308b\u3053\u3068\u3067\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3078\u6e21\u305b\u308b\u3002<br>\u3053\u3053\u3067\u306ftestText\u3092props\u306b\u6e21\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"blog.js\"><code>const blog = (props) =&gt; {\n    return (\n        &lt;div&gt;\n            \n        &lt;\/div&gt;\n    )\n}\n\nexport default blog\n\nexport async function getStaticProps(){\n    const testText = &quot;Next.js\u30dd\u30fc\u30c8\u30d5\u30a9\u30ea\u30aa\u30b5\u30a4\u30c8&quot;\n    return {\n        props:{\n            test:testText\n},\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p>\u5148\u307b\u3069\u66f8\u3044\u305f\u30b3\u30fc\u30c9\u3092\u66f8\u304d\u63db\u3048\u307e\u3059\u3002<br>require.context\u306f\u30d5\u30a1\u30a4\u30eb\u3092\u8aad\u307f\u8fbc\u3080\u305f\u3081\u306e\u3082\u306e\u3002<br>\/\\.md$\/\u3067\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u306e\u62e1\u5f35\u5b50.md\u306e\u8aad\u307f\u8fbc\u307f\u3092\u6307\u5b9a\u3059\u308b\u3053\u3068\u3067\u4f5c\u6210\u3057\u305fmd\u30d5\u30a1\u30a4\u30eb\u3092const\u00a0blog\u00a0=\u00a0((context)=>{\u3000\u306econtext\u306b\u683c\u7d0d\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u3066\u3044\u307e\u3059\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>import matter from &quot;gray-matter&quot;\n\nconst blog = (props) =&gt; {\n    return (\n        &lt;div&gt;\n            \n        &lt;\/div&gt;\n    )\n}\n\nexport default blog\n\nexport async function getStaticProps(){\n    const blog = ((context)=&gt;{\n        const keys = context.keys()\n        const values = keys.map(context)\n        console.log(values)\n\n    }\n    )(require.context(&#39;..\/data&#39;,true,\/\\.md$\/))\n    return {\n        props:{\n            blogs:blogs\n        },\n    }\n}<\/code><\/pre><\/div>\n\n\n\n<p>values\u306e\u4e2d\u306f\u30c7\u30fc\u30bf\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002<br>keys\u306e\u4e2d\u306f\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u30d5\u30a1\u30a4\u30eb\u306e\u30d5\u30a1\u30a4\u30eb\u540d\u304c\u5165\u3063\u3066\u3044\u307e\u3059\u3002 <\/p>\n\n\n\n<p>\u4ee5\u4e0b\u306e\u30b3\u30fc\u30c9\u3092\u4f55\u884c\u76ee\u306e\u5f8c\u306b\u8ffd\u52a0\u3057\u307e\u3059\u3002<br>\u914d\u5217\u306e\u5f62\u3067\u683c\u7d0d\u3055\u308c\u3066\u3044\u308bkeys\u3092\u5206\u5272\u3057\u3001<\/p>\n\n\n\n<p>\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u540d\u304b\u3089slug\u3092\u751f\u6210\u3002first-blog.md\u306f\/first-blog\u306e\u5f62\u3078\u3002<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>        const data = keys.map((key,index)=&gt;{\n            let slug=key.replace(\/^.*[\\\\\\\/]\/,&quot;).slice(0,-3)\n            const value = values[index]\n            const document = matter(value.default)\n            return{\n                frontmatter:document.data,\n                slug:slug\n            }\n        })\n        rerurn data<\/code><\/pre><\/div>\n\n\n\n<div class=\"wp-block-jin-gb-block-box-with-headline kaisetsu-box1\"><div class=\"kaisetsu-box1-title\">slug<\/div>\n<p>http:\/\/localhost:3000\/blog\u306e\/blog\u306b\u3042\u305f\u308b\u90e8\u5206\u304cslug\u3067\u3059\u3002<\/p>\n<\/div>\n\n\n\nhttp:\/\/www.agile-software.site\/2021\/08\/01\/nextjs_tailwind_hp\/\n\n\n\n<p>\u30bf\u30a4\u30c8\u30eb\u3001\u65e5\u4ed8\u3001\u30ea\u30f3\u30af\u304c\u8868\u793a\u3055\u308c\u308b\u3088\u3046\u306b\u3059\u308b<\/p>\n\n\n\n<p>props\u306eblogs\u306b\u5bfe\u3057\u3066map\u3092\u4f7f\u3063\u3066<br>props.blogs.map((blog,index)=><\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\"><code>const blog = (props) =&gt; {\n    return (\n        &lt;div&gt;\n            &lt;h1&gt;Blog&lt;\/h1&gt;\n            {props.blogs.map((blog,index)=&gt;\n            &lt;div key={index}&gt;\n                &lt;h3&gt;{blog.frontmatter.title}&lt;\/h3&gt;\n                &lt;p&gt;{blog.frontmatter.date}&lt;\/p&gt;\n                    &lt;Link href={`\/blog\/${blog.slug}`}&gt;&lt;a&gt;Read More&lt;\/a&gt;&lt;\/Link&gt;\n            &lt;\/div&gt;    \n            )}\n            \n        &lt;\/div&gt;\n    )\n}\n\nexport default blog<\/code><\/pre><\/div>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>next.config.js<\/strong><\/h2>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"next.config.js\"><code>module.exports = {\n    webpack: function (config) {\n        config.module.rules.push({\n            test: \/\\.md$\/,\n            use: &quot;raw-loader&quot;,\n        })\n        return config\n    },\n}<\/code><\/pre><\/div>\n\n\n\n<p>fallback\u3092false\u3068\u3059\u308b\u3053\u3068\u3067paths\u4ee5\u5916\u306eslug\u306b\u5bfe\u3057\u3066404\u30da\u30fc\u30b8\u3092\u8868\u793a\u3057\u307e\u3059\u3002<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u30b9\u30bf\u30a4\u30eb\u306e\u9069\u7528<\/h2>\n\n\n\n<p>CSS Modules<br>index.module.css\u3092\u4f5c\u6210\u3057<\/p>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"index.module.css\"><code>.h1Text{\n    color:red;\n    letter-spacing:20px;\n}<\/code><\/pre><\/div>\n\n\n\n<div class=\"hcb_wrap\"><pre class=\"prism line-numbers lang-plain\" data-file=\"index.js\"><code>&lt;h1 className={style.h1Text}&gt;\u3053\u3093\u306b\u3061\u306f&lt;\/h1&gt;<\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>raw-loader\u306f\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u306e\u8aad\u307f\u8fbc\u307f\u3002gray-matter\u306ffrontmatter\u90e8\u5206\u306e\u51e6\u7406react-markdown\u306fReact\u30b3\u30f3\u30dd\u30fc\u30cd\u30f3\u30c8\u3067\u306e\u30de\u30fc\u30af\u30c0\u30a6\u30f3\u51e6\u7406 blog.js \u30c7\u30fc\u30bf\u3092\u53d6\u308a\u8fbc\u3093\u3067prop<\/p>\n","protected":false},"author":1,"featured_media":1753,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jin_ogp_image_url":"","_jin_last_featured_id":0,"footnotes":""},"categories":[40],"tags":[],"class_list":["post-1749","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-next-js"],"_links":{"self":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1749","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1749"}],"version-history":[{"count":4,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1749\/revisions"}],"predecessor-version":[{"id":1773,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/posts\/1749\/revisions\/1773"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=\/wp\/v2\/media\/1753"}],"wp:attachment":[{"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1749"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1749"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/agile-software.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1749"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}