- 安裝 - 前提 - Node - 文字編輯器 - Terminal(終端機) - 從零開始 - 設定專案 - 安裝 Nuxt - 新建第一頁 - 啟動專案 - 補充 - 使用 create-nuxt-app - Routing - Routes 自動化 - Navigation - 資料夾結構 - 資料夾 - pages/ - components/ - assets/ - static/ - nuxt.config.js - package.json - 更新 - 開始 - Yarn - NPM # 安裝 ## 前提 ### Node - [node](https://nodejs.org/en/download/) >= v8.9.0, 但建議最新版本 ### 文字編輯器 - 建議 [VSCode](https://code.visualstudio.com/). ### Terminal(終端機) - 建議 VSCode 的 [integrated terminal](https://code.visualstudio.com/docs/editor/integrated-terminal). ## 從零開始 - 只需要 1 的檔案 和 1 個資料夾, 即可開始建立 Nuxt.js 專案. ### 設定專案 1. 建立一個空資料夾, 以你的專案名稱命名 2. cd 切換到資料夾下 3. 建立一個 `package.json`: ```bash mkdir <project-name> cd <project-name> touch package.json ``` 4. 打開 package.json, 貼上以下內容: ```json { "name": "my-app", "scripts": { "dev": "nuxt", "build": "nuxt build", "generate": "nuxt generate", "start": "nuxt start" } } ``` - `scripts` 定義了 Nuxt.js 的指令, 你可以下 `npm run <command>` 啟動專案. - `package.json` 就像是你專案的 ID card. ### 安裝 Nuxt 1. 透過 `npm` 或 `yarn` 把 `nuxt` 安裝到專案裡: ```bash npm install nuxt yarn add nuxt ``` - 這段指令 - 會將 `nuxt` 加進專案中, 讓他成為專案的 dependency - 會自動在 `package.json` 的 dependencies 區段新增 - 會建立`node_modules/` , 儲存所有你安裝的 packages 和 這些 packages 的 dependencies. - 會建立 `package-lock.json` 或 `yarn.lock`, 確保安裝好的 packages 具有 consistent install 和 compatible dependencies. ### 新建第一頁 - Nuxt.js 會將所有 `pages/` 裡的 `*.vue` 轉成 route. 1. 建立 `pages/`: ```bash mkdir pages ``` 2. 在 `pages/` 裡建立一個 `index.vue`: ```bash touch pages/index.vue ``` - 因為他是 home page, 所以必須叫他 index. 3. 打開 `index.vue` 並貼上以下內容: ```htmlmixed <template> <h1>Hello world!</h1> </template> ``` ### 啟動專案 - 輸入以下指定, 將專案啟動: ```bash npm run dev yarn dev ``` > 要在 development mode 下執行, 使用 dev 的指令. - app 就會在 http://localhost:3000 上運行. > 在 development mode 下啟動時, 他會監聽大部分資料夾底下的檔案異動, 所以不需要重啟. > 當你下 dev 的指令, 他會建立 `.nuxt/`. 請把他從 version control 中 ignored. 你可以建立一個 `.gitignore` 檔案, 再加進 `.nuxt/`. ### 補充 - 在 `pages/` 裡建立一個 `fun.vue`. 內容同 index.vue, 你就會在 http://localhost:3000/fun 看到新頁面. > 在 `pages/` 裡建立一個 `more-fun/`, 再放入一個 `index.vue`. 這樣做的結果跟直接在 `pages` 建立一個 `more-fun.vue` 一樣. > ``` > ... > pages/ > more-fun/ > index.vue > more-fun.vue > ... > ``` ## 使用 create-nuxt-app - 確認你已安裝 - npx (從 NPM 5.2.0 開始預設都會有) 或 - npm v6.1 或 - yarn. ```bash npx create-nuxt-app <project-name> npm init nuxt-app <project-name> yarn create nuxt-app <project-name> ``` - 他會問你一些問題, 像是 - 專案名稱 - Nuxt 的選項 - UI framework - TypeScript - linter - testing framework - 回答完後, 就會安裝所有 dependencies. - 下一步就是 cd 切換到專案裡並啟動他: ```bash cd <project-name> npm run dev # 或 yarn dev ``` - app 就會在 http://localhost:3000 上啟動. # Routing ## Routes 自動化 - 大部分的網站不會只有一頁 (像是 home page, about page, contact page 等). 要能顯示這些頁面, 你需要 Router. - 當你用 Vue 建置 app, 你必須要為 `vue-router` 設定 `router.js`, 手動把所有 routes 都加進去. - 而 Nuxt.js 會依據 `pages/` 裡的 Vue 檔案, 自動產生 `vue-router` 的設定給你. 代表你不再需要寫 router config. 除此之外, Nuxt.js 也會自動幫你的 routes 做 code splitting. - 換句話說, 你只要在 `pages/` 裡建立 `.vue`, 你的 app 就會有 routing 的功能. ## Navigation - 要在頁面間 navigate, 你應該使用 [NuxtLink](https://nuxtjs.org/guides/features/nuxt-components#the-nuxtlink-component) component. - NuxtLink component 包含在 Nuxt.js 裡面, 所以不需要像其他 components 一樣還要 import. 他跟 HTML 的 `<a>` 類似, 他不是用 `href="/about"` 而是用 `to="/about"`. - 如果之前用過 `vue-router`, 可以把他想成是 `<RouterLink>`. - 到 `index.vue` 這一頁的連結: ```htmlmixed <template> <NuxtLink to="/">Home page</NuxtLink> </template> ``` - 網站裡所有的連結都用 `<NuxtLink>`. 如果要到其他網站, 再用 `<a>`. ```htmlmixed <template> <main> <h1>Home page</h1> <NuxtLink to="/about"> About (internal link that belongs to the Nuxt App) </NuxtLink> <a href="https://nuxtjs.org">External Link to another page</a> </main> </template> ``` # 資料夾結構 - Nuxt.js app 預設的結構, 對於小型或大型的 app 都很好上手. 你可以自由管理你的 app, 照你喜歡的方式建立其他資料夾. 1. 建立一些尚未存在的資料夾和檔案. ```bash mkdir components assets static touch nuxt.config.js ``` ``` ... assets/ components/ static/ nuxt.config.js ... ``` - 這些是建置一個 Nuxt.js app 主要需要的資料夾和檔案. > 建立出這些名稱的資料夾就能夠開啟他們的功能. ## 資料夾 ### `pages/` - 包含 app 的 views 和 routes. ### `components/` - 是放所有 Vue.js components 的地方, 然後再將他們 import 到頁面裡. - 有了 Nuxt.js, 你可以建立 components 讓他們自動 import 到 .vue 裡, 代表你不需要手動 import 到 script 區段. 如果你將 components 設定為 true, Nuxt.js 就會掃描到並自動 import. ### `assets/` - 包含 uncompiled assets, 像是 styles, images, fonts. ### `static/` - 直接 map 至 server root, 包含的檔案必須保持檔名, 不會再異動. ### `nuxt.config.js` - 是 Nuxt.js 設定的單一窗口. 如果你要加入 modules 或 覆蓋預設的設定值, 可以在這裡改. ### `package.json` - 包含所有 app 的 dependencies 和 scripts. # 更新 - 如果要升級到 v2.14 使用 static hosting, 你需要在 nuxt.config.js 加入 target:static. ```javascript export default { target: 'static' ... } ``` ## 開始 1. 檢查版本的 release notes, 確認有沒有任何針對這特別的 release 額外的指示. 2. 更新 `package.json` 的 `nuxt` package 指定版本. ## Yarn 3. 移除 `yarn.lock` 4. 移除 `node_modules/` 5. 執行 `yarn` 指令 6. 安裝完畢後, 再跑一次測試, 確認需不需要也更新其他的 dependencies. 可以用 `yarn outdated`. ## NPM 3. 移除 `package-lock.json` 4. 移除 `node_modules/` 5. 執行 `npm install` 指令 6. 安裝完畢後, 再跑一次測試, 確認需不需要也更新其他的 dependencies. 可以用 `npm outdated`.