برنامه نویسی

خالی_ OBJ در کد منبع Inferno.js.

در این مقاله ، ما یک متغیر را مرور می کنیم ، EMPTY_OBJECT, در کد منبع Inferno.js. من تلاش می کنم تا داخلی های Inferno.js را درک کنم و با این کار ، به این متغیر که در کد زیر نشان داده شده است برخورد کردم.

https%3A%2F%2Fdev to uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faytio9h53cm4yem8kt16

من از مستندات به عنوان نقطه شروع خود استفاده می کنم تا جهت تحقیق خود را در مطالعه یک پایگاه کد جدید و OSS تنظیم کنم. با این گفته ، من قطعه کد زیر را در شروع کار پیدا کردم.

import { render } from 'inferno';

const message = "Hello world";

render(
  <MyComponent message={ message } />,
  document.getElementById("app")
);
حالت تمام صفحه را وارد کنید

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

من قصد داشتم مطالعه کنم create-inferno-app CLI اما احساس می کنم در حالی که در مورد داخلی Shadcn CLI مطالعه کردم ، تحقیقات کافی در این باره انجام داده ام.

بازگشت به render روش ، برای یافتن این روش در پایگاه کد ، Inferno Codebase یک Monorepo است و با استفاده از LERNA اداره می شود. می توانید با بررسی Lerna.json این موضوع را تأیید کنید.

https%3A%2F%2Fdev to

می توانید جستجو کنید inferno نام بسته در پوشه بسته ها. بیشتر اوقات ، نام پوشه ها در داخل packages پوشه با آنها مطابقت دارد package.json نام

{
  "name": "inferno",
  "version": "9.0.3",
  "license": "MIT",
  "type": "module",
حالت تمام صفحه را وارد کنید

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

در Inferno/SRC/DOM/RENDERING.TS ، روش ارائه را پیدا خواهید کرد.

export function render(
  input: VNode | InfernoNode,
  parentDOM: ParentDOM,
  callback: (() => void) | null = null,
  context: ContextObject = EMPTY_OBJ,
): void {
  renderInternal(input, parentDOM, callback, context);
}
حالت تمام صفحه را وارد کنید

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

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

// We need EMPTY_OBJ defined in one place.
// It's used for comparison, so we can't inline it into shared
export const EMPTY_OBJ = {};
حالت تمام صفحه را وارد کنید

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

بله ، درست است ، با یک نظر با \ {\} اختصاص داده شده است که توضیح می دهد چرا در یک مکان مورد نیاز است.

سلام ، نام من رامو ناراسینگا است. من پروژه های بزرگ منبع باز را مطالعه می کنم و در مورد معماری پایگاه کد آنها و بهترین شیوه ها مطالب ایجاد می کنم و آن را از طریق مقاله ، فیلم به اشتراک می گذارم.

ویژگی هایی مانند Changesets ، احراز هویت supabase را در پروژه بعدی خود با استفاده از آن پیکربندی کنید فکر کنبشر

email— ramu@thinkthroo.com

GitHub من-https://github.com/ramu-narasinga

وب سایت من – https://ramunarasinga.com

کانال یوتیوب من-https://www.youtube.com/@ramu-narasinga

پلت فرم یادگیری – https://thinkthroo.com

معماری پایگاه کد – https://app.thinkthroo.com/architecture

بهترین روشها-https://app.thinkthroo.com/best-practices

پروژه های درجه تولید-https://app.thinkthroo.com/production-prade-projects

  1. https://github.com/infernojs/inferno/blob/master/packages/inferno/src/dom/rendering.ts#l23

  2. https://github.com/infernojs/inferno/blob/master/packages/inferno/src/dom/utils/common.ts#l13

  3. https://lerna.js.org/

  4. https://github.com/infernojs/inferno/blob/master/lerna.json

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

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

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

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