مولد رموز QR باستخدام TypeScript: qrcode.js و qrcode-generator

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مولد رموز QR باستخدام TypeScript: qrcode.js و qrcode-generator

\n\n

أصبحت رموز QR جزءًا لا يتجزأ من الويب الحديث: من روابط المواقع وكلمات مرور Wi-Fi إلى بيانات الاتصال وتفاصيل الدفع. في نظام TypeScript البيئي، توجد عدة مكتبات ناضجة تسمح بتوليد رموز QR سواء على جانب العميل (المتصفح) أو على الخادم (Node.js). في هذه المقالة، سنشرح بالتفصيل المكتبتين الأكثر شيوعًا: qrcode (qrcode.js) و qrcode-generator، وسنوضح كيفية دمجهما في مشروع TypeScript.

\n\n

1. qrcode (qrcode.js) — مكتبة متعددة الاستخدامات

\n\n

مكتبة qrcode (حزمة npm: qrcode) هي المعيار الفعلي لتوليد رموز QR. وهي تدعم إخراج النتيجة على شكل canvas، SVG، سلسلة Data URI، أو نص عادي. بفضل كتابة TypeScript (الأنواع المضمنة أو @types/qrcode) يصبح التطوير آمنًا ومريحًا.

\n\n

التثبيت

\n
npm install qrcode\nnpm install --save-dev @types/qrcode  # لـ TypeScript
\n\n

مثال أساسي: توليد رمز QR في canvas (المتصفح)

\n
import QRCode from 'qrcode';\n\nconst canvas = document.getElementById('qr-canvas') as HTMLCanvasElement;\n\nQRCode.toCanvas(canvas, 'https://pythonlib.ru', { width: 300 }, (error) => {\n  if (error) console.error('خطأ في التوليد:', error);\n  else console.log('تم إنشاء رمز QR!');\n});
\n\n

التوليد بصيغة SVG (للتقديم من الخادم)

\n
import QRCode from 'qrcode';\n\nconst svgString = await QRCode.toString('https://pythonlib.ru', {\n  type: 'svg',\n  color: { dark: '#1a1a2e', light: '#eaeaea' }\n});\nconsole.log(svgString); // كود SVG جاهز
\n\n

خيارات الإعداد

\n
    \n
  • width — عرض رمز QR بالبكسل (الافتراضي 256).
  • \n
  • margin — الهامش من الحافة (بالوحدات، الافتراضي 4).
  • \n
  • color.dark / color.light — ألوان الوحدات والخلفية.
  • \n
  • errorCorrectionLevel — مستوى تصحيح الأخطاء: 'L' (7%)، 'M' (15%)، 'Q' (25%)، 'H' (30%).
  • \n
  • type — تنسيق الإخراج: 'png'، 'svg'، 'utf8'.
  • \n
\n\n

2. qrcode-generator — بديل خفيف الوزن

\n\n

مكتبة qrcode-generator (حزمة npm: qrcode-generator) تقدم واجهة برمجة تطبيقات بسيطة ولا تتطلب تبعيات. وهي مثالية إذا كنت بحاجة فقط إلى الحصول على مصفوفة رمز QR أو توليده بتنسيق مخصص.

\n\n

التثبيت

\n
npm install qrcode-generator
\n\n

مثال: الإنشاء والرسم على canvas

\n
import QRCode from 'qrcode-generator';\n\nconst qr = QRCode(0, 'M'); // النوع (0 = تلقائي) ومستوى التصحيح\nqr.addData('https://pythonlib.ru');\nqr.make();\n\nconst canvas = document.getElementById('qr-canvas') as HTMLCanvasElement;\nconst ctx = canvas.getContext('2d')!;\nconst size = qr.getModuleCount();\nconst cellSize = 10;\ncanvas.width = size * cellSize;\ncanvas.height = size * cellSize;\n\nfor (let row = 0; row < size; row++) {\n  for (let col = 0; col < size; col++) {\n    ctx.fillStyle = qr.isDark(row, col) ? '#000' : '#fff';\n    ctx.fillRect(col * cellSize, row * cellSize, cellSize, cellSize);\n  }\n}
\n\n

الحصول على تمثيل نصي (لتصحيح الأخطاء)

\n
const qr = QRCode(0, 'M');\nqr.addData('Hello TypeScript!');\nqr.make();\nconsole.log(qr.createASCII()); // سيُظهر رمز QR في وحدة التحكم بأحرف
\n\n

3. مقارنة المكتبات

\n\n\n \n \n \n \n \n \n \n \n \n \n \n

توصيات

الخاصيةqrcode (qrcode.js)qrcode-generator
دعم TypeScriptنعم (عبر @types/qrcode)لا يوجد دعم مدمج، ولكن يمكن استخدامه مع تعريف الأنواع