عند إنشاء تطبيقات React.js، تعد إدارة أيقونات SVG بكفاءة أمرًا بالغ الأهمية. توفر ملفات SVG قابلية التوسع والمرونة اللازمة للتصميم سريع الاستجابة، ولكن التعامل معها في المشاريع الكبيرة يمكن أن يصبح مرهقًا. وهنا يأتي دور svg-path-constants، وهي أداة CLI مصممة لتبسيط سير عمل SVG الخاص بك عن طريق تحويل مسارات SVG إلى ثوابت قابلة لإعادة الاستخدام.
في مقال سابق، "مقارنة شاملة لخيارات إدارة أيقونات SVG في مشاريع React.js"، ناقشت طرقًا مختلفة لإدارة أيقونات SVG، بما في ذلك ملفات SVG المضمنة، ونقوش SVG المتحركة، واستخدام مكونات React لكل رمز. على الرغم من أن كل طريقة لها إيجابيات وسلبيات، إلا أنه لا يزال هناك تحدي واحد: وهو الحفاظ على مسارات SVG منظمة وقابلة لإعادة الاستخدام.
يوفر استخدام الثوابت لمسارات SVG حجمًا صغيرًا للحزمة ووقت إنشاء سريعًا.
svg-path-constants هي أداة CLI تساعدك على إنشاء ثوابت من ملفات SVG، مما يسهل دمج وإدارة أيقونات SVG في مشاريع React الخاصة بك. فهو يحول مسارات SVG إلى ثوابت JS، ويدعم اصطلاحات التسمية المرنة، ويسمح بمخرجات قابلة للتخصيص.
يمكنك البدء في استخدام ثوابت مسار svg على الفور باستخدام npx:
npx svg-path-constants@latest
بدلاً من ذلك، يمكنك تثبيته عالميًا أو باعتباره تابعًا للمطور:
npm install -g svg-path-constants npm install --save-dev svg-path-constants
لنفترض أن لديك ملفات SVG في src/assets/icons وتريد إنشاء ثوابت في src/components/Icon/paths.js:
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js
مثال الإخراج:
// src/components/Icon/paths.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
تحديد تنسيق تسمية مختلف، مثل PascalCase:
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js -f PascalCase
مثال الإخراج:
// src/components/Icon/paths.js export const FolderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const FolderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
التحكم في التسمية وإخراج الملف باستخدام قالب مخصص:
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/{-2,-1}/{0}.js -t "{1,-3}"
مثال الإخراج:
// src/components/Icon/folder/icon1.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path // src/components/Icon/folder/icon2.js export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
يمكن لثوابت svg-path تحويل سمات SVG مثل العتامة، وعتامة التعبئة، والحد، والتعبئة إلى مكونات سلسلة المسار.
ثابت المسار المُنشأ:
export const myIcon = "o0.5 O0.8 fff000 F00ff00 M10 10 H 90 V 90 H 10 Z";
تتيح لك هذه الميزة الاحتفاظ بمعلومات النمط الأساسية مباشرة داخل سلسلة المسار، مع الحفاظ على تمثيل مدمج وغني بالمعلومات.
بمجرد إنشاء ثوابت مسار SVG باستخدام ثوابت svg-path، يمكنك دمجها بسهولة في مكونات React الخاصة بك. وهذا لا يحافظ على نظافة التعليمات البرمجية الخاصة بك فحسب، بل يسمح أيضًا بإعادة استخدام مسارات SVG بسهولة عبر تطبيقك.
لنفترض أنك قمت بالفعل بتشغيل الأمر التالي لإنشاء ثوابت من ملفات SVG الخاصة بك:
npx svg-path-constants@latest -i src/assets/icons -o src/components/Icon/paths.js
يقوم هذا الأمر بإنشاء ملف src/components/Icon/paths.js مع ثوابت مثل:
// src/components/Icon/paths.js export const folderIcon1 = "M10 10 H 90 V 90 H 10 Z"; // Example SVG path export const folderIcon2 = "M20 20 H 80 V 80 H 20 Z"; // Example SVG path
الآن، لنقم بإنشاء مكون React الذي يعرض أيقونات SVG هذه باستخدام الثوابت التي تم إنشاؤها.
import React from 'react'; import { folderIcon1, folderIcon2 } from './paths'; // Import the generated SVG path constants const parsePathData = (d) => { const pathElements = []; const pathCommands = d.split(/(o[\d.] |O[\d.] |f[0-9a-fA-F] |F[0-9a-fA-F] )/); // Split by style commands let attributes = null; pathCommands.forEach((text, i) => { const isCommand = Boolean(i % 2); if (isCommand) { if (!attributes) { attributes = {}; } const match = text.match(/^(o([\d.] ))?(O([\d.] ))?(f([0-9a-fA-F] ))?(F([0-9a-fA-F] ))?$/); const [, , opacity, , fillOpacity, , stroke, , fill] = match; if (opacity) attributes.opacity = opacity; if (fillOpacity) attributes["fill-opacity"] = fillOpacity; if (stroke) attributes.stroke = `#${stroke}`; if (fill) attributes.fill = `#${fill}`; return; } if (text.trim().length) { pathElements.push({ ...attributes, d: text }); } }); return pathElements; }; const SvgIcon = ({ d, size = 24, color = 'currentColor', ...props }) => { const pathElements = parsePathData(d); return ( ); }; const IconDemo = () => (); export default IconDemo;SVG Icon Examples
Folder Icon 1
Folder Icon 2
يمكنك الآن استخدام مكون IconDemo في أي مكان في تطبيق React لعرض أيقونات SVG:
import React from 'react'; import ReactDOM from 'react-dom'; import IconDemo from './components/Icon/IconDemo'; ReactDOM.render(, document.getElementById('root') );
وظيفة تحليل بيانات المسار :
مكون SvgIcon :
مكون IconDemo:
أعمل حاليًا على مكتبة npm التي من شأنها تحسين ثوابت مسار svg عن طريق إضافة صور نقطية (PNGs) كتعليقات فوق كل ثابت تم إنشاؤه. سيوفر هذا تمثيلاً مرئيًا للأيقونة مباشرة في التعليمات البرمجية الخاصة بك، مما يسهل تحديد وإدارة مسارات SVG.
لا ينبغي أن تكون إدارة مسارات SVG في مشاريع React أمرًا صعبًا. باستخدام svg-path-constants، يمكنك الحفاظ على أيقوناتك منظمة، ورمزك نظيفًا، وكفاءة سير عملك. وقريبًا، مع المكتبة القادمة لإضافة الصور النقطية إلى تعليقات الأيقونات، سيكون لديك طريقة أكثر وضوحًا وبديهية لإدارة أصول SVG الخاصة بك.
جرب svg-path-constants اليوم:
npx svg-path-constants@latest
ترقبوا المزيد من التحديثات!
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3