ساخت سایت تک صفحه ای یا spa ( آموزش کامل )

سایت های مدرن SPA یا تک صفحه ای چیست ؟‌

وب سایت های مدرن و تک صفحه، نوعی طراحی وب است که بر پایه یک صفحه واحد ساخته می شوند (single page application) و تمام محتوا، اطلاعات و قسمت های مختلف در یک صفحه به صورت مجزا ممکن است تغییر کند بدون دخالت به بقیه قسمت ها یا بدون نیاز به بارگذاری صفحه ( رفرش ). این نوع وب سایت ها برای ارائه یک تجربه ی ساده، شیک و سریع طراحی شده اند و جهت استفاده از تلفن همراه و دستگاه های تبلت نیز بهینه هستند. این نوع سایت ها به کاربران اجازه می دهند تا به صورت سریع و آسان به محتواها و اطلاعات مورد نیاز دسترسی پیدا کنند و این باعث جذب کاربران بیشتری به سمت وب سایت میشود.


برنامه نویسی سایت های تک صفحه ای
برنامه نویسی سایت های تک صفحه ای


برای ساخت سایت تک صفحه ای چه چیزی نیاز داریم ؟

برای ساخت یک سایت تک صفحه ای یا spa ، شما به چند چیز نیاز دارید که عبارتند از:

1. دانش زبان HTML و CSS : برخی از المان های اساسی مانند لینک ها، تصاویر و متن را مشخص می کند و نمایش ظاهری صفحه را تعیین می کند.


2. دانش جاوا اسکریپت : برای اضافه کردن بازدهی و عملکرد پویا به سایت، نیاز است از جاوا اسکریپت استفاده کنید. برای سایت های تک صفحه ای معمولاً به صورت یکپارچه برای ساخت برنامه های کاربردی تعاملی و استفاده از API ها استفاده می شود.


3. فریمورک یا کتابخانه های جاوا اسکریپت: برای تسهیل و سازماندهی بهتر کد جاوا اسکریپت، استفاده از چارچوب یا کتابخانه ای مانند Vue.js یا React.js ضروری است. ما vue.js را برای ساختن وب سایت های تک صفحه ای پیشنهاد میکنیم.

آموزش ساخت سایت spa با vue.js
آموزش ساخت سایت spa با vue.js


با استفاده از ویو جی اس ( Vue.js ) چطور میتوانیم سایت تک صفحه ای طراحی کنیم ؟‌

برای ساخت یک سایت تک صفحه ای با فریمورک Vue.js ، شما میتوانید از یک فایل HTML ساده استفاده کرده و کامپوننت ها و بخش های نمایشی را با آن HTML ادغام کنید. به طور معمول، یک سایت تک صفحه ای در Vue.js شامل یک فایل HTML، یک فایل JavaScript (معمولاً با نام app.js) و چندین فایل CSS میباشد.


مراحلی که شما باید برای ساخت یک سایت تک صفحه ای با Vue.js طی کنید عبارتند از:

1. ایجاد یک فایل HTML ساده و به نام index.html. در این فایل، شما باید انتقادات مورد نیاز را اضافه کنید، از جمله فایل های CSS و JavaScript.


2. ایجاد یک فایل JavaScript به نام app.js. در این فایل، شما میتوانید تمام کد های Vue.js خود را نوشته و عملکرد و نمایش کامپوننت ها را تعیین کنید. همچنین، این فایل برای اتصال کامپوننت ها به فایل HTML استفاده میشود.


3. شما باید کتابخانه Vue.js را با دستور `script` در فایل HTML وارد کنید. همچنین، باید فایل app.js و در صورت موجود بودن فایل های CSS خود را به فایل HTML اضافه کنید.


4. در نهایت، برای رندر کامپوننت اصلی خود داخل فایل HTML، شما باید یک `<div>` با یک آی دی یکتا در فایل HTML ایجاد کنید. سپس، با استفاده از `new Vue()` و `el`، کامپوننت جدید خود را به این آی دی متصل کنید.


در زیر مثال ساده ای از سایت تک صفحه ای با Vue.js نوشته ام که بتوانید مطلب را خوب درک کنید:


فایل index.html:

<!DOCTYPE html>
<html>
<head>
  <title>My Single Page Website</title>
  <link rel=&quotstylesheet&quot href=&quotstyle.css&quot>
</head>
<body>
  <div id=&quotapp&quot></div>

  <script src=&quothttps://cdn.jsdelivr.net/npm/vue@2.6.11/dist/vue.js&quot>
  <script src=&quotapp.js&quot>
</body>
</html>


فایل app.js:


new Vue({
  el: '#app',
  data: {
    message: 'Welcome to my Single Page Website!'
  }
});


فایل style.css:


#app {
  text-align: center;
  padding: 50px;
  font-size: 20px;
}


در این مثال، یک کامپوننت ساده Vue.js ایجاد شده است که یک پیام را درون متغیر `data` نگهداری میکند و آن را در فایل HTML رندر میکند. با اجرای این مثال، شما یک صفحه ساده تک صفحه ای با پیام "Welcome to my Single Page Website!" را دریافت خواهید کرد. ویو جی اس نیاز به دانش html css دارد که بتوانید به خوبی و به راحتی سایت های تک صفحه ای بسازید.


برای ساخت یک سایت تک صفحه ای با استفاده از Vue Router، ابتدا باید Vue Router را نصب کنید. می توانید این کار را با دستور زیر انجام دهید:

npm install vue-router


بعد از نصب Vue Router، باید آن را در برنامه خود import کنید و از آن استفاده کنید. در فایل `main.js` (یا هر فایل اصلی دیگری که Vue را initialize می کنید)، کد زیر را اضافه کنید:


import Vue from 'vue';
import VueRouter from 'vue-router';
import App from './App.vue';

Vue.use(VueRouter);

const routes = [
  { path: '/', component: HomePage }, // صفحه اصلی
  { path: '/about', component: AboutPage }, // صفحه درباره ما
  { path: '/contact', component: ContactPage } // صفحه تماس با ما
];

const router = new VueRouter({
  routes,
  mode: 'history' // حالت هیستوری
});

new Vue({
  router,
  render: h => h(App),
}).$mount('#app');


در اینجا، سه صفحه مختلف (HomePage، AboutPage و ContactPage) را تعریف کرده ایم و آن ها را به شیوه component: ComponentName به مسیرهای مربوطه نسبت داده ایم. می توانید صفحات خود را به شیوه دیگری نیز تعریف کنید، مانند استفاده از import یا require.

همچنین داریم یک شی به نام router تعریف کردیم که نمونه ای از VueRouter است. ما از این شی برای مدیریت مسیرها و هیستوری استفاده می کنیم. با مشخص کردن mode: 'history'، روش هیستوری را برای مدیریت پیجینگ ما فعال می کنیم. این به معنی این است که ما می توانیم به صورت /about به جای /#/about برای دسترسی به صفحات استفاده کنیم.

حال می توانید مسیرها را در برنامه خود آنچنان که می خواهید بگذارید. برای نمونه، در فایل App.vue کد زیر را قرار دهید:
<template>

  <div>
    <router-link to=&quot/&quot>Home</router-link>
    <router-link to=&quot/about&quot>About</router-link>
    <router-link to=&quot/contact&quot>Contact</router-link>
    <router-view></router-view>
  </div>
</template>


export default {
  name: 'App',
};

از router-link برای ایجاد لینک هایی استفاده کنید که کاربران بتوانند بین صفحات شما جابجا شوند. و router-view را به عنوان محلی که محتویات صفحه ها را نشان می دهد استفاده کنید.

همچنین، می توانید به صورت برنامه ای در این جا router را به روز رسانی کنید، در مواقعی که نیاز به ذخیره سازی وضعیت صفحه ها دارید (مانند اسکرول نوار، وضعیت فرم و ...). برای این کار، می توانید از رویداد beforeRouteUpdate در Component ها استفاده کنید.