برنامه نویسی

آشنایی با اجزای تک فایل Vue.js (SFC)

اگر این پست‌ها را به ترتیب زمانی خوانده‌اید، می‌دانید که تا این لحظه، ما برنامه‌های Vue.js خود را در صفحات HTML به عنوان بخشی از اسکریپت‌های صفحه ایجاد و اجرا می‌کردیم.
Vue.js به ما آزادی ایجاد برنامه‌ها را به این روش می‌دهد، بسته به میزان ویژگی‌هایی که انتظار داریم برنامه‌های Vue.js ما در برنامه‌هایی که در حال ساختن هستیم داشته باشند.

دیده‌ایم که Vue.js می‌تواند به منظور افزودن ویژگی‌های اتمی در سایر برنامه‌ها/صفحات HTML باشد، به عنوان مثال، می‌توان از آن فقط در بخش نوار جستجوی یک وب‌سایت استفاده کرد، درخواست‌های جستجو را ارسال کرد و نتایج را به ازای درج شده نمایش داد. پرس و جوها

اما، مواردی وجود دارد که ما نیاز به ساخت برنامه‌های Vue.js کامل با مجموعه‌ای از ویژگی‌ها مانند مسیریابی، مدیریت وضعیت و غیره داریم. چنین برنامه‌هایی معمولاً شامل نوشتن تعداد زیادی کد Vue.js هستند، و همانطور که انتظار می‌رود در در چنین مواردی، ما فایل‌های بزرگ حاوی کدهای زیادی دریافت می‌کنیم که معمولاً منجر به انواع مشکلات نگهداری کد می‌شود.

برای جلوگیری از این مشکلات قریب‌الوقوع زمان‌بر و مصرف‌کننده منابع، ما معمولاً کد را به قطعات کوچک‌تر قابل مدیریت و وابسته تقسیم می‌کنیم، همانطور که در مؤلفه‌های Vue.js دیده‌ایم.

اما، سناریویی که در اینجا به آن اشاره می‌کنیم فراتر از تجزیه برنامه‌های Vue.js به اجزای کوچک‌تر است، بلکه بیشتر به فایل‌های مستقلی به نام Vue.js Single-File Components (SFCs) می‌رود که به خودی خود Vue.js کاملاً پیشرفته و قابل اتصال هستند. برنامه ها

در اینجا برخی از مزایای استفاده از فایل های Vue.js SFC آورده شده است:

  • بهبود تجربه توسعه‌دهندگان، با تشویق به استفاده از ابزارهای ساخت که کارهای سنگین را برای ما انجام می‌دهند و به خودکارسازی کارهایی مانند زیباسازی کد، پرده‌بندی و کوچک‌سازی برای تولید کمک می‌کند تا ساخت بسته‌های استقرار سبک، بهترین شیوه‌ها و غیره را تسهیل کند. به پیش.
  • ما به راحتی می‌توانیم از SFCها در برنامه‌های دیگر استفاده کنیم، جایی که می‌خواهیم ویژگی‌های مرتبط را دوباره پیاده‌سازی کنیم و از نوشتن مجدد کد خودداری کنیم.
  • ما می‌توانیم کامپوننت‌ها را بسته‌بندی کنیم و پلاگین‌های قابل اشتراک‌گذاری ایجاد کنیم، به‌ویژه زمانی که اصلاح‌ها یا ویژگی‌هایی اضافه می‌شوند و تغییرات را به راحتی در همه برنامه‌هایی که این افزونه‌ها در آن‌ها استفاده می‌شوند، به اشتراک بگذاریم.
  • گروه بندی همه کدها (منطق، الگو، و استایل) مربوط به یک تابع واحد در یک فایل واحد، مدیریت برنامه های ما و ویژگی های مستقل آنها را ساده می کند.

فایل های SFC Vue.js دارای یک ویژگی منحصر به فرد هستند .vue پسوند فایل که توسط همه IDE های اصلی، ویرایشگرهای متن و چندین افزونه پشتیبانی می شود که به برجسته کردن کد Vue.js و اعمال هوشمندانه کد روی آن کمک می کند.

کار با Vue.js Single-File Components (SFCs)

برای دیدن نحو و کار با SFCهای Vue.js، ابتدا باید یک پروژه Vue.js را که با ابزاری به نام Vite مدیریت می شود، داربست کنید.

ما با Vite کار خواهیم کرد، اما تمرکز زیادی روی آن در این پست نخواهیم داشت، در آینده جزئیات بیشتری از آن یاد خواهیم گرفت، در حال حاضر، تنها چیزی که نیاز داریم این است که بدانیم این یک ابزار ساخت برای فریمورک های جاوا اسکریپت جلویی است. .

قبل از ادامه، مطمئن شوید که آخرین نسخه LTS node.js را در سیستم خود نصب کرده اید.

دستور زیر را در ترمینال اجرا کنید تا یک فهرست پروژه Vue.js جدید ایجاد کنید.

mkdir vue-sfc-app
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگامی که این دستور خاتمه می یابد، well باید یک فهرست جدید به نام داشته باشد vue-sfc-app. با اجرا کردن، مکان ترمینال فعال را به آن تغییر دهید cd vue-sfc-app.

در داخل فهرست پروژه، اجرا کنید npm init -y تا این دایرکتوری به ریشه یک پروژه جاوا اسکریپت جدید تبدیل شود. این دستور a را اضافه می کند package.json فایل، که به سادگی فایل فراداده یک پروژه است که مانیفستی از وابستگی ها، اسکریپت ها و غیره ما را نگه می دارد. برای مطالعه بیشتر در مورد این فایل، می توانید از اسناد آن دیدن کنید.

تا کنون، این طرح دایرکتوری پروژه خواهد بود:

.
├── package.json
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در اینجا چیزی است که در package.json فایل تا کنون

{
  “name”: “vue-sfc-app”,
  “version”: 1.0.0,
  “description”: “”,
  “main”: “index.js”,
  “scripts”: {
    “test”: “echo \”Error: no test specified\” && exit 1
  },
  “keywords”: [],
  “author”: “”,
  “license”: “ISC”
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

a اضافه کنید ”type”: “module” ویژگی های این فایل را در نظر داشته باشید و آنچه در آن موجود است را در نظر داشته باشید.

دستورات زیر را در ترمینال اجرا کنید.

npm install vue

npm install -D vite @vitejs/plugin-vue
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اولین دستور بسته Vue.js npm را نصب می کند (کد کتابخانه Vue.js را در اختیار ما قرار می دهد). دستور دوم Vite و افزونه آن را برای Vue.js نصب می کند. دو وابستگی اخیر محیط توسعه محلی ما را با وظایفی مانند کامپایل کردن فایل‌های SFC و ارائه برنامه به صورت محلی اداره می‌کنند تا بتوانیم فقط بر روی ساخت برنامه خود تمرکز کنیم.

پس از نصب این دو فایل، باید متوجه یک دایرکتوری جدید شوید: node_modules که به پروژه شما اضافه شده است. اینجا جایی است که کد منبع وابستگی ها ذخیره می شود، ما معمولاً هیچ تغییری در هیچ چیزی در آن ایجاد نمی کنیم.

وقتی برمیگردی به package.json فایل، متوجه تغییراتی خواهید شد، دو بخش جدید dependencies و devDependencies با وابستگی های مربوطه و نسخه های نصب شده آنها اضافه خواهد شد.

  ...
  “devDependencies”: {
    “@vitejs/plugin-vue”: “^[SEMANTIC-VERSION],
    “vite”: “^[SEMANTIC-VERSION]
  },
  “dependencies”: {
    “vue”: “^[SEMANTIC-VERSION]
  }
  ...
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اضافه کردن سه فایل به پروژه ما – index.html، index.js، و vite.config.js. کد زیر را به ترتیب در این فایل ها قرار دهید.

<!-- index.html -->
<html>
    <head>
        <title>Vue SFC App</title>
    </head>
    <body>
        <div id=“app”></div>
        <script type=“module” src=“/index.js”></script>
    </body>
</html>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

// index.js
import { createApp } from vue;
import App from ./App.vue

const app = createApp(App).mount(“#app)
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

// vite.config.js
import { defineConfig } from vite;
import vue from @vitejs/plugin-vue”;

export default defineConfig({
    plugins: [vue()]
});
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

در index.js فایل، ما برنامه Vue.js را در قالبی آشنا راه اندازی کرده ایم و یک فایل SFC Vue.js را ارسال کرده ایم – App.vue درون createApp() تابع.

در index.html فایل، ما نشانه گذاری معمولی HTML داریم که کد جاوا اسکریپت را از منبع خارج می کند index.js فایل.

این vite.config.js فایل یک فایل ویژه در پروژه های مدیریت شده با Vite است که در آن پیکربندی ابزار قابل انجام است. کاری که ما در این فایل انجام داده‌ایم این است که فایل افزونه را ارسال می‌کنیم تا Vite بداند وقتی با کد Vue.js و فایل‌های داخل پروژه مواجه می‌شود چه کاری انجام دهد.

ما باید یک اسکریپت داخل آن اضافه کنیم package.json برای روشن کردن سرور محلی با استفاده از دستورات ارائه شده توسط Vite و مشاهده اینکه پروژه ما چگونه به نظر می رسد.

درون scripts بخش از package.json فایل جدید اضافه کنید dev اسکریپت به شرح زیر است.

  “scripts”: {
    “test”: “echo \”Error: no test specified\” && exit 1,
    “dev”: “vite”
  },
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

حالا، فرار کن npm run dev --port 3000 در ترمینال این باید یک سرور محلی بر روی راه اندازی کند 3000 پورت اگر اشغال نشده باشد – localhost:3000. سعی کنید از آن در مرورگر بازدید کنید.

اگر خطای زیر را مشاهده کردید، همه چیز طبق برنامه پیش رفت.

خطای مولفه از دست رفته Vue.js.

در این خطا، Vite به سادگی به ما می گوید که نتوانسته است آن را پیدا کند App.vue فایل SFC، که درست است زیرا ما هرگز آن را ایجاد نکردیم.

پیش بروید و آن را ایجاد کنید. اضافه کردن کد زیر به داخل

<template>
    <div>
        He{{ 1 + 1 }}o World!
    </div>
</template>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

Vite بارگذاری مجدد را برای وب سایت ما انجام می دهد و ما باید “He11o World!” را ببینیم. در مرورگر ما

آناتومی یک فایل SFC Vue.js

SFC های Vue.js فقط فایل های HTML بدون آن هستند <head> بخش و با الف <template> بخش جایگزین HTML آشنا <body>.
به طور کلی از 3 بخش تشکیل شده اند، الف <template> جایی که نشانه گذاری UI قرار می گیرد (مانند مثال بالا)، منطق جاوا اسکریپت مؤلفه بین <script> برچسب ها و الف <style> بخشی که در آن استایل های مؤلفه قرار می گیرد.

ما چیزی نزدیک به این نحو را هنگام یادگیری در مورد اجزای Vue.js دیده‌ایم زیرا در زمینه، این همان چیزی است اما در یک فایل مستقل.

بیایید قرار دهیم 1 + ‘1’ در یک متغیر محاسبه شده برای دیدن نحو بخش جاوا اسکریپت جزء.

<script>
export default {
    computed: {
        doubleL() {
            return 1 + 1;
        }
    }
}
</script>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

وقتی صفحه به‌روزرسانی می‌شود، هیچ تغییری در صفحه ایجاد نمی‌شود زیرا ما همچنان از همان منطق استفاده می‌کنیم.

بیایید نمونه دیگری را ببینیم.
دکمه زیر را به قالب اضافه کنید.

<button @click=“increment()”>Clicks {{ count }}</button>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و به روز رسانی کنید <script> بخش با اضافه کردن data و methods گزینه ها.

    data() {
        return {
            count: 0
        }
    },
    methods: {
        increment(){
            this.count++
        }
    }
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اکنون باید موارد زیر را در صفحه خود مشاهده کنیم.

شمارش کلیک دکمه

برای افزودن کمی فاصله بین بلوک‌های HTML، می‌توانیم مقداری استایل به مؤلفه داخل آن اضافه کنیم <style> بخش مانند این

<style scoped>
div, button{
    padding: 5px;
    margin: 5px
}
button{
    color: red;
    font-weight: 800;
}
</style>
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و پس از آن صفحه اینگونه خواهد بود.

جزء سبک

این scoped ویژگی بر روی <style> تگ بالا به Vue.js دستور می‌دهد تا استایل‌ها را فقط در این مؤلفه اعمال کند و نه در جای دیگر، وقتی قرار نمی‌گیرد، سبک این مؤلفه در زمینه جهانی برنامه اعمال می‌شود.

این <script setup> نحو قند در SFCهای Vue.js

با Vue.js 3 (و v2.7)، Vue یک API جدید به چارچوب معرفی کرد – API ترکیبی، که مجموعه‌ای از API است که به ما امکان می‌دهد به جای اعلام گزینه‌ها، مؤلفه‌های Vue.js را با استفاده از توابع وارداتی بنویسیم. ما تا این لحظه هنگام نوشتن مؤلفه‌های Vue.js این کار را انجام داده‌ایم. همانطور که در تمام مثال‌هایمان نشان داده‌ایم، Options API همچنان برای استفاده در دسترس است.

با Composition API، گزینه هایی مانند data در اجزای ما با ref() یا reactive() توابع، توابع بومی جاوا اسکریپت به جای توابع ترجیح داده می شوند methods و filters گزینه ها، و computed با onComputed() تابع. همه قلاب ها با توابع پیشوند با قرار می گیرند on در قالب شتر، به عنوان مثال، mounted، beforeUpdate، و unmounted قلاب ها با onMounted()، onBeforeUpdate()، و onUnmounted() توابع ترکیب به ترتیب.

این <script setup> شکر بعداً برای تسهیل یک نحو مختصر و ارگونومیک برای SFCها معرفی شد.

بیایید یک مثال را با تبدیل خود ببینیم App.vue جزء بالا

import {computed, ref} from vue
let count = ref(0)
const doubleL = computed(() => 1 + 1)

function increment(){
    count.value++
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این ref() تابع، همانطور که در بالا نشان داده شد، برای واکنش پذیر کردن متغیرها استفاده می شود. برای آزمایش واکنش پذیری، سعی کنید آن را جایگزین کنید ref(0) با 0 و count.value++ با count++ برای دیدن اینکه آیا تعداد بر روی کلیک دکمه ها افزایش می یابد یا خیر.

ref() یک مقدار درونی را می گیرد که به آن ارسال می شود و یک شی ref واکنش پذیر و قابل تغییر را برمی گرداند که دارای یک ویژگی واحد است – .value که به ارزش درونی اشاره دارد. این دلیلی است که ما استفاده می کنیم count.value و نه count درون increment() تابع برای جهش تعداد.
در داخل قالب، نیازی به استفاده نداریم .value همانطور که Vue.js به طور خودکار آن را مدیریت می کند.

برای متغیر محاسبه شده ما doubleL ما یک تابع دریافت کننده را ارسال می کنیم که یک واکنشگر را نیز برمی گرداند ref شی، به این معنی، اگر بخواهیم به مقدار آن در بخش جاوا اسکریپت برنامه خود دسترسی پیدا کنیم، از آن استفاده می کنیم .value.

ما می توانیم بازسازی کنیم doubleL در این مثال، برای آزاد کردن منابع مورد استفاده با استفاده از یک ثابت به جای خاصیت محاسبه شده، زیرا مقدار آن جهش یافته یا به عنوان یک وابستگی در جای دیگری مورد نیاز نیست.

Const doubleL = 1 + 1
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

برخی از مزایای آشکار ما در تبدیل می بینیم App.vue جزء Composition API کاهش ردپای کد و کاربرد بیشتر جاوا اسکریپت بومی است، هرچند، ما کمی ساختار را از دست می دهیم.
برای اطلاعات بیشتر در مورد Composition API، می‌توانید اسناد رسمی Vue.js را در این زمینه بخوانید.

اتصال حالت جزء SFC به سبک ها

با SFCهای Vue.js، می‌توانیم مقادیر CSS را به حالت مؤلفه واکنشی با استفاده از آن پیوند دهیم v-bind() تابع CSS.

ببندیم count به مقدار حاشیه در سبک های ما.

div, button{
    padding: 5px;
    margin: v-bind(count + px)
}
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

هنگام کلیک بر روی دکمه باید اثر زیر را مشاهده کنیم.

اتصال مقادیر CSS به حالت جزء

توجه، برای دیدن کد منبع پروژه Vue.js SFC که به تازگی ایجاد کرده ایم، از این مخزن GitHub دیدن کنید.

خلاصه

به طور خلاصه، در این پست موارد زیر را یاد گرفتیم:

  • راه اندازی یک پروژه Vue.js با استفاده از ابزارهای ساخت، در این مورد – Vite.
  • ایجاد و کار با اجزای تک فایل (SFC) Vue.js.
  • سینتکس و عملکرد هر بخش از یک SFC را درک کرد.
  • ما با Vue.js Composition API و برخی از توابع محبوبی که در هنگام ساخت رابط با Vue.js 3 استفاده خواهیم کرد، آشنا شده ایم.
  • در مورد نحوه استفاده از <script setup> قند در فایل های Vue.js SFC.
  • ما همچنین دیده‌ایم که چگونه می‌توانیم حالت مؤلفه را به مقادیر CSS متصل کنیم تا جلوه‌های خلاقانه را در رابط‌های کاربری خود ارائه دهیم.

برای اطلاعات بیشتر در مورد اجزای تک فایل Vue.js، اسناد رسمی Vue.js را بخوانید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا