開始使用Nuxt3

很基本的Nuxt3教學,包含Eslint導入, 之後想到再補充~哈哈

開始使用Nuxt3

Nuxt是Vue的懶人版,套件都幫你弄好了,基本上不太需要裝其他東西

作者之前都使用Nuxt2開發,但學習是不能停止的,不然會腦袋會死掉,哈哈!

本次使用Nuxt3來進行開發,Nuxt3官方文件 、順便介紹Eslint除錯

Nuxt3優勢

  • 導入Vite,在網頁Build打包上更快!
  • 支援Vue3
  • plugins的套件能自動導入,不用再去nuxt.config.js自己搞
  • 等一堆新東西

Nuxt分為SSR(Server-Side Rendering)和SPA(Single Page Application)兩種模式

優缺點網路上很多,咱們就使用SPA進行建置!!

本篇不會串到後端,因此先做簡單的前端建置

必備工具

編譯器: Visual Studio Code (VSCODE)
Node.js環境:16.20.0 Gallium (url),建議使用16.xx.x版本,避免踩坑
chrome套件: Vue.js devtools

1. 安裝Nuxt3 (官方說明)

#先創建初始化 package.json
npx nuxi init first_nuxt #<project-name>
#執行完後會創建一個資料夾,裡面存放必備的檔案
cd first_nuxt
#或者VSCode重新選擇新路徑

另外要安裝開發用的vscode套件,基本上裝volar即可(裝兩個是因為有使用nuxt2)

2. Nuxt3的npm包安裝

  • 先將ssr模式關掉,這個用不到
  • 把nuxt.config.ts,改成nuxt.config.js(作者習慣,哈!)
#導入pacakge.json包
npm i

3. Nuxt3啟動

直接輸入 npm run dev 執行開發模式看看結果

#開發模式
npm run dev

#發布模式(正式上線用)
npm run build #打包
npm run start #執行

Nuxt3- Page (Route路由)

可以看到app.vue是nuxt3的主頁,但我們要改成路由,方便管理

先把app.vue砍了,直接上page就好

<NuxtWelcome /> 這個文件索引到nuxt3的components

Ctrl+S存檔後,網頁就會變了!!

index.vue = > 主頁 "/"

e.g. 192.168.0.10:3000/

直接在pages上新增.vue,並在url上加路由名稱就可以指向該page,非常方便!

e.g. pages新增haha.vue -> 192.168.0.10:3000/haha

切換路由頁面可以使用VUE的router.push,簡短且方便

<button @click="$router.push('/yourPage')">Mybutton</button>

Nuxt3-Components

如果vue想新增一些小組件,不希望塞太多在pages,不好管理,需要經常重複調用的UI或者單純顯示的組件等等

可以直接新增components資料夾,裡面塞vue組件

e.g.
mylittlebtn #這是錯的
Mylittlebtn #第一碼要大寫就對了
以前的版本會卡,現在好像不用

Nuxt3-Layout布局

在Nuxt的life cycle,layout基本上可以認為是全域模板,每次切換頁面的渲染都會經過它,因此我們可以在這裡做一些功能,e.g. 登入驗證(在middleware處理也可)、整體布局排版等等

首先創建在根目錄一個layouts的資料夾,並新增default.vue,<NuxtPage>代表page資料夾裡面所有的.vue,不使用<NuxtPage>,那麼會看不到page的內容。

Nuxt3-Vue.js Devtools

在網頁開發上,會需要查看變數到底在幹嘛,而Vue支援從網頁上查看變數

  • 從網頁看,需要在.vue打 {{ myvalue }}
  • 從Chome 用F12打開管理員後,選vue就可以看到整排的變數

變數一多,總不能用console.log或{{value}} 一筆一筆看吧??

基本上Nuxt3基本教學就到這裡了~~


Nuxt3-導入ESlint

想當然沒人想要把程式寫怪怪的,或者排版亂排,傷眼睛,母湯喔
這邊推薦使用js除錯神器ESlint
因為作者懶得解釋說明,所以直接貼現成的給各位參考
裡面包含babel、prettier、ESlint等設定,反正我懶了,哈,請自己Google

1.把原有的json替換掉,如果你懂,那就自己抓要的

# package.json
{
  "name": "nuxt-app",
  "private": true,
  "scripts": {
    "build": "nuxt build",
    "dev": "nuxt dev",
    "generate": "nuxt generate",
    "preview": "nuxt preview",
    "postinstall": "nuxt prepare"
  },
  "devDependencies": {
    "@types/node": "^18",
    "nuxt": "^3.4.3",
    "@babel/core": "^7.21.4",
    "@babel/eslint-parser": "^7.21.3",
    "@babel/preset-env": "^7.21.4",
    "@nuxtjs/eslint-config": "^12.0.0",
    "@nuxtjs/eslint-config-typescript": "^12.0.0",
    "@nuxtjs/eslint-module": "^4.0.2",
    "@vueuse/core": "^9.13.0",
    "@vueuse/nuxt": "^9.13.0",
    "babel-eslint": "^10.1.0",
    "eslint": "^8.36.0",
    "eslint-plugin-nuxt": "^4.0.0",
    "eslint-plugin-vue": "^9.10.0",
    "iconv-lite": "^0.6.3",
    "nodemon": "^2.0.22",
    "prettier": "^2.8.7"
  },
  "dependencies": {
  }
}

2.新增.editorconfig (簡易版-懂就不要複製我的)

這是規定程式編碼樣式和縮排阿,等等

# editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

[*.md]
trim_trailing_whitespace = false

3.新增.eslintrc.js (簡易版-懂就不要複製我的)

Eslint會檢查你的code寫法正不正常,不然會被打,叫廠長來也沒用

module.exports = {
  root: true,
  env: {
    browser: true,
    node: true
  },
  parserOptions: {
    parser: '@babel/eslint-parser',
    requireConfigFile: false
  },
  extends: [
    '@nuxtjs',
    'plugin:nuxt/recommended'
  ],
  // add your custom rules here
  rules: {
    'nuxt/no-cjs-in-config': 'off',
    'vue/comment-directive': 'off',
    eqeqeq: 'off'
  }
}

4. Eslint效果

可以看到這邊會有很多違反的寫法,一般我們使用Fix all auto-fixable problems

可以看到縮牌後會有一段提醒你這個不行,是因為VUE的template至少要用一個容器包起來,我們用<div>包起來後就正常了~~

當然,這也是大坑,光是條件規則就看不完了~~

5. Eslint-快捷鍵

如果每次都要用滑鼠,那豈不是會失智!?

  • File-> Preferences -> Keyboard Shortcuts
  • 在搜尋欄上打fix,會跳出eslint fix all的快捷鍵,設定好後就可以了


下一篇,Nuxt3導入Element - Plus,並實現暗黑模式,很炫!