الفرق بين المراجعتين لصفحة: «Node.js/v8»
Khaled-yassin (نقاش | مساهمات) لا ملخص تعديل |
ط استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}' |
||
(3 مراجعات متوسطة بواسطة مستخدم واحد آخر غير معروضة) | |||
سطر 1: | سطر 1: | ||
الوحدة V8 | <noinclude>{{DISPLAYTITLE: الوحدة V8 في Node.js}}</noinclude> | ||
تعرض الوحدة v8 واجهات برمجة التطبيقات (API) الخاصة بإصدار V8 المضمنة في برمجية Node.js. ويمكن الوصول إليها باستخدام:<syntaxhighlight lang="javascript"> | تعرض الوحدة v8 واجهات برمجة التطبيقات (API) الخاصة بإصدار V8 المضمنة في برمجية Node.js. ويمكن الوصول إليها باستخدام:<syntaxhighlight lang="javascript"> | ||
سطر 79: | سطر 79: | ||
== <code>v8.getHeapStatistics()</code> [https://github.com/nodejs/node/blob/cdb359840c9537e460b1bf0536fc36ec5fe2db2d/lib/v8.js#L74 <nowiki>[المصدر]</nowiki>] == | == <code>v8.getHeapStatistics()</code> [https://github.com/nodejs/node/blob/cdb359840c9537e460b1bf0536fc36ec5fe2db2d/lib/v8.js#L74 <nowiki>[المصدر]</nowiki>] == | ||
سجل التغييرات | |||
{| class="wikitable" | |||
!الإصدار | |||
!التغييرات | |||
|- | |||
|v7.5.0 | |||
|دعم القيم التي تتجاوز نطاق الأعداد الصحيح بدون إشارة 32 بت. | |||
|- | |||
|v7.2.0 | |||
|إضافة <code>malloced_memory</code> و <code>peak_malloced_memory</code> و <code>does_zap_garbage</code>. | |||
|- | |||
|v1.0.0 | |||
|أُضيف مع الإصدار: v1.0.0 | |||
|} | |||
• القيمة المُعادة: من النوع <code>[[JavaScript/Object|<Object>]]</code>. | • القيمة المُعادة: من النوع <code>[[JavaScript/Object|<Object>]]</code>. | ||
سطر 134: | سطر 148: | ||
مؤشر الاستقرار: 1 - تجريبي | مؤشر الاستقرار: 1 - تجريبي | ||
توفر واجهة تطبيقات التسلسل وسيلة لتسلسل قيم JavaScript بطريقة متوافقة مع خوارزمية استنساخ HTML الهيكلية. ويتوافق التنسيق مع الإصدارات السابقة (أي آمن لتخزينه علي القرص). | توفر واجهة تطبيقات التسلسل وسيلة لتسلسل قيم JavaScript بطريقة متوافقة مع [https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm خوارزمية استنساخ HTML الهيكلية]. ويتوافق التنسيق مع الإصدارات السابقة (أي آمن لتخزينه علي القرص). | ||
لا تزال هذه الـ API قيد التطوير، والتغييرات قد تحدث حتى إزالة هذا التحذير (بما في ذلك التغييرات غير المتوافقة مع API أو تنسيق الأسلاك). | لا تزال هذه الـ API قيد التطوير، والتغييرات قد تحدث حتى إزالة هذا التحذير (بما في ذلك التغييرات غير المتوافقة مع API أو تنسيق الأسلاك). | ||
=== <code>v8.serialize(value)</code> [المصدر] === | === <code>v8.serialize(value)</code> [https://github.com/nodejs/node/blob/cdb359840c9537e460b1bf0536fc36ec5fe2db2d/lib/v8.js#L203 <nowiki>[المصدر]</nowiki>] === | ||
أُضيف مع الإصدار: v8.0.0. | أُضيف مع الإصدار: v8.0.0. | ||
• value من | • <code>value</code> من أي نوع من الأنواع <code><any></code>. | ||
• القيمة المُعادة: من النوع <Buffer>. | • القيمة المُعادة: من النوع <code>[[Node.js/buffer|<Buffer>]]</code>. | ||
يستخدم <code>DefaultSerializer</code> في تسلسل القيمة value إلى داخل المخزن المؤقت. | يستخدم <code>DefaultSerializer</code> في تسلسل القيمة value إلى داخل المخزن المؤقت. | ||
سطر 150: | سطر 164: | ||
أُضيف مع الإصدار: v8.0.0. | أُضيف مع الإصدار: v8.0.0. | ||
• buffer من النوع <Buffer> | <Uint8Array>وهو مخزن مؤقت يُعاد من قِبَل serialize(). | • <code>buffer</code> من النوع <code>[[Node.js/buffer|<Buffer>]]</code> | <code>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array <Uint8Array>]</code>وهو مخزن مؤقت يُعاد من قِبَل <code>serialize()</code>. | ||
يستخدم <code>DefaultDeserializer</code> مع الخيارات الافتراضية لقراءة قيمة JS من المخزن المؤقت. | يستخدم <code>DefaultDeserializer</code> مع الخيارات الافتراضية لقراءة قيمة JS من المخزن المؤقت. | ||
سطر 158: | سطر 172: | ||
==== <code>Serializer()</code> الجديد ==== | ==== <code>Serializer()</code> الجديد ==== | ||
إنشاء كائن serializer جديد. | إنشاء كائن <code>serializer</code> جديد. | ||
==== <code>serializer.writeHeader()</code> ==== | ==== <code>serializer.writeHeader()</code> ==== | ||
يُكوِّن الترويسة ويكتبها، والتي تتضمن إصدار تنسيق التسلسل. | |||
==== <code>serializer.writeValue(value)</code> ==== | ==== <code>serializer.writeValue(value)</code> ==== | ||
• value من | • <code>value</code> من أي نوع من الأنواع <code><any></code>. | ||
يُسلسل قيمة JavaScript ويضيف التمثيل المتسلسل إلى المخزن المؤقت الداخلي. | يُسلسل قيمة JavaScript ويضيف التمثيل المتسلسل إلى المخزن المؤقت الداخلي. | ||
ويُطلق خطأ إذا لم يتمكن من إجراء تسلسل القيمة value. | ويُطلق خطأ إذا لم يتمكن من إجراء تسلسل القيمة <code>value</code>. | ||
==== <code>serializer.releaseBuffer()</code> ==== | ==== <code>serializer.releaseBuffer()</code> ==== | ||
• القيمة المُعادة: من النوع <Buffer>. | • القيمة المُعادة: من النوع <code>[[Node.js/buffer|<Buffer>]]</code>. | ||
يُعيد المخزن المؤقت الداخلي المخزون. لا يجب استخدام هذا المُسلسِل إذا حدث تفريغ للمخزن المؤقت. استدعاء هذا التابع يؤدي إلى سلوك غير مُعرَّف إذا فشلت عملية الكتابة السابقة. | يُعيد المخزن المؤقت الداخلي المخزون. لا يجب استخدام هذا المُسلسِل إذا حدث تفريغ للمخزن المؤقت. استدعاء هذا التابع يؤدي إلى سلوك غير مُعرَّف إذا فشلت عملية الكتابة السابقة. | ||
==== serializer.transferArrayBuffer(id, arrayBuffer) ==== | ==== <code>serializer.transferArrayBuffer(id, arrayBuffer)</code> ==== | ||
• id من النوع <code>[[JavaScript/Number|<integer>]]</code> وهو عدد صحيح 32 بت بدون إشارة. | • <code>id</code> من النوع <code>[[JavaScript/Number|<integer>]]</code> وهو عدد صحيح 32 بت بدون إشارة. | ||
• arrayBuffer من النوع <ArrayBuffer> وهو مثيل لـ ArrayBuffer. | • <code>arrayBuffer</code> من النوع <code>[[Node.js/ArrayBuffer|<ArrayBuffer>]]</code> وهو مثيل لـ <code>ArrayBuffer</code>. | ||
يشير إلى ArrayBuffer كما لو كانت محتوياته قد نُقلت خارج النطاق. ويمرر ArrayBuffer المقابل في سياق إلغاء التسلسل إلى التابع deserializer.transferArrayBuffer(). | يشير إلى <code>ArrayBuffer</code> كما لو كانت محتوياته قد نُقلت خارج النطاق. ويمرر <code>ArrayBuffer</code> المقابل في سياق إلغاء التسلسل إلى التابع <code>deserializer.transferArrayBuffer()</code>. | ||
==== serializer.writeUint32(value) ==== | ==== <code>serializer.writeUint32(value)</code> ==== | ||
• value من النوع<code>[[JavaScript/Number|<integer>]]</code>. | • value من النوع<code>[[JavaScript/Number|<integer>]]</code>. | ||
كتابة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل التابع serializer._writeHostObject() المخصص. | كتابة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل التابع <code>serializer._writeHostObject()</code> المخصص. | ||
==== serializer.writeUint64(hi, lo) ==== | ==== <code>serializer.writeUint64(hi, lo)</code> ==== | ||
• hi من النوع <code>[[JavaScript/Number|<integer>]]</code>. | • hi من النوع <code>[[JavaScript/Number|<integer>]]</code>. | ||
• lo من النوع <code>[[JavaScript/Number|<integer>]]</code>. | • lo من النوع <code>[[JavaScript/Number|<integer>]]</code>. | ||
كتابة عدد صحيح 64 بت خام بدون إشارة، مقسمة إلى جزأين؛ علوي وسفلي كل منهما 32 بت. للاستخدام داخل التابع serializer._writeHostObject() المخصص. | كتابة عدد صحيح 64 بت خام بدون إشارة، مقسمة إلى جزأين؛ علوي وسفلي كل منهما 32 بت. للاستخدام داخل التابع <code>serializer._writeHostObject()</code> المخصص. | ||
==== <code>serializer.writeDouble(value)</code> ==== | ==== <code>serializer.writeDouble(value)</code> ==== | ||
• value من النوع <code>[[JavaScript/Number|<number>]]</code>. | • value من النوع <code>[[JavaScript/Number|<number>]]</code>. | ||
كتابة قيمة من النوع number. للاستخدام داخل التابع serializer._writeHostObject() المخصص. | كتابة قيمة من النوع <code>number</code>. للاستخدام داخل التابع <code>serializer._writeHostObject()</code> المخصص. | ||
==== <code>serializer.writeRawBytes(buffer)</code> ==== | ==== <code>serializer.writeRawBytes(buffer)</code> ==== | ||
<nowiki> </nowiki><code>buffer</code> من النوع <code>[[Node.js/buffer|<Buffer>]]</code> | <code>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array <Uint8Array>]</code>كتابه وحدات البايت الخام في المخزن المؤقت الداخلي للمُسلسِل. سيتطلب إلغاء التسلسل طريقة لحساب طول المخزن المؤقت. للاستخدام داخل التابع <code>serializer._writeHostObject()</code> المخصص. | |||
كتابه وحدات البايت الخام في المخزن المؤقت الداخلي للمُسلسِل. سيتطلب إلغاء التسلسل طريقة لحساب طول المخزن المؤقت. للاستخدام داخل التابع serializer._writeHostObject() المخصص. | |||
==== serializer._writeHostObject(object) ==== | ==== <code>serializer._writeHostObject(object)</code> ==== | ||
• object من النوع <code>[[JavaScript/Object|<Object>]]</code>. | • <code>object</code> من النوع <code>[[JavaScript/Object|<Object>]]</code>. | ||
ويُستدعى هذا التابع لكتابة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل | ويُستدعى هذا التابع لكتابة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل <code>object</code>، يجب إجراء استثناء مناسب. | ||
هذا التابع غير موجود ضمن الصنف Serializer نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | هذا التابع غير موجود ضمن الصنف <code>Serializer</code> نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | ||
==== serializer._getDataCloneError(message) ==== | ==== <code>serializer._getDataCloneError(message)</code> ==== | ||
• message من النوع <code>[[JavaScript/String|<string>]]</code>. | • <code>message</code> من النوع <code>[[JavaScript/String|<string>]]</code>. | ||
يستدعى هذا التابع لإنشاء كائنات الأخطاء التي ستنطلق عندما لا يمكن استنساخ كائن. | يستدعى هذا التابع لإنشاء كائنات الأخطاء التي ستنطلق عندما لا يمكن استنساخ كائن. | ||
يعيد هذا التابع قيمة افتراضية إلى مُنشئ الخطأ Error ويمكن تجاوزه في الأصناف الفرعية. | يعيد هذا التابع قيمة افتراضية إلى مُنشئ الخطأ <code>[[Node.js/error|Error]]</code> ويمكن تجاوزه في الأصناف الفرعية. | ||
==== serializer._getSharedArrayBufferId(sharedArrayBuffer) ==== | ==== <code>serializer._getSharedArrayBufferId(sharedArrayBuffer)</code> ==== | ||
• sharedArrayBuffer من النوع <SharedArrayBuffer> | • <code>sharedArrayBuffer</code> من النوع <code>[[Node.js/SharedArrayBuffer|<SharedArrayBuffer>]]</code>. | ||
يُستدعى هذا التابع عند إجراء المُسلسِل عملية تسلسل لكائن SharedArrayBuffer. يجب أن يعيد مُعرِّف ID من النوع عدد صحيح بدون إشارة 32 بت للكائن، وذلك باستخدام نفس المعرف إذا كان قد سبق إجراء تسلسل للوسيط SharedArrayBuffer. عند إلغاء التسلسل، سيمرر هذا المعرف إلى deserializer.transferArrayBuffer(). | يُستدعى هذا التابع عند إجراء المُسلسِل عملية تسلسل لكائن <code>SharedArrayBuffer</code>. يجب أن يعيد مُعرِّف ID من النوع عدد صحيح بدون إشارة 32 بت للكائن، وذلك باستخدام نفس المعرف إذا كان قد سبق إجراء تسلسل للوسيط <code>SharedArrayBuffer</code>. عند إلغاء التسلسل، سيمرر هذا المعرف إلى <code>deserializer.transferArrayBuffer()</code>. | ||
إذا تعذر إجراء تسلسل الكائن، يجب عمل استثناء. | إذا تعذر إجراء تسلسل الكائن، يجب عمل استثناء. | ||
هذا التابع غير موجود ضمن الصنف Serializer نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | هذا التابع غير موجود ضمن الصنف <code>Serializer</code> نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | ||
==== serializer._setTreatArrayBufferViewsAsHostObjects(flag) ==== | ==== <code>serializer._setTreatArrayBufferViewsAsHostObjects(flag)</code> ==== | ||
• flag من النوع <boolean>. القيمة الافتراضية: false. | • <code>flag</code> من النوع <code>[[JavaScript/Boolean|<boolean>]]</code>. القيمة الافتراضية: <code>false</code>. | ||
يحدد ما إذا كان سيُتعامل مع كائنات TypedArray و DataView ككائنات مضيفة، أي تمريرها إلى التابع serializer._writeHostObject(). | يحدد ما إذا كان سيُتعامل مع كائنات <code>TypedArray</code> و <code>DataView</code> ككائنات مضيفة، أي تمريرها إلى التابع <code>serializer._writeHostObject()</code>. | ||
=== الصنف: v8.Deserializer === | === الصنف: <code>v8.Deserializer</code> === | ||
أُضيف مع الإصدار: v8.0.0. | أُضيف مع الإصدار: v8.0.0. | ||
==== Deserializer(buffer) الجديد ==== | ==== <code>Deserializer(buffer)</code> الجديد ==== | ||
• buffer من النوع <Buffer> | <Uint8Array>وهو مخزن مؤقت يُعاد من قِبَل serializer.releaseBuffer(). | • <code>buffer</code> من النوع <code>[[Node.js/buffer|<Buffer>]]</code> | <code>[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Uint8Array <Uint8Array>]</code>وهو مخزن مؤقت يُعاد من قِبَل <code>serializer.releaseBuffer()</code>. | ||
إنشاء كائن Deserializer جديد. | إنشاء كائن <code>Deserializer</code> جديد. | ||
==== deserializer.readHeader() ==== | ==== <code>deserializer.readHeader()</code> ==== | ||
يقرأ ويتحقق من الترويسة (بما في ذلك تنسيق الإصدار). على سبيل المثال، قد يرفض تنسيق أسلاك غير صالح أو غير مدعوم. في هذه الحالة، سينطلق Error. | يقرأ ويتحقق من الترويسة (بما في ذلك تنسيق الإصدار). على سبيل المثال، قد يرفض تنسيق أسلاك غير صالح أو غير مدعوم. في هذه الحالة، سينطلق <code>Error</code>. | ||
==== deserializer.readValue() ==== | ==== <code>deserializer.readValue()</code> ==== | ||
إلغاء تسلسل قيمة JavaScript من المخزن المؤقت وإعادته. | إلغاء تسلسل قيمة JavaScript من المخزن المؤقت وإعادته. | ||
==== deserializer.transferArrayBuffer(id, arrayBuffer) ==== | ==== <code>deserializer.transferArrayBuffer(id, arrayBuffer)</code> ==== | ||
• id من النوع <code>[[JavaScript/Number|<integer>]]</code> وهو عدد صحيح 32 بت بدون إشارة. | • id من النوع <code>[[JavaScript/Number|<integer>]]</code> وهو عدد صحيح 32 بت بدون إشارة. | ||
• arrayBuffer من النوع <ArrayBuffer> | <SharedArrayBuffer> وهي مثيل لـ ArrayBuffer. | • <code>arrayBuffer</code> من النوع [[Node.js/ArrayBuffer|<ArrayBuffer>]] | <code>[[Node.js/SharedArrayBuffer|<SharedArrayBuffer>]]</code> وهي مثيل لـ <code>ArrayBuffer</code>. | ||
يشير إلى ArrayBuffer كما لو كانت محتوياته قد نُقلت خارج النطاق. تمرير arraybuffer المقابل في سياق التسلسل للتابع serializer.transferArrayBuffer() (أو إعادة المعرف id من التابع serializer._getSharedArrayBufferId() في حالات SharedArrayBuffer). | يشير إلى <code>ArrayBuffer</code> كما لو كانت محتوياته قد نُقلت خارج النطاق. تمرير <code>arraybuffer</code> المقابل في سياق التسلسل للتابع <code>serializer.transferArrayBuffer()</code> (أو إعادة المعرف <code>id</code> من التابع <code>serializer._getSharedArrayBufferId()</code> في حالات <code>SharedArrayBuffer</code>). | ||
==== deserializer.getWireFormatVersion() ==== | ==== <code>deserializer.getWireFormatVersion()</code> ==== | ||
• القيمة المُعادة: من النوع <code>[[JavaScript/Number|<integer>]]</code>. | • القيمة المُعادة: من النوع <code>[[JavaScript/Number|<integer>]]</code>. | ||
يقرأ إصدار تنسيق الأسلاك الأساسية. غالبًا ما يفيد في قراءة الشيفرات القديمة من الإصدارات القديمة لتنسيق الأسلاك. قد لا يستدعى قبل .readHeader(). | يقرأ إصدار تنسيق الأسلاك الأساسية. غالبًا ما يفيد في قراءة الشيفرات القديمة من الإصدارات القديمة لتنسيق الأسلاك. قد لا يستدعى قبل <code>.readHeader()</code>. | ||
==== deserializer.readUint32() ==== | ==== <code>deserializer.readUint32()</code> ==== | ||
• القيمة المُعادة: من النوع <code>[[JavaScript/Number|<integer>]]</code>. | • القيمة المُعادة: من النوع <code>[[JavaScript/Number|<integer>]]</code>. | ||
قراءة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject(). | قراءة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل أحد تخصيصات التابع <code>deserializer._readHostObject()</code>. | ||
==== deserializer.readUint64() ==== | ==== <code>deserializer.readUint64()</code> ==== | ||
• القيمة المُعادة: من النوع <integer[]>. | • القيمة المُعادة: من النوع <code>[[JavaScript/Number|<integer[]>]]</code>. | ||
قراءة عدد صحيح 64 بت خام بدون إشارة وإعادته كمصفوفة [hi, lo] تحتوي على عنصرين 32 بت بدون إشارة. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject(). | قراءة عدد صحيح 64 بت خام بدون إشارة وإعادته كمصفوفة <code>[hi, lo]</code> تحتوي على عنصرين 32 بت بدون إشارة. للاستخدام داخل أحد تخصيصات التابع <code>deserializer._readHostObject()</code>. | ||
==== <code>deserializer.readDouble()</code> ==== | ==== <code>deserializer.readDouble()</code> ==== | ||
• القيمة المُعادة: من النوع <code>[[JavaScript/Number|<number>]]</code>. | • القيمة المُعادة: من النوع <code>[[JavaScript/Number|<number>]]</code>. | ||
قراءة قيمة من النوع number. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject(). | قراءة قيمة من النوع <code>number</code>. للاستخدام داخل أحد تخصيصات التابع <code>deserializer._readHostObject()</code>. | ||
==== <code>deserializer.readRawBytes(length)</code> [المصدر] ==== | ==== <code>deserializer.readRawBytes(length)</code> [https://github.com/nodejs/node/blob/cdb359840c9537e460b1bf0536fc36ec5fe2db2d/lib/v8.js#L116 <nowiki>[المصدر]</nowiki>] ==== | ||
• length من النوع <code>[[JavaScript/Number|<integer>]]</code>. | • <code>length</code> من النوع <code>[[JavaScript/Number|<integer>]]</code>. | ||
• القيمة المُعادة: من النوع <Buffer>. | • القيمة المُعادة: من النوع <code>[[Node.js/buffer|<Buffer>]]</code>. | ||
قراءة وحدات البايت الخام في المخزن المؤقت الداخلي لماسح التسلسل. يجب أن يقابل المعاملُ length طولَ المخزن المؤقت الذي سبق تمريره إلى التابع serializer.writeRawBytes(). للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject(). | قراءة وحدات البايت الخام في المخزن المؤقت الداخلي لماسح التسلسل. يجب أن يقابل المعاملُ <code>length</code> طولَ المخزن المؤقت الذي سبق تمريره إلى التابع <code>serializer.writeRawBytes()</code>. للاستخدام داخل أحد تخصيصات التابع <code>deserializer._readHostObject()</code>. | ||
==== deserializer._readHostObject() ==== | ==== <code>deserializer._readHostObject()</code> ==== | ||
ويُستدعى هذا التابع لقراءة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل البيانات، يجب إجراء استثناء مناسب. | ويُستدعى هذا التابع لقراءة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل البيانات، يجب إجراء استثناء مناسب. | ||
هذا التابع غير موجود ضمن الصنف Deserializer نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | هذا التابع غير موجود ضمن الصنف <code>Deserializer</code> نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية. | ||
=== الصنف: v8.DefaultSerializer === | === الصنف: <code>v8.DefaultSerializer</code> === | ||
أُضيف مع الإصدار: v8.0.0. | أُضيف مع الإصدار: v8.0.0. | ||
صنف فرعي من Serializer الذي يُسلسل TypedArray (في Buffer معين) وكائنات DataView ككائنات مضيفة، ويخزن فقط جزء من ArrayBuffer الأساسية التي كانت تشير إليه. | صنف فرعي من <code>Serializer</code> الذي يُسلسل <code>TypedArray</code> (في <code>[[Node.js/buffer|Buffer]]</code> معين) وكائنات <code>DataView</code> ككائنات مضيفة، ويخزن فقط جزء من <code>ArrayBuffer</code> الأساسية التي كانت تشير إليه. | ||
=== الصنف: v8.DefaultDeserializer === | === الصنف: <code>v8.DefaultDeserializer</code> === | ||
أُضيف مع الإصدار: v8.0.0. | أُضيف مع الإصدار: v8.0.0. | ||
صنف فرعي من Deserializer ويقابل التنسيق المكتوب بواسطة DefaultSerializer. | صنف فرعي من <code>Deserializer</code> ويقابل التنسيق المكتوب بواسطة <code>DefaultSerializer</code>. | ||
== مصادر == | == مصادر == | ||
* [https://nodejs.org/dist/latest-v10.x/docs/api/v8.html#v8_serialization_api صفحة الوحدة V8 في توثيق Node.js الرسمي]. | * [https://nodejs.org/dist/latest-v10.x/docs/api/v8.html#v8_serialization_api صفحة الوحدة V8 في توثيق Node.js الرسمي]. | ||
[[تصنيف:Node.js|{{SUBPAGENAME}}]] |
المراجعة الحالية بتاريخ 11:18، 23 أكتوبر 2018
تعرض الوحدة v8 واجهات برمجة التطبيقات (API) الخاصة بإصدار V8 المضمنة في برمجية Node.js. ويمكن الوصول إليها باستخدام:
const v8 = require('v8');
وقد يتعرض كلٌ من واجهات برمجة التطبيقات والتنفيذ للتغيير في أي وقت.
v8.cachedDataVersionTag()
أُضيف مع الإصدار: v8.0.0.
• القيمة المُعادة: من النوع <integer>
.
يُعيد عدد صحيح يمثل "وسم الإصدار" مشتق من الإصدار V8، ورايات سطر الأوامر وميزات المعالج CPU المكتشفة. وهو يفيد في تحديد ما إذا كان المخزن المؤقت لـ cacheddata
الخاص بـ vm.Script
متوافق مع مثيل V8 هذا.
v8.getHeapSpaceStatistics()
[المصدر]
سجل التغييرات
الإصدار | التغييرات |
---|---|
v7.5.0 | دعم القيم التي تتجاوز نطاق الأعداد الصحيح بدون إشارة 32 بت. |
v6.0.0 | أُضيف مع الإصدار: v6.0.0. |
• القيمة المُعادة: من النوع <Object[]>
.
يُعيد إحصائيات حول مساحات تكدس V8، أي المقاطع التي تشكل تكدس V8. لا يمكن ضمان ترتيب مساحات تكدس، ولا توفرها إذ تتغير الإحصاءات المُعادة من دالة v8.getHeapSpaceStatistics
من أحد إصدارات V8 إلى الإصدار التالي.
القيمة المُعادة هي مصفوفة من الكائنات التي تحتوي على الخصائص التالية:
• space_name
من النوع <string>
.
• space_size
من النوع <number>
.
• space_used_size
من النوع <number>
.
• space_available_size
من النوع <number>
.
• physical_space_size
من النوع <number>
.
[
{
"space_name": "new_space",
"space_size": 2063872,
"space_used_size": 951112,
"space_available_size": 80824,
"physical_space_size": 2063872
},
{
"space_name": "old_space",
"space_size": 3090560,
"space_used_size": 2493792,
"space_available_size": 0,
"physical_space_size": 3090560
},
{
"space_name": "code_space",
"space_size": 1260160,
"space_used_size": 644256,
"space_available_size": 960,
"physical_space_size": 1260160
},
{
"space_name": "map_space",
"space_size": 1094160,
"space_used_size": 201608,
"space_available_size": 0,
"physical_space_size": 1094160
},
{
"space_name": "large_object_space",
"space_size": 0,
"space_used_size": 0,
"space_available_size": 1490980608,
"physical_space_size": 0
}
]
v8.getHeapStatistics()
[المصدر]
سجل التغييرات
الإصدار | التغييرات |
---|---|
v7.5.0 | دعم القيم التي تتجاوز نطاق الأعداد الصحيح بدون إشارة 32 بت. |
v7.2.0 | إضافة malloced_memory و peak_malloced_memory و does_zap_garbage .
|
v1.0.0 | أُضيف مع الإصدار: v1.0.0 |
• القيمة المُعادة: من النوع <Object>
.
يُعيد كائن بالخصائص التالية:
• total_heap_size
من النوع <number>
.
• total_heap_size_executable
من النوع <number>
.
• total_physical_size
من النوع <number>
.
• total_available_size
من النوع <number>
.
• used_heap_size
من النوع <number>
.
• heap_size_limit
من النوع <number>
.
• malloced_memory
من النوع <number>
.
• peak_malloced_memory
من النوع <number>
.
• does_zap_garbage
من النوع <number>
.
does_zap_garbage
من النوع Boolean بقيمة 0/1، والذي يدل علي ما إذا كان الخيار --zap_code_space
مُفعَِّل أم لا. وهذا يجعل V8 يعيد الكتابة فوق المهملات المكدسة بنمط بت. تتضخم بصمة RSS (مجموعة الذاكرة المُقِيمة) لأنها تمس باستمرار جميع صفحات المكدس والتي تجعلها اقل عرضة للمبادلة من قِبَل نظام التشغيل.
{
total_heap_size: 7326976,
total_heap_size_executable: 4194304,
total_physical_size: 7326976,
total_available_size: 1152656,
used_heap_size: 3476208,
heap_size_limit: 1535115264,
malloced_memory: 16384,
peak_malloced_memory: 1127496,
does_zap_garbage: 0
}
v8.setFlagsFromString(flags)
[المصدر]
أضيف مع الإصدار: v1.0.0.
• flags
من النوع <string>
.
يمكن استخدام التابع v8.setFlagsFromString()
لتعيين رايات سطر الأوامر V8 برمجيًا. وينبغي استخدام هذا التابع بحرص. فقد يؤدي تغيير الإعدادات بعد بدء VM إلى سلوك غير متوقع، بما في ذلك الأعطال وفقدان البيانات؛ أو قد لا تفعل شيئًا ببساطة.
قد تُحدد خيارات v8 المتوفرة لإصدار Node.js عن طريق تشغيل node --v8-options
. وتوجد هنا قائمة غير رسمية من الخيارات وتأثيرها مُصانة من مجتمع البرمجة.
الاستخدام:
// طباعة أحداث GC على stdout لمدة دقيقة واحدة.
const v8 = require('v8');
v8.setFlagsFromString('--trace_gc');
setTimeout(function() { v8.setFlagsFromString('--notrace_gc'); }, 60e3);
واجهة تطبيقات التسلسل (Serialization API)
مؤشر الاستقرار: 1 - تجريبي
توفر واجهة تطبيقات التسلسل وسيلة لتسلسل قيم JavaScript بطريقة متوافقة مع خوارزمية استنساخ HTML الهيكلية. ويتوافق التنسيق مع الإصدارات السابقة (أي آمن لتخزينه علي القرص).
لا تزال هذه الـ API قيد التطوير، والتغييرات قد تحدث حتى إزالة هذا التحذير (بما في ذلك التغييرات غير المتوافقة مع API أو تنسيق الأسلاك).
v8.serialize(value)
[المصدر]
أُضيف مع الإصدار: v8.0.0.
• value
من أي نوع من الأنواع <any>
.
• القيمة المُعادة: من النوع <Buffer>
.
يستخدم DefaultSerializer
في تسلسل القيمة value إلى داخل المخزن المؤقت.
v8.deserialize(buffer)
[المصدر]
أُضيف مع الإصدار: v8.0.0.
• buffer
من النوع <Buffer>
| <Uint8Array>
وهو مخزن مؤقت يُعاد من قِبَل serialize()
.
يستخدم DefaultDeserializer
مع الخيارات الافتراضية لقراءة قيمة JS من المخزن المؤقت.
الصنف: v8.Serializer
أُضيف مع الإصدار: v8.0.0.
Serializer()
الجديد
إنشاء كائن serializer
جديد.
serializer.writeHeader()
يُكوِّن الترويسة ويكتبها، والتي تتضمن إصدار تنسيق التسلسل.
serializer.writeValue(value)
• value
من أي نوع من الأنواع <any>
.
يُسلسل قيمة JavaScript ويضيف التمثيل المتسلسل إلى المخزن المؤقت الداخلي.
ويُطلق خطأ إذا لم يتمكن من إجراء تسلسل القيمة value
.
serializer.releaseBuffer()
• القيمة المُعادة: من النوع <Buffer>
.
يُعيد المخزن المؤقت الداخلي المخزون. لا يجب استخدام هذا المُسلسِل إذا حدث تفريغ للمخزن المؤقت. استدعاء هذا التابع يؤدي إلى سلوك غير مُعرَّف إذا فشلت عملية الكتابة السابقة.
serializer.transferArrayBuffer(id, arrayBuffer)
• id
من النوع <integer>
وهو عدد صحيح 32 بت بدون إشارة.
• arrayBuffer
من النوع <ArrayBuffer>
وهو مثيل لـ ArrayBuffer
.
يشير إلى ArrayBuffer
كما لو كانت محتوياته قد نُقلت خارج النطاق. ويمرر ArrayBuffer
المقابل في سياق إلغاء التسلسل إلى التابع deserializer.transferArrayBuffer()
.
serializer.writeUint32(value)
• value من النوع<integer>
.
كتابة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل التابع serializer._writeHostObject()
المخصص.
serializer.writeUint64(hi, lo)
• hi من النوع <integer>
.
• lo من النوع <integer>
.
كتابة عدد صحيح 64 بت خام بدون إشارة، مقسمة إلى جزأين؛ علوي وسفلي كل منهما 32 بت. للاستخدام داخل التابع serializer._writeHostObject()
المخصص.
serializer.writeDouble(value)
• value من النوع <number>
.
كتابة قيمة من النوع number
. للاستخدام داخل التابع serializer._writeHostObject()
المخصص.
serializer.writeRawBytes(buffer)
buffer
من النوع <Buffer>
| <Uint8Array>
كتابه وحدات البايت الخام في المخزن المؤقت الداخلي للمُسلسِل. سيتطلب إلغاء التسلسل طريقة لحساب طول المخزن المؤقت. للاستخدام داخل التابع serializer._writeHostObject()
المخصص.
serializer._writeHostObject(object)
• object
من النوع <Object>
.
ويُستدعى هذا التابع لكتابة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل object
، يجب إجراء استثناء مناسب.
هذا التابع غير موجود ضمن الصنف Serializer
نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية.
serializer._getDataCloneError(message)
• message
من النوع <string>
.
يستدعى هذا التابع لإنشاء كائنات الأخطاء التي ستنطلق عندما لا يمكن استنساخ كائن.
يعيد هذا التابع قيمة افتراضية إلى مُنشئ الخطأ Error
ويمكن تجاوزه في الأصناف الفرعية.
• sharedArrayBuffer
من النوع <SharedArrayBuffer>
.
يُستدعى هذا التابع عند إجراء المُسلسِل عملية تسلسل لكائن SharedArrayBuffer
. يجب أن يعيد مُعرِّف ID من النوع عدد صحيح بدون إشارة 32 بت للكائن، وذلك باستخدام نفس المعرف إذا كان قد سبق إجراء تسلسل للوسيط SharedArrayBuffer
. عند إلغاء التسلسل، سيمرر هذا المعرف إلى deserializer.transferArrayBuffer()
.
إذا تعذر إجراء تسلسل الكائن، يجب عمل استثناء.
هذا التابع غير موجود ضمن الصنف Serializer
نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية.
serializer._setTreatArrayBufferViewsAsHostObjects(flag)
• flag
من النوع <boolean>
. القيمة الافتراضية: false
.
يحدد ما إذا كان سيُتعامل مع كائنات TypedArray
و DataView
ككائنات مضيفة، أي تمريرها إلى التابع serializer._writeHostObject()
.
الصنف: v8.Deserializer
أُضيف مع الإصدار: v8.0.0.
Deserializer(buffer)
الجديد
• buffer
من النوع <Buffer>
| <Uint8Array>
وهو مخزن مؤقت يُعاد من قِبَل serializer.releaseBuffer()
.
إنشاء كائن Deserializer
جديد.
deserializer.readHeader()
يقرأ ويتحقق من الترويسة (بما في ذلك تنسيق الإصدار). على سبيل المثال، قد يرفض تنسيق أسلاك غير صالح أو غير مدعوم. في هذه الحالة، سينطلق Error
.
deserializer.readValue()
إلغاء تسلسل قيمة JavaScript من المخزن المؤقت وإعادته.
deserializer.transferArrayBuffer(id, arrayBuffer)
• id من النوع <integer>
وهو عدد صحيح 32 بت بدون إشارة.
• arrayBuffer
من النوع <ArrayBuffer> | <SharedArrayBuffer>
وهي مثيل لـ ArrayBuffer
.
يشير إلى ArrayBuffer
كما لو كانت محتوياته قد نُقلت خارج النطاق. تمرير arraybuffer
المقابل في سياق التسلسل للتابع serializer.transferArrayBuffer()
(أو إعادة المعرف id
من التابع serializer._getSharedArrayBufferId()
في حالات SharedArrayBuffer
).
deserializer.getWireFormatVersion()
• القيمة المُعادة: من النوع <integer>
.
يقرأ إصدار تنسيق الأسلاك الأساسية. غالبًا ما يفيد في قراءة الشيفرات القديمة من الإصدارات القديمة لتنسيق الأسلاك. قد لا يستدعى قبل .readHeader()
.
deserializer.readUint32()
• القيمة المُعادة: من النوع <integer>
.
قراءة عدد صحيح 32 بت خام بدون إشارة. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject()
.
deserializer.readUint64()
• القيمة المُعادة: من النوع <integer[]>
.
قراءة عدد صحيح 64 بت خام بدون إشارة وإعادته كمصفوفة [hi, lo]
تحتوي على عنصرين 32 بت بدون إشارة. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject()
.
deserializer.readDouble()
• القيمة المُعادة: من النوع <number>
.
قراءة قيمة من النوع number
. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject()
.
deserializer.readRawBytes(length)
[المصدر]
• length
من النوع <integer>
.
• القيمة المُعادة: من النوع <Buffer>
.
قراءة وحدات البايت الخام في المخزن المؤقت الداخلي لماسح التسلسل. يجب أن يقابل المعاملُ length
طولَ المخزن المؤقت الذي سبق تمريره إلى التابع serializer.writeRawBytes()
. للاستخدام داخل أحد تخصيصات التابع deserializer._readHostObject()
.
deserializer._readHostObject()
ويُستدعى هذا التابع لقراءة نوع من الكائنات المضيفة، أي كائن مُنشأ بواسطة روابط C++ الأصلي. إذا لم يكن من الممكن إجراء تسلسل البيانات، يجب إجراء استثناء مناسب.
هذا التابع غير موجود ضمن الصنف Deserializer
نفسه ولكن يمكن توفيره بواسطة الأصناف الفرعية.
الصنف: v8.DefaultSerializer
أُضيف مع الإصدار: v8.0.0.
صنف فرعي من Serializer
الذي يُسلسل TypedArray
(في Buffer
معين) وكائنات DataView
ككائنات مضيفة، ويخزن فقط جزء من ArrayBuffer
الأساسية التي كانت تشير إليه.
الصنف: v8.DefaultDeserializer
أُضيف مع الإصدار: v8.0.0.
صنف فرعي من Deserializer
ويقابل التنسيق المكتوب بواسطة DefaultSerializer
.