import { jsx, jsxs, Fragment } from 'solid-jsx/jsx-runtime';

/*@jsxRuntime automatic @jsxImportSource solid-jsx*/
const toc = [{
  "depth": 1,
  "value": "مقایسه با بقیه کتابخانه ها",
  "children": [{
    "depth": 2,
    "value": "ری‌اکت (React)",
    "children": []
  }, {
    "depth": 2,
    "value": "توصیه برای تغییر پروژه های فعلی به سالید",
    "children": []
  }, {
    "depth": 2,
    "value": "ویو جی اس (Vue.js)",
    "children": []
  }]
}];
function _createMdxContent(props) {
  const _components = Object.assign({
    h1: "h1",
    a: "a",
    p: "p",
    h2: "h2",
    code: "code"
  }, props.components);
  return jsxs(Fragment, {
    children: [jsxs(_components.h1, {
      id: "مقایسه-با-بقیه-کتابخانه-ها",
      children: [jsx(_components.a, {
        className: "header-anchor",
        href: "#مقایسه-با-بقیه-کتابخانه-ها",
        children: "#"
      }), "مقایسه با بقیه کتابخانه ها"]
    }), "\n", jsxs(_components.p, {
      children: ["این بخش نمی تواند از برخی سوگیری ها دوری کند، اما ما فکر می کنیم مهم است که بدانیم راه حل سالید (Solid) در مقایسه با کتابخانه های دیگر در کجا قرار دارد. این قسمت مربوط به عملکرد نیست و فقط تفاوت فلسفه های کتابخانه ها را بیان میکند. برای ارزیابی عملکرد، به\n", jsx(_components.a, {
        href: "https://github.com/krausest/js-framework-benchmark",
        children: "JS Framework Benchmark"
      }), "\nنگاه کنید."]
    }), "\n", jsxs(_components.h2, {
      id: "ریاکت-react",
      children: [jsx(_components.a, {
        className: "header-anchor",
        href: "#ریاکت-react",
        children: "#"
      }), "ری‌اکت (React)"]
    }), "\n", jsx(_components.p, {
      children: "ری اکت (React) تأثیر زیادی روی سالید (Solid) داشته است. سالید ایده جریان یک طرفه ارسال داده ها و تفکیک صریح خواندن و نوشتن در قلاب ها (Hooks) ها را از ری اکت (React) الهام گرفته است. سالید (Solid) ایده ها و نظرات قوی و جذابی در مورد چگونگی رویکرد مدیریت داده در توسعه برنامه دارد، اما به دنبال محدود کردن اجرای آن نیست."
    }), "\n", jsx(_components.p, {
      children: "با این حال، به همان اندازه که سالید (Solid) با فلسفه طراحی ری اکت (React) مطابقت دارد، اساساً متفاوت عمل می کند. ری اکت از درخت مجازی (virtual DOM)استفاده می کند ، درحالی که سالید از آن استفاده نمی کند. اجزا ری اکت از بالا به پایین چیده می شود که در آن متدهای رندر (render) و یافتن تفاوت ها بین درخت اصلی و مجازی (Diff) به طور مکرر فراخوانی می شوند. در عوض سالید هر جز برنامه را را یکبار به طور کامل رندر (render) می‌کند، گراف آن را می سازد و فقط دستور العمل هایی که منجر به تغییر ان جز می شود را اجرا میکند."
    }), "\n", jsxs(_components.h2, {
      id: "توصیه-برای-تغییر-پروژه-های-فعلی-به-سالید",
      children: [jsx(_components.a, {
        className: "header-anchor",
        href: "#توصیه-برای-تغییر-پروژه-های-فعلی-به-سالید",
        children: "#"
      }), "توصیه برای تغییر پروژه های فعلی به سالید"]
    }), "\n", jsxs(_components.p, {
      children: ["مدل به روز رسانی سالید هیچ شباهتی به ری اکت یا حتی ری اکت و موب اکس (Mobx) ندارد. به جای اینکه اجزای تابع را به عنوان تابع ", jsx(_components.code, {
        children: "رندر"
      }), " ", jsx(_components.code, {
        children: "(render)"
      }), " در نظر بگیرید، آنها را به عنوان ", jsx(_components.code, {
        children: "سازنده"
      }), " ", jsx(_components.code, {
        children: "(constructor)"
      }), " در نظر بگیرید."]
    }), "\n", jsxs(_components.p, {
      children: ["در Solid، پراپز (Props) و حافظه ها (stores) ", jsx(_components.a, {
        href: "https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy",
        children: "پراکسی"
      }), " هستند که برای ردیابی و به‌روزرسانی‌ها به دسترسی به مقادیر پراکسی ها تکیه میکنند .\nمراقب دسترسی به متغیرهای پراپز یا دسترسی اولیه به پراپز باشید، که می تواند باعث شود پراپز و حافظه ها واکنش پذیری خود را از دست بدهند یا در زمان نامناسبی صدا زده شوند."]
    }), "\n", jsx(_components.p, {
      children: "مقادیر نوع اولیه (Primitive ) در سالید همانند قلاب ها در ری اکت هیچ محدودیتی ندارند.\nبنابراین میتوانید به آزادی از ان ها استفاده کنید و هر جا که نیاز شد ، ان ها را شاخه بدهید."
    }), "\n", jsx(_components.p, {
      children: "در سالید ، شما نیازی به اضافه کردن شناسه واحد برای هر آیتم لیست یا جدول یا هر لیست تکرار شونده همانند ری اکت نیستید."
    }), "\n", jsxs(_components.p, {
      children: ["در ری اکت وقتی یک ورودی یا اصطلاحا input داشته باشیم ، با استفاده از تابع onChange میتوانیم تغییرات ورودی را مشاهده کنیم. ولی این رفتار ", jsx(_components.a, {
        href: "https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onchange",
        children: "پیش فرض"
      }), " تابع onChange نیست. در سالید ، با استفاده از onInput ، میتوانید تغییرات یک ورودی را مشاهده نمایید."]
    }), "\n", jsx(_components.p, {
      children: "در نهایت، هیچ درخت مجازی در سالید وجود ندارد، بنابراین APIهای ضروری درخت مجازی مانند «React.Children» و «React.cloneElement» در سالید معادلی ندارند. به جای ایجاد یا تغییر مستقیم عناصر درخت اجزا (DOM) ، مقاصد خود را به صورت شفاف بیان کنید."
    }), "\n", jsxs(_components.h2, {
      id: "ویو-جی-اس-vuejs",
      children: [jsx(_components.a, {
        className: "header-anchor",
        href: "#ویو-جی-اس-vuejs",
        children: "#"
      }), "ویو جی اس (Vue.js)"]
    }), "\n", jsx(_components.p, {
      children: "سالید به ویژه از نظر طراحی از ویو جی اس (Vue.js) الهام نمی گیرد، اما از نظر روش پیاده سازی قابل مقایسه هستند. هر دوی آنها از پراکسی ها (Proxy) در سیستم تعاملی خود با ردیابی خودکار مبتنی بر خواندن استفاده می کنند. اما این همان جایی است که شباهت ها به پایان می رسد. سیستم تشخیص وابستگی در ویو جی اس فقط درخت اجزا (DOM) و اجزا (Component) مجازی خود را تغذیه می کند، در حالی که سالید سیستم خود را تا رسیدن به درخت اجزا به صورت جز جز نگه می دارد."
    }), "\n", jsx(_components.p, {
      children: "این فایل در حال به روز رسانی می باشد..."
    })]
  });
}
function MDXContent(props = {}) {
  const {wrapper: MDXLayout} = props.components || ({});
  return MDXLayout ? jsx(MDXLayout, Object.assign({}, props, {
    children: jsx(_createMdxContent, props)
  })) : _createMdxContent(props);
}

export { MDXContent as default, toc };
//# sourceMappingURL=comparison-9b7c38bf.js.map
