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

در این مقاله ، ما یک متغیر را مرور می کنیم ، EMPTY_OBJECT,
در کد منبع Inferno.js. من تلاش می کنم تا داخلی های Inferno.js را درک کنم و با این کار ، به این متغیر که در کد زیر نشان داده شده است برخورد کردم.
من از مستندات به عنوان نقطه شروع خود استفاده می کنم تا جهت تحقیق خود را در مطالعه یک پایگاه کد جدید و 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 این موضوع را تأیید کنید.
می توانید جستجو کنید 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
-
https://github.com/infernojs/inferno/blob/master/packages/inferno/src/dom/rendering.ts#l23
-
https://github.com/infernojs/inferno/blob/master/packages/inferno/src/dom/utils/common.ts#l13
-
https://lerna.js.org/
-
https://github.com/infernojs/inferno/blob/master/lerna.json