相信很多人看到上一篇文章大概都嚇壞,甚至打退堂鼓了
心裡開始想:什麼?難道要做SSR是這麼複雜的事情?
其實任何的方式都可以簡單也可以複雜,只是你有沒有選擇對的工具和方法
之前已經有很多人注意到了這點,所以框架的框架也誕生了


SEO全系列文章

📌 如何加強網站的SEO - 基礎篇
📌 如何加強網站的SEO - 進階篇
📌 如何加強網站的SEO - SSR與CSR篇
📌 如何加強網站的SEO - 同構篇
📌 如何加強網站的SEO - 框架篇
📌 如何加強網站的SEO - 資安篇


什麼是框架的框架

大家熟知的框架當然就是React和Vue
我們都知道這兩個都是開發前端網頁很有名的框架
但是有團隊非常熱心的開發了框架的框架,加速和解決大家開發程式所遇到的問題
因此之後就有了Nextjs與Nuxtjs,以下帶大家了解

為什麼需要Nextjs

讓我們來看看官方的這段話

1
Next.js gives you the best developer experience with all the features you need for production: hybrid static & server rendering, TypeScript support, smart bundling, route pre-fetching, and more. No config needed.

Nextjs解決了以往的開發體驗,解決很多開發者時常遇到的問題,當然也包含了SSR的問題。
這邊我也要澄清一點,框架的誕生並非只是為了解決SSR,而是為了解決開發者遇到的種種問題而誕生的。
只是Next能夠節省很多開發SSR的時間和問題,因此通常會是做SSR的首選。

官方另外在網站上列出了很多優點,這些就請各位慢慢看了。

如何使用

根據官方文件的方式
安裝步驟也很簡單

  1. 安裝

    1
    npm install next react react-dom
  2. 設置package.json的開發指令

    1
    2
    3
    4
    5
    "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
    }
  3. 啟動觀看
    輕鬆輸入指令,即可觀看
    使用方式可參考官方寫法:

    1
    2
    3
    dev - Runs next dev which starts Next.js in development mode
    build - Runs next build which builds the application for production usage
    start - Runs next start which starts a Next.js production server

在開發的時候,建議使用dev

撰寫components

根據官方的寫法,資料夾相當於網址的路徑,例如:pages
下面的範例,你可以嘗試放在pages:

1
2
3
4
5
function HomePage() {
return <div>Welcome to Next.js!</div>
}

export default HomePage

之後到localhost即可查看結果
這樣就完成了,非常簡單

路徑

上面提到的資料夾相當於路徑的問題,這邊列出官方文件的介紹

  1. Index routes
    其實跟前端框架開發一樣,在指令的資料夾放index.js即可視為指定路徑的主頁
    1
    2
    3
    4
    The router will automatically route files named index to the root of the directory.

    pages/index.js → /
    pages/blog/index.js → /blog

範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import Link from 'next/link'

function Home() {
return (
<ul>
<li>
<Link href="/">
<a>Home</a>
</Link>
</li>
<li>
<Link href="/about">
<a>About Us</a>
</Link>
</li>
</ul>
)
}

export default Home
  1. Nested routes
    這裡要表示的就是巢狀路徑的概念而已
    1
    2
    3
    4
    The router supports nested files. If you create a nested folder structure files will be automatically routed in the same way still.

    pages/blog/first-post.js → /blog/first-post
    pages/dashboard/settings/username.js → /dashboard/settings/username

範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import Link from 'next/link'

function Home() {
return (
<ul>
<li>
<Link href="/blog/example" as="/blog/hello-world">
<a>To Hello World Blog post</a>
</Link>
</li>
</ul>
)
}

export default Home
  1. Dynamic route segments
    如果你想要用動態路徑,則需要使用方括號的語法來匹配
    1
    2
    3
    4
    5
    To match a dynamic segment you can use the bracket syntax. This allows you to match named parameters.

    pages/blog/[slug].js → /blog/:slug (/blog/hello-world)
    pages/[username]/settings.js → /:username/settings (/foo/settings)
    pages/post/[...all].js → /post/* (/post/2020/id/title)

範例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import Link from 'next/link'

function Home() {
return (
<ul>
<li>
<Link href="/blog/[slug]" as="/blog/hello-world">
<a>To Hello World Blog post</a>
</Link>
</li>
</ul>
)
}

export default Home

那麼SSR呢?

在開發Nextjs的同時,你已經在撰寫Server-side的程式碼了,所以不用擔心寫的程式還需要弄什麼Webpack, 套件…有的沒的東西
你只需要專注在開發上,即可完成你所需要的程式。

總結

將工具導入到專案上,也許會增加大家開發的門檻,但是如果能用這些工具來增加開發的產值和加速開發的話,為何不採用呢?
當然在選用的時候,需要和大家達成共識並且使用,也許這些新工具在團隊選用上,並非那麼快可以讓大家去接受,但是只要有系統性的規劃,相信嘗試的導入技術,可以帶給大家更好的開發體驗。