عن المشروع
svgdom هو تطبيق DOM بسيط مصمَّم لجعل SVG.js يعمل بشكل بلا واجهة على Node.js. على الرغم من أنه بُني في الأصل لهذا الغرض، إلا أنه أصبح أكثر اكتمالاً من حيث الميزات ويمكن استخدامه من قبل أي شخص يحتاج إلى DOM لـ XML أو SVG أو HTML. تشمل الاستخدامات النموذجية توليد ملفات SVG على الخادم، واختبار أكواد SVG دون متصفح، وبناء أدوات خطوط إنتاج الأصول التي تفحص أو تحول هندسة SVG.
يبدأ العمل مع SVG.js الإصدار 3.x بتثبيت @svgdotjs/svg.js وsvgdom. تستورد createSVGWindow من svgdom وSVG مع registerWindow من @svgdotjs/svg.js. تُعيد createSVGWindow نافذة تحتوي على مستند وعقدة جذر SVG. بعد تسجيل النافذة والمستند، تنشئ لوحة رسم من document.documentElement وتستخدم SVG.js بشكل طبيعي، مثل رسم مستطيل وملئه وتحريكه ثم إخراج SVG كنص أو عبر outerHTML.
بخلاف SVG، يمكن لـ svgdom إنشاء نافذة HTML عبر createHTMLWindow، أو نافذة XML عامة عبر createWindow مع تمرير معرّف مساحة الاسم وعقدة الجذر، مثل MathML. على Node.js الإصدار 22.13 أو الأحدث، يمكن تحميل svgdom مباشرة عبر require كموديول CommonJS.
يوثّق المشروع انحرافات DOM مقصودة. فهو يفضل واجهة برمجية صغيرة ومريحة للاستخدام بلا واجهة لـ SVG على مطابقة DOM المتصفح الكاملة. وراثة document.createElement تأخذ مساحة أسماء المستند، لذا فإن createSVGDocument().createElement('rect') ينشئ SVGRectElement في مساحة أسماء SVG، على عكس DOM XML في المتصفح حيث ينشئ createElement عنصرًا دون مساحة أسماء ويتطلب createElementNS. يُستنتج سلوك HTML من مساحة أسماء المستند: المستند ذو مساحة أسماء XHTML يتلقى تسمية أسماء HTML، ومحددات أنواع HTML غير الحساسة لحالة الأحرف، وسلسلة عناصر HTML الفارغة، والقيود على CDATA في HTML. لا ينفّذ svgdom حاليًا خوارزمية تحليل HTML المتسامحة؛ HTMLParser وinnerHTML يستخدمان محلل XML صارمًا، لذا يجب أن يكون الترميز سليمًا بشكل جيد، ولا يُدعم استرداد الترميز الفوضوي أو الوسوم الإغلاقية الاختيارية أو سلوك مماثل.
لحساب حدود النصوص، يجب تحميل الخطوط أولاً. يحمّل svgdom خط Open Sans-Regular افتراضيًا عند عدم العثور على ملف خط للخط المحدد. تتيح خيارات الإعداد تعيين مجلد الخطوط، وربط عائلات الخطوط بملفاتها، وتحميل الخطوط مسبقًا لتجنب تأخير التحميل عند الاستخدام الأول. يمكن استيراد الدوال نفسها مباشرة.
تشمل القيود المعروفة أن خصائص الخطوط مثل الغامق والمائل مدعومة فقط عند تحميل الخط المقابل صراحةً، مثل ربط Arial-italic بملف arial_italic.ttf. يدعم querySelector مجموعة محدودة من الصفات الوهمية: empty وfirst-child وlast-child وnth-child وnth-last-child وfirst-of-type وlast-of-type وnth-of-type وnth-last-of-type وonly-child وonly-of-type وhas وis وroot وnot وmatches وscope وwhere. تدعم صفتا nth-child وnth-last-child أيضًا صياغة المحدد of. القيم السهمية التي تحتوي على قوس إغلاق لا تُحلَّل حاليًا بشكل صحيح في المحددات حتى مع الاقتباس.
يمكن استخدام svgdom في مشاريع أخرى، رغم أن بعض الدوال غير مطلوبة لـ SVG.js وبالتالي غير منفذة أو غير مُختبرة. يلاحظ README أن childNodes مصفوفة. يقبل المشروع المشكلات وطلبات الدمج للميزات المطلوبة ويقدم روابط التبرع والرعاية.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.