Node: Module readline رابط کاربری برای خواندن داده ها از یک جریان قابل خواندن (مانند Process. Stdin) یک خط را در یک زمان فراهم می کند.
برای استفاده از API های مبتنی بر وعده:
برای استفاده از پاسخ به تماس و API های همگام سازی:
مثال ساده زیر استفاده اصلی از گره را نشان می دهد: ماژول readline.
پس از فراخوانی این کد ، برنامه node. js تا زمانی که readline. interface بسته نشود خاتمه نمی یابد زیرا رابط منتظر دریافت داده ها در جریان ورودی است.
نمونه های کلاس بین سازنده با استفاده از روش readlinepromises. createinterface () یا readline. createinterface () ساخته می شوند. هر نمونه با یک جریان قابل خواندن ورودی واحد و یک جریان قابل چاپ خروجی همراه است. جریان خروجی برای چاپ سریع برای ورودی کاربر که وارد جریان می شوند ، استفاده می شود و از جریان ورودی خوانده می شود.
هنگام وقوع یکی از موارد زیر ، رویداد "نزدیک" منتشر می شود:
عملکرد شنونده بدون تصویب هیچ استدلالی خوانده می شود.
پس از انتشار رویداد "نزدیک" ، نمونه InterfaceConstructor به پایان رسید.
رویداد "خط" هر زمان که جریان ورودی یک ورودی انتهای خط ( n ، r یا r n) دریافت می کند ، منتشر می شود. این معمولاً زمانی اتفاق می افتد که کاربر وارد یا بازگردد.
اگر داده های جدید از یک جریان خوانده شده باشد و این جریان بدون نشانگر نهایی خط پایان می یابد ، رویداد "خط" نیز منتشر می شود.
تابع شنونده با یک رشته حاوی خط واحد ورودی دریافت شده است.
رویداد "تاریخ" هر زمان که آرایه تاریخ تغییر کرده است منتشر می شود.
عملکرد شنونده با آرایه ای حاوی آرایه تاریخ خوانده می شود. این همه تغییرات ، خطوط اضافه شده و خطوط حذف شده را به دلیل اندازه گیری و حذف نسخه های مختلف منعکس می کند.
هدف اصلی این است که به شنونده اجازه می دهد تا تاریخ را ادامه دهد. همچنین برای شنونده امکان تغییر شیء تاریخ را فراهم می کند. این می تواند برای جلوگیری از اضافه شدن خطوط خاص به تاریخ ، مانند رمز عبور مفید باشد.
هنگام وقوع یکی از موارد زیر ، رویداد "مکث" منتشر می شود:
عملکرد شنونده بدون تصویب هیچ استدلالی خوانده می شود.
رویداد "رزومه" هر زمان که جریان ورودی از سر گرفته شود ساطع می شود.
عملکرد شنونده بدون تصویب هیچ استدلالی خوانده می شود.
رویداد "sigcont" هنگامی منتشر می شود که یک فرآیند node. js قبلاً با استفاده از ctrl + z (یعنی SIGTSTP) به پس زمینه منتقل شود ، سپس با استفاده از FG (1P) به پیش زمینه باز می گردد.
اگر جریان ورودی قبل از درخواست SIGTSTP متوقف شود ، این رویداد منتشر نمی شود.
عملکرد شنونده بدون تصویب هیچ استدلالی فراخوانی می شود.
رویداد "Sigcont" در ویندوز پشتیبانی نمی شود.
رویداد "sigint" هر زمان که جریان ورودی یک ورودی Ctrl+C را دریافت می کند ، که به طور معمول به عنوان سیگینت شناخته می شود ، ساطع می شود. اگر شنوندگان رویداد "sigint" ثبت نام کنند که هنگام دریافت جریان ورودی ، رویداد "مکث" منتشر می شود.
عملکرد شنونده بدون تصویب هیچ استدلالی فراخوانی می شود.
رویداد "SIGTSTP" هنگامی منتشر می شود که جریان ورودی ورودی Ctrl + Z را دریافت کند ، که به طور معمول به عنوان SIGTSTP شناخته می شود. اگر شنوندگان رویداد "SIGTSTP" در هنگام دریافت جریان ورودی SIGTSTP ثبت نام کنند ، روند Node. js به پس زمینه ارسال می شود.
هنگامی که برنامه با استفاده از FG (1P) از سر گرفته می شود ، رویدادهای "مکث" و "سیگنت" منتشر می شود. از این موارد می توان برای از سرگیری جریان ورودی استفاده کرد.
در صورت مکث ورودی قبل از ارسال فرآیند به پس زمینه ، رویدادهای "مکث" و "سیگنت" ساطع نمی شوند.
عملکرد شنونده بدون تصویب هیچ استدلالی فراخوانی می شود.
رویداد "SIGTSTP" در ویندوز پشتیبانی نمی شود.
روش rl. close () نمونه بین سازنده را می بندد و کنترل را بر جریان های ورودی و خروجی کنار می گذارد. هنگامی که خوانده می شود ، رویداد "نزدیک" منتشر می شود.
تماس با rl. close () بلافاصله متوقف نمی شود که سایر رویدادها (از جمله "خط") توسط نمونه بین سازنده منتشر شود.
روش rl. pause () جریان ورودی را مکث می کند و اجازه می دهد در صورت لزوم بعداً از سر گرفته شود.
فراخوانی rl. pause () بلافاصله سایر رویدادها (از جمله "خط") را از انتشار به نمونه بین سازنده مکث نمی کند.
روش RL. Prompt () نمونه های InterfaceConstructor را پیکربندی می کند و به یک خط جدید در خروجی تنظیم می شود تا بتواند مکان جدیدی را در اختیار کاربر قرار دهد که بتواند ورودی را ارائه دهد.
در صورت فراخوانی ، rl. prompt () در صورت مکث ، جریان ورودی را از سر می گیرد.
اگر InterfaceConstructor با تنظیم خروجی به صورت تهی یا تعریف نشده ایجاد شود ، سریع نوشته نمی شود.
روش rl. resume () در صورت مکث ، جریان ورودی را از سر می گیرد.
روش rl. setPrompt () سریع را تنظیم می کند که هر زمان که rl. prompt () خوانده شود ، برای خروجی نوشته می شود.
روش rl. getPrompt () سریع سریع استفاده شده توسط rl. prompt () را برمی گرداند.
روش rl. write () داده یا یک دنباله کلیدی را که توسط کلید به خروجی مشخص شده است ، می نویسد. آرگومان کلیدی فقط در صورتی پشتیبانی می شود که خروجی یک ترمینال متن TTY باشد. برای لیستی از ترکیبات کلیدی ، به KeyBindings Tty مراجعه کنید.
در صورت مشخص شدن کلید ، داده ها نادیده گرفته می شوند.
در صورت فراخوانی ، rl. write () در صورت مکث ، جریان ورودی را از سر می گیرد.
اگر InterfaceConstructor با تنظیم خروجی به صورت تهی یا نامشخص ایجاد شود ، داده ها و کلید نوشته نشده است.
روش RL. Write () داده ها را به ورودی رابط readline می نویسد که گویی توسط کاربر ارائه شده است.
Symbol. AsynCiterator پشتیبانی دیگر آزمایشی نیست.
اضافه شده در: v11. 4. 0 ، v10. 16. 0
یک شیء asynciterator ایجاد کنید که از طریق هر خط در جریان ورودی به عنوان یک رشته تکرار شود. این روش اجازه می دهد تا تکرار ناهمزمان از اشیاء بین سازنده برای انتظار باشد. حلقه ها
خطاهای موجود در جریان ورودی ارسال نمی شوند.
اگر حلقه با استراحت خاتمه یابد ، پرتاب یا بازگشت ، rl. close () فراخوانی می شود. به عبارت دیگر ، تکرار بیش از یک سازنده بین سازنده همیشه جریان ورودی را به طور کامل مصرف می کند.
عملکرد با API رویداد سنتی "خط" مطابقت ندارد. به جای آن برای برنامه های حساس به عملکرد از خط استفاده کنید.
readline. CreateInterface () پس از فراخوانی ، جریان ورودی را شروع می کند. داشتن عملیات ناهمزمان بین ایجاد رابط و تکرار ناهمزمان ممکن است منجر به خطوط از دست رفته شود.
ارزش همیشه یک رشته خواهد بود ، هرگز تعریف نشده است.
داده های ورودی فعلی که توسط گره پردازش می شوند.
این می تواند هنگام جمع آوری ورودی از یک جریان TTY برای بازیابی مقدار فعلی که تاکنون پردازش شده است ، استفاده شود ، قبل از اینکه رویداد خط منتشر شود. پس از انتشار رویداد خط ، این ویژگی یک رشته خالی خواهد بود.
توجه داشته باشید که اگر RL. Cursor نیز کنترل نشود ، تغییر مقدار در طول زمان اجرا ممکن است عواقب ناخواسته داشته باشد.
اگر از جریان TTY برای ورودی استفاده نمی کنید ، از رویداد "خط" استفاده کنید.
یک مورد استفاده احتمالی به شرح زیر است:
موقعیت مکان نما نسبت به rl. line.
این امر هنگام خواندن ورودی از یک جریان TTY ، در جایی که مکان نما فعلی در رشته ورودی قرار دارد ، ردیابی می کند. موقعیت مکان نما بخشی از رشته ورودی را که به عنوان ورودی اصلاح می شود ، تعیین می کند ، و همچنین ستونی که در آن سرپرست ترمینال ارائه می شود.
موقعیت واقعی مکان نما را در رابطه با رشته ورودی + رشته برمی گرداند. رشته های ورودی طولانی (بسته بندی) ، و همچنین چندین خط خط در محاسبات گنجانده شده است.
نمونه های کلاس readlinepromises. interface با استفاده از روش readlinepromises. createinterface () ساخته می شوند. هر نمونه با یک جریان قابل خواندن ورودی واحد و یک جریان قابل چاپ خروجی همراه است. جریان خروجی برای چاپ سریع برای ورودی کاربر که وارد جریان می شوند ، استفاده می شود و از جریان ورودی خوانده می شود.
روش RL. Question () با نوشتن آن به خروجی ، پرس و جو را نشان می دهد ، منتظر است تا ورودی کاربر در ورودی ارائه شود ، سپس از عملکرد پاسخ تماس با عبور از ورودی ارائه شده به عنوان اولین آرگومان استفاده می کند.
در صورت فراخوانی ، rl. question () در صورت مکث ، جریان ورودی را از سر می گیرد.
اگر readlinepromises. interface با تنظیم خروجی به صورت تهی یا نامشخص ایجاد شود ، پرس و جو نوشته نشده است.
اگر این سؤال پس از rl. close () خوانده شود ، یک قول رد شده را برمی گرداند.
استفاده از یک سقط جنین برای لغو یک سؤال.
روش rl. clearline () به لیست داخلی اقدام در انتظار عمل می افزاید که خط فعلی جریان مرتبط را در یک جهت مشخص شده توسط DIR مشخص می کند. برای دیدن تأثیر این روش ، با rl. commit () تماس بگیرید ، مگر اینکه AutoCommit: True به سازنده منتقل شود.
روش RL. ClearScreendown () به لیست داخلی اقدام در انتظار عمل می افزاید که جریان مرتبط را از موقعیت فعلی مکان نما به پایین پاک می کند. برای دیدن تأثیر این روش ، با rl. commit () تماس بگیرید ، مگر اینکه AutoCommit: True به سازنده منتقل شود.
روش rl. commit () تمام اقدامات معلق را به جریان مرتبط می فرستد و لیست داخلی اقدامات معلق را پاک می کند.
روش rl. cursorto () به لیست داخلی عمل در انتظار عمل می افزاید که مکان نما را به موقعیت مشخص شده در جریان مرتبط منتقل می کند. برای دیدن تأثیر این روش ، با rl. commit () تماس بگیرید ، مگر اینکه AutoCommit: True به سازنده منتقل شود.
روش RL. MoveCursor () به لیست داخلی عمل در انتظار عمل می افزاید که نشانگر را نسبت به موقعیت فعلی خود در جریان مرتبط حرکت می دهد. برای دیدن تأثیر این روش ، با rl. commit () تماس بگیرید ، مگر اینکه AutoCommit: True به سازنده منتقل شود.
روشهای RL. Rollback لیست داخلی اقدامات در حال انتظار را بدون ارسال آن به جریان مرتبط پاک می کند.
روش readlinePromises. CreateInterface () یک نمونه جدید readlinepromises. interface ایجاد می کند.
هنگامی که نمونه readlinepromises. interface ایجاد شد ، رایج ترین مورد گوش دادن به رویداد "خط" است:
اگر ترمینال برای این نمونه صحیح باشد ، اگر یک ویژگی خروجی را تعریف کند ، جریان خروجی بهترین سازگاری را بدست می آورد و یک رویداد "تغییر اندازه" را در خروجی منتشر می کند اگر ستون ها یا هنگامی که ستون ها تغییر می کنند (Process. StDout این کار را به طور خودکار انجام می دهد. یک tty است)
عملکرد Completer خط فعلی وارد شده توسط کاربر را به عنوان آرگومان می گیرد و یک آرایه را با 2 مدخل برمی گرداند:
به عنوان مثال: [[subtr1 ، subtr2 ،.] ، OriginalSubstring].
عملکرد Completer همچنین می تواند A را برگرداند ، یا ناهمزمان باشد:
کلاس readline. interface اکنون از رابط به ارث می برد.
اضافه شده در: v0. 1. 104
نمونه های کلاس readline. interface با استفاده از روش readline. createinterface () ساخته می شوند. هر نمونه با یک جریان قابل خواندن ورودی واحد و یک جریان قابل چاپ خروجی همراه است. جریان خروجی برای چاپ سریع برای ورودی کاربر که وارد جریان می شوند ، استفاده می شود و از جریان ورودی خوانده می شود.
روش RL. Question () با نوشتن آن به خروجی ، پرس و جو را نشان می دهد ، منتظر است تا ورودی کاربر در ورودی ارائه شود ، سپس از عملکرد پاسخ تماس با عبور از ورودی ارائه شده به عنوان اولین آرگومان استفاده می کند.
در صورت فراخوانی ، rl. question () در صورت مکث ، جریان ورودی را از سر می گیرد.
اگر readline. Interface با خروجی تهی یا تعریف نشده ایجاد شده باشد، پرس و جو نوشته نمی شود.
تابع callback ارسال شده به rl. question() از الگوی معمول پذیرش یک شی خطا یا null به عنوان اولین آرگومان پیروی نمی کند. فراخوانی با پاسخ ارائه شده به عنوان تنها آرگومان فراخوانی می شود.
اگر rl. question() را بعد از rl. close() فراخوانی کنید، خطایی ایجاد می شود.
استفاده از AbortController برای لغو یک سوال.
ارسال یک تماس نامعتبر به آرگومان پاسخ به تماس، اکنون به جای ERR_INVALID_CALLBACK، ERR_INVALID_ARG_TYPE را نشان می دهد.
مقدار بازگشت و برگشت write() جریان نمایش داده می شود.
متد readline. clearLine() خط فعلی جریان TTY داده شده را در جهت مشخصی که توسط dir مشخص شده است پاک می کند.
ارسال یک تماس نامعتبر به آرگومان پاسخ به تماس، اکنون به جای ERR_INVALID_CALLBACK، ERR_INVALID_ARG_TYPE را نشان می دهد.
مقدار بازگشت و برگشت write() جریان نمایش داده می شود.
متد readline. clearScreenDown() جریان TTY داده شده را از موقعیت فعلی مکان نما به پایین پاک می کند.
اکنون گزینه سیگنال پشتیبانی می شود.
گزینه تاریخچه اکنون پشتیبانی می شود.
اکنون گزینه tabSize پشتیبانی می شود.
حداکثر محدودیت گزینه crlfDelay را حذف کنید.
گزینه crlfDelay اکنون پشتیبانی می شود.
اکنون گزینه prompt پشتیبانی می شود.
گزینه historySize اکنون می تواند 0 باشد.
روش readline. createinterface () یک نمونه جدید readline. interface ایجاد می کند.
پس از ایجاد نمونه readline. interface ، رایج ترین مورد گوش دادن به رویداد "خط" است:
اگر ترمینال برای این نمونه صحیح باشد ، اگر یک ویژگی خروجی را تعریف کند ، جریان خروجی بهترین سازگاری را بدست می آورد و یک رویداد "تغییر اندازه" را در خروجی منتشر می کند اگر ستون ها یا هنگامی که ستون ها تغییر می کنند (Process. StDout این کار را به طور خودکار انجام می دهد. یک tty است)
هنگام ایجاد یک readline. interface با استفاده از stdin به عنوان ورودی ، برنامه تا زمانی که یک شخصیت EOF دریافت نکند ، خاتمه نمی یابد. برای خروج بدون انتظار برای ورودی کاربر ، process. stdin. unref () تماس بگیرید.
عملکرد Completer خط فعلی وارد شده توسط کاربر را به عنوان آرگومان می گیرد و یک آرایه را با 2 مدخل برمی گرداند:
به عنوان مثال: [[subtr1 ، subtr2 ،.] ، OriginalSubstring].
اگر دو آرگومان را بپذیرد ، عملکرد Completer را می توان به صورت ناهمزمان نامید:
ارسال یک تماس نامعتبر به آرگومان پاسخ به تماس، اکنون به جای ERR_INVALID_CALLBACK، ERR_INVALID_ARG_TYPE را نشان می دهد.
مقدار بازگشت و برگشت write() جریان نمایش داده می شود.
روش readline. cursorto () مکان نما را به موقعیت مشخص شده در یک جریان TTY معین منتقل می کند.
ارسال یک تماس نامعتبر به آرگومان پاسخ به تماس، اکنون به جای ERR_INVALID_CALLBACK، ERR_INVALID_ARG_TYPE را نشان می دهد.
مقدار بازگشت و برگشت write() جریان نمایش داده می شود.
روش readline. movecursor () مکان نما را نسبت به موقعیت فعلی خود در یک جریان TTY معین حرکت می دهد.
روش readline. emitkeypressevents () باعث می شود که جریان قابل خواندن داده شده شروع به انتشار رویدادهای "keypress" مربوط به ورودی دریافت کند.
به صورت اختیاری ، رابط یک نمونه readline. interface را مشخص می کند که در هنگام شناسایی ورودی کپی ، از آن استفاده می شود.
اگر جریان TTY باشد ، باید در حالت خام باشد.
اگر ورودی یک ترمینال باشد ، به طور خودکار توسط هر نمونه readline در ورودی آن فراخوانی می شود. بستن نمونه readline مانع از انتشار رویدادهای "کلید" نمی شود.
مثال زیر استفاده از کلاس readline. interface را برای پیاده سازی یک رابط خط فرمان کوچک نشان می دهد:
یک مورد استفاده مشترک برای readline مصرف یک فایل ورودی یک خط در یک زمان است. ساده ترین راه برای انجام این کار ، استفاده از API fs. readStream و همچنین A برای انتظار است. حلقه:
از طرف دیگر ، می توان از رویداد "خط" استفاده کرد:
در حال حاضر ، برای انتظار. حلقه می تواند کمی کندتر باشد. اگر Async / Await جریان و سرعت هر دو ضروری باشند ، می توان از یک روش مختلط استفاده کرد:
برچسب :
نویسنده : مریم کاویانی
بازدید : <-PostHit->