vocus logo

方格子 vocus

EP45 - 單檔組件

更新 發佈閱讀 6 分鐘
Single-File Components,接下來六篇是要講解Scaling Up的東西
Scaling Up意思應該是擴大規模、增加規模,
意思應該是要更加解釋組件吧?繼續來看下去

介紹 - Introduction

Vue 單文件元件(也稱為 *.vue 文件,簡稱 SFC)是一種特殊的文件格式,允許我們將 Vue 元件的模板、邏輯和樣式封裝在一個文件中。以下是一個 SFC 的範例:

<script setup>
import { ref } from 'vue'
const greeting = ref('Hello World!')
</script>

<template>
<p class="greeting">{{ greeting }}</p>
</template>

<style>
.greeting {
color: red;
font-weight: bold;
}
</style>

如我們所見,Vue SFC 是 HTML、CSS 和 JavaScript 經典三重奏的自然延伸。<template>、<script> 和 <style> 區塊將元件的視圖、邏輯和樣式封裝並放置在同一文件中。完整的語法在 SFC 語法規範中定義。

為什麼使用 SFC - Why SFC​

雖然 SFC 需要建置步驟,但它帶來了許多好處:

SFC 是 Vue 作為框架的一個定義特性,並且是以下情況下使用 Vue 的推薦方法:

  • 單頁應用程式(SPA)
  • 靜態網站生成(SSG)
  • 任何需要建置步驟以提升開發體驗(DX)的非簡單前端專案

話雖如此,我們也意識到有些情況下使用 SFC 可能顯得過於繁瑣。這就是為什麼 Vue 仍然可以通過純 JavaScript 使用,而無需建置步驟。如果你只是想為主要是靜態的 HTML 增強一些輕量級的互動,可以查看 petite-vue,這是一個優化為漸進增強的 6 kB 的 Vue 子集。

運作方式 - How It Works

Vue SFC 是一種框架特定的文件格式,必須由 @vue/compiler-sfc 預編譯為標準 JavaScript 和 CSS。編譯後的 SFC 是一個標準的 JavaScript (ES) 模組,這意味著在適當的建置設定下,你可以像匯入模組一樣匯入 SFC:

import MyComponent from './MyComponent.vue'

export default {
components: {
MyComponent
}
}

SFC 內的 <style> 標籤在開發過程中通常會被注入為原生的 <style> 標籤,以支援熱更新。對於生產環境,它們可以被提取並合併為一個單一的 CSS 文件。

你可以在 Vue SFC Playground 上嘗試 SFC,並探索它們的編譯過程。

在實際專案中,我們通常將 SFC 編譯器與建置工具(如 Vite 或基於 webpackVue CLI)集成。Vue 提供了官方的鷹架工具,讓你能夠最快速地開始使用 SFC。更多詳情請查看 SFC 工具部分。

關於關注點分離? - What About Separation of Concerns?​

一些來自傳統網頁開發背景的使用者可能會擔心,SFC 將不同的關注點混合在同一個地方,而 HTML/CSS/JS 本應該是分離的!

要回答這個問題,重要的是我們需要同意關注點分離並不等同於文件類型的分離。工程原則的最終目標是提高代碼庫的可維護性。在當前越來越複雜的前端應用中,關注點分離如果僅僅是基於文件類型的分離,並不能幫助我們達到這個目標。

在現代 UI 開發中,我們發現,與其將代碼庫分為三個相互交織的巨大層次,將它們分成鬆散耦合的組件並進行組合更有意義。在一個組件內,它的模板、邏輯和樣式是內在耦合的,將它們放在一起實際上使組件更加內聚和可維護。

即使你不喜歡單文件組件的概念,你仍然可以通過使用 Src Imports 將 JavaScript 和 CSS 分離到不同的文件中,利用其熱加載和預編譯功能。

看完這篇覺得還有蠻多要學習的www
Vite, Vue CLI這兩個工具應該是很實用的!!!
  • Vite:是一個現代前端建置工具,專為提升開發速度和效率而設計。它支援熱模組替換(HMR, Hot Module Replacement),讓開發者在編輯代碼時立即看到變更結果。
  • Vue CLI:Vue CLI 是基於 webpack 的 Vue.js 專案腳手架工具,它提供了一個完整的開發環境和建置設置,方便開發者快速啟動和管理 Vue.js 專案。









留言
avatar-img
卡關的人生
4會員
73內容數
分享生活趣事~
卡關的人生的其他內容
2024/11/10
Vue 提供了多種動畫技術來提升應用程式的互動性,包括基於 CSS 類別的動畫、基於狀態的動畫,以及使用監視器來動畫化數值。基於類別的動畫可通過動態添加 CSS 類別來觸發,像是觸發按鈕搖動效果。基於狀態的動畫則是透過樣式綁定,根據互動動態調整元素的外觀,例如根據滑鼠位置改變背景顏色。
Thumbnail
2024/11/10
Vue 提供了多種動畫技術來提升應用程式的互動性,包括基於 CSS 類別的動畫、基於狀態的動畫,以及使用監視器來動畫化數值。基於類別的動畫可通過動態添加 CSS 類別來觸發,像是觸發按鈕搖動效果。基於狀態的動畫則是透過樣式綁定,根據互動動態調整元素的外觀,例如根據滑鼠位置改變背景顏色。
Thumbnail
2024/11/09
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Thumbnail
2024/11/09
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Thumbnail
2024/11/08
Vue 建議使用模板構建應用程式,但在需要 JavaScript 的全程式化功能時,渲染函數可派上用場。渲染函數通過 h() 函數創建 vnode,h 是 hyperscript 的簡寫,能生成 HTML 的 JavaScript。
Thumbnail
2024/11/08
Vue 建議使用模板構建應用程式,但在需要 JavaScript 的全程式化功能時,渲染函數可派上用場。渲染函數通過 h() 函數創建 vnode,h 是 hyperscript 的簡寫,能生成 HTML 的 JavaScript。
Thumbnail
看更多
你可能也想看
Thumbnail
前言 Vue 在過去的一兩年內快速發展,寫法也一直改變,我在過去一年多也更改了兩次寫法,在這個系列中我將以最新的 composition api + typescript 寫法進行教學。 javascript 有兩大痛點,一個是異步問題,另一個是弱型別。要渲染畫面一定要多線程同時異步處理,不然真的一
Thumbnail
前言 Vue 在過去的一兩年內快速發展,寫法也一直改變,我在過去一年多也更改了兩次寫法,在這個系列中我將以最新的 composition api + typescript 寫法進行教學。 javascript 有兩大痛點,一個是異步問題,另一個是弱型別。要渲染畫面一定要多線程同時異步處理,不然真的一
Thumbnail
在寫頁面之前,先來介紹 Vue 頁面結構。 首先先在 src/components 底下建立一個 home.vue 跟寫一個 html 頁面很像,一樣是分成 寫網頁內容、script、style,三個部分,只是 html 標籤換成了 template。 template 就是相當於原生 html 檔
Thumbnail
在寫頁面之前,先來介紹 Vue 頁面結構。 首先先在 src/components 底下建立一個 home.vue 跟寫一個 html 頁面很像,一樣是分成 寫網頁內容、script、style,三個部分,只是 html 標籤換成了 template。 template 就是相當於原生 html 檔
Thumbnail
Vue3 學習筆記,元件與資料傳遞篇
Thumbnail
Vue3 學習筆記,元件與資料傳遞篇
Thumbnail
專案建好了,那先來講 Vue 的專案架構 詳細內容很多,所以我挑重點講 public index.html public/index.html 是 Vue 頁面的 entry point,進入一個 Vue 頁面會先進 public/index.html,再套用 App.vue,最後才是進入你寫的 .
Thumbnail
專案建好了,那先來講 Vue 的專案架構 詳細內容很多,所以我挑重點講 public index.html public/index.html 是 Vue 頁面的 entry point,進入一個 Vue 頁面會先進 public/index.html,再套用 App.vue,最後才是進入你寫的 .
Thumbnail
Vue3 學習筆記,專案建立與基礎響應式篇
Thumbnail
Vue3 學習筆記,專案建立與基礎響應式篇
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
Vue 筆記,Nuxt 簡介
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
Vue3 筆記,指令進階篇
Thumbnail
Vue3 筆記,指令進階篇
Thumbnail
1. 安裝node.js 2. 建立專案: 接著會詢問一些初始化設定的東西,按照需求選擇即可: 3. 執行 打開http://localhost:3000/ 即可看到畫面。 pages Nuxt.js會自動配置pages中每一個.vue檔案的route。 假設在pages資料夾下新增一個如下內容的a
Thumbnail
1. 安裝node.js 2. 建立專案: 接著會詢問一些初始化設定的東西,按照需求選擇即可: 3. 執行 打開http://localhost:3000/ 即可看到畫面。 pages Nuxt.js會自動配置pages中每一個.vue檔案的route。 假設在pages資料夾下新增一個如下內容的a
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News