كيفية بناء موقع ويب متكامل باستخدام React
في هذا المقال، سنتعرف على كيفية بناء موقع ويب متكامل باستخدام مكتبة React.js، وسنتعلم كيفية إنشاء مكونات قابلة لإعادة الاستخدام وإدارة حالة التطبيق بشكل فعال.
اقرأ المزيدimport React, { useState, useEffect, useRef } from 'react'; import { Terminal, Code, Layout, Cpu, Layers, Moon, Sun, ChevronRight, ChevronLeft, Send, Play, Save, Download, Copy, X, Settings, User, LogOut, History, FileUp, Mic, MicOff, Volume2, VolumeX, Image, BarChart3, Sparkles, Loader, AlertCircle, CheckCircle, Info, HelpCircle, Plus, Trash2, Folder } from 'lucide-react'; // Mock API keys - in a real application, these would be securely stored const API_KEYS = { openai: "sk-...", // OpenAI API key placeholder deepseek: "dsk-...", // DeepSeek API key placeholder minimax: "mm-...", // MiniMax API key placeholder }; export default function M1AIWebsite() { // Core state const [darkMode, setDarkMode] = useState(false); const [activeService, setActiveService] = useState('chatgpt'); const [activeTool, setActiveTool] = useState('chat'); const [sidebarOpen, setSidebarOpen] = useState(true); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [notification, setNotification] = useState(null); const [isAuthenticated, setIsAuthenticated] = useState(true); // For demo purposes const [showSettings, setShowSettings] = useState(false); const [showUserMenu, setShowUserMenu] = useState(false); // Chat state const [prompt, setPrompt] = useState(''); const [conversations, setConversations] = useState({ chatgpt: [{ role: 'system', content: 'مرحبًا بك في ChatGPT. كيف يمكنني مساعدتك اليوم؟' }], deepseek: [{ role: 'system', content: 'مرحبًا بك في DeepSeek. كيف يمكنني مساعدتك اليوم؟' }], minimax: [{ role: 'system', content: 'مرحبًا بك في MiniMax. كيف يمكنني مساعدتك اليوم؟' }] }); const [isRecording, setIsRecording] = useState(false); const [isMuted, setIsMuted] = useState(false); const [savedConversations, setSavedConversations] = useState([ { id: 1, title: 'محادثة عن تطوير الويب', service: 'chatgpt', date: '2023-06-15' }, { id: 2, title: 'تحليل البيانات', service: 'deepseek', date: '2023-06-18' }, { id: 3, title: 'إنشاء تطبيق موبايل', service: 'minimax', date: '2023-06-20' } ]); const [showConversationHistory, setShowConversationHistory] = useState(false); // Code editor state const [code, setCode] = useState('// اكتب الكود الخاص بك هنا\nconsole.log("مرحبًا بالعالم!");'); const [codeOutput, setCodeOutput] = useState(''); const [codeLanguage, setCodeLanguage] = useState('javascript'); const [savedSnippets, setSavedSnippets] = useState([ { id: 1, title: 'مثال Hello World', language: 'javascript', code: 'console.log("مرحبًا بالعالم!");' }, { id: 2, title: 'دالة فيبوناتشي', language: 'python', code: 'def fibonacci(n):\n a, b = 0, 1\n for _ in range(n):\n yield a\n a, b = b, a + b\n\nprint(list(fibonacci(10)))' } ]); // Website builder state const [websiteDescription, setWebsiteDescription] = useState(''); const [generatedWebsite, setGeneratedWebsite] = useState(null); const [websiteTemplates, setWebsiteTemplates] = useState([ { id: 1, name: 'متجر إلكتروني', category: 'تجارة' }, { id: 2, name: 'مدونة شخصية', category: 'محتوى' }, { id: 3, name: 'موقع شركة', category: 'أعمال' }, { id: 4, name: 'منصة تعليمية', category: 'تعليم' } ]); const [selectedTemplate, setSelectedTemplate] = useState(null); const [savedWebsites, setSavedWebsites] = useState([ { id: 1, title: 'متجر الإلكترونيات', template: 'متجر إلكتروني', date: '2023-06-22' }, { id: 2, title: 'مدونتي الشخصية', template: 'مدونة شخصية', date: '2023-06-25' } ]); // Dashboard state const [usageStats, setUsageStats] = useState({ apiCalls: { chatgpt: 45, deepseek: 23, minimax: 12 }, tokensUsed: { chatgpt: 12500, deepseek: 8700, minimax: 3200 }, websitesGenerated: 8, codeExecutions: 34 }); // Settings state const [settings, setSettings] = useState({ apiKeys: { ...API_KEYS }, theme: 'auto', language: 'ar', fontSize: 'medium', autoSave: true, voiceEnabled: true }); // Refs const chatContainerRef = useRef(null); const fileInputRef = useRef(null); useEffect(() => { // Check system preference for dark mode if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) { setDarkMode(true); } // Scroll chat to bottom when messages change if (chatContainerRef.current) { chatContainerRef.current.scrollTop = chatContainerRef.current.scrollHeight; } }, [conversations]); const toggleDarkMode = () => { setDarkMode(!darkMode); }; const showNotification = (message, type = 'info', duration = 3000) => { setNotification({ message, type }); setTimeout(() => setNotification(null), duration); }; // API call to OpenAI const callOpenAI = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.openai.com/v1/chat/completions', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.openai}` // }, // body: JSON.stringify({ // model: 'gpt-4', // messages: messages, // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ OpenAI API'); // const data = await response.json(); // return data.choices[0].message.content; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 1000)); return "هذه استجابة من نموذج ChatGPT. في التطبيق الحقيقي، سيتم استدعاء OpenAI API باستخدام المفتاح المخزن في إعدادات التطبيق. يمكنك تخصيص سلوك النموذج وإعداداته من خلال لوحة الإعدادات."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ OpenAI API'); throw err; } finally { setLoading(false); } }; // API call to DeepSeek const callDeepSeek = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.deepseek.com/v1/chat', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.deepseek}` // }, // body: JSON.stringify({ // messages: messages, // model: 'deepseek-chat', // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ DeepSeek API'); // const data = await response.json(); // return data.response; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 1200)); return "هذه استجابة من نموذج DeepSeek. في التطبيق الحقيقي، سيتم استدعاء DeepSeek API باستخدام المفتاح المخزن في إعدادات التطبيق. نموذج DeepSeek يتميز بقدرات متقدمة في فهم اللغة الطبيعية والتعلم العميق."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ DeepSeek API'); throw err; } finally { setLoading(false); } }; // API call to MiniMax const callMiniMax = async (messages) => { try { setLoading(true); setError(null); // In a real application, this would be an actual API call // const response = await fetch('https://api.minimax.chat/v1/text/generation', { // method: 'POST', // headers: { // 'Content-Type': 'application/json', // 'Authorization': `Bearer ${settings.apiKeys.minimax}` // }, // body: JSON.stringify({ // messages: messages, // model: 'minimax-pro', // temperature: 0.7 // }) // }); // if (!response.ok) throw new Error('فشل الاتصال بـ MiniMax API'); // const data = await response.json(); // return data.reply; // Simulating API response for demo await new Promise(resolve => setTimeout(resolve, 800)); return "هذه استجابة من نموذج MiniMax. في التطبيق الحقيقي، سيتم استدعاء MiniMax API باستخدام المفتاح المخزن في إعدادات التطبيق. نموذج MiniMax يتميز بسرعة الاستجابة وكفاءة استخدام الموارد."; } catch (err) { setError(err.message || 'حدث خطأ أثناء الاتصال بـ MiniMax API'); throw err; } finally { setLoading(false); } }; const handleSendMessage = async () => { if (!prompt.trim()) return; const newMessage = { role: 'user', content: prompt }; const updatedConversations = { ...conversations }; updatedConversations[activeService] = [...updatedConversations[activeService], newMessage]; setConversations(updatedConversations); setPrompt(''); try { let response; if (activeService === 'chatgpt') { response = await callOpenAI(updatedConversations.chatgpt); } else if (activeService === 'deepseek') { response = await callDeepSeek(updatedConversations.deepseek); } else { response = await callMiniMax(updatedConversations.minimax); } const aiResponse = { role: 'system', content: response }; updatedConversations[activeService] = [...updatedConversations[activeService], aiResponse]; setConversations(updatedConversations); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.apiCalls[activeService] += 1; updatedStats.tokensUsed[activeService] += Math.floor(prompt.length * 1.3) + Math.floor(response.length * 1.3); setUsageStats(updatedStats); // Auto-save conversation if enabled if (settings.autoSave && updatedConversations[activeService].length > 3) { const title = updatedConversations[activeService][1].content.slice(0, 30) + '...'; const newSavedConversation = { id: savedConversations.length + 1, title, service: activeService, date: new Date().toISOString().split('T')[0] }; setSavedConversations([...savedConversations, newSavedConversation]); showNotification('تم حفظ المحادثة تلقائيًا', 'success'); } } catch (err) { showNotification(`خطأ: ${err.message}`, 'error'); } }; const handleStartVoiceRecording = () => { if (!settings.voiceEnabled) { showNotification('الرجاء تمكين ميزة الصوت في الإعدادات أولاً', 'warning'); return; } setIsRecording(true); // In a real application, this would use the Web Speech API showNotification('جاري الاستماع...', 'info'); // Simulate voice recognition after 3 seconds setTimeout(() => { setPrompt(prompt + 'هذا نص تم التعرف عليه من الصوت '); setIsRecording(false); showNotification('تم التعرف على الصوت بنجاح', 'success'); }, 3000); }; const handleStopVoiceRecording = () => { setIsRecording(false); showNotification('تم إيقاف التسجيل الصوتي', 'info'); }; const handleToggleMute = () => { setIsMuted(!isMuted); showNotification(isMuted ? 'تم تشغيل الصوت' : 'تم كتم الصوت', 'info'); }; const handleRunCode = async () => { setLoading(true); setError(null); try { // In a real application, this would send the code to a secure execution environment // const response = await fetch('https://api.m1ai.com/execute-code', { // method: 'POST', // headers: { 'Content-Type': 'application/json' }, // body: JSON.stringify({ code, language: codeLanguage }) // }); // if (!response.ok) throw new Error('فشل تنفيذ الكود'); // const data = await response.json(); // setCodeOutput(data.output); // Simulate code execution await new Promise(resolve => setTimeout(resolve, 1500)); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.codeExecutions += 1; setUsageStats(updatedStats); if (codeLanguage === 'javascript') { try { // Safely evaluate JavaScript in a controlled environment // This is just for demo purposes - in a real app, never eval user code directly const output = []; const mockConsole = { log: (...args) => output.push(args.join(' ')), error: (...args) => output.push(`Error: ${args.join(' ')}`), warn: (...args) => output.push(`Warning: ${args.join(' ')}`) }; // Create a safe evaluation context const safeEval = new Function('console', ` try { ${code} return { success: true, output: [] }; } catch (error) { return { success: false, error: error.message }; } `); const result = safeEval(mockConsole); if (result.success) { setCodeOutput(output.join('\n') || 'تم تنفيذ الكود بنجاح (بدون مخرجات)'); showNotification('تم تنفيذ الكود بنجاح', 'success'); } else { setCodeOutput(`خطأ: ${result.error}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } } catch (err) { setCodeOutput(`خطأ في تنفيذ الكود: ${err.message}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } } else if (codeLanguage === 'python') { setCodeOutput('مخرجات تنفيذ كود Python (محاكاة):\n>>> ' + code.split('\n')[0] + '\n' + (code.includes('print') ? 'مرحبًا بالعالم!' : 'تم تنفيذ الكود بنجاح')); showNotification('تم تنفيذ كود Python بنجاح', 'success'); } else { setCodeOutput(`تم تنفيذ كود ${codeLanguage} بنجاح (محاكاة)`); showNotification(`تم تنفيذ كود ${codeLanguage} بنجاح`, 'success'); } } catch (err) { setError(err.message || 'حدث خطأ أثناء تنفيذ الكود'); setCodeOutput(`خطأ: ${err.message}`); showNotification('حدث خطأ أثناء تنفيذ الكود', 'error'); } finally { setLoading(false); } }; const handleSaveCodeSnippet = () => { if (!code.trim()) { showNotification('لا يمكن حفظ مقتطف كود فارغ', 'warning'); return; } const title = prompt('أدخل عنوانًا لمقتطف الكود:') || 'مقتطف كود بدون عنوان'; const newSnippet = { id: savedSnippets.length + 1, title, language: codeLanguage, code }; setSavedSnippets([...savedSnippets, newSnippet]); showNotification('تم حفظ مقتطف الكود بنجاح', 'success'); }; const handleFileUpload = (event) => { const file = event.target.files[0]; if (!file) return; const reader = new FileReader(); reader.onload = (e) => { try { setCode(e.target.result); showNotification(`تم تحميل الملف ${file.name} بنجاح`, 'success'); // Try to detect language from file extension const extension = file.name.split('.').pop().toLowerCase(); const languageMap = { 'js': 'javascript', 'py': 'python', 'html': 'html', 'css': 'css', 'java': 'java', 'cpp': 'cpp', 'c': 'c', 'php': 'php', 'rb': 'ruby', 'go': 'go', 'rs': 'rust', 'ts': 'typescript' }; if (languageMap[extension]) { setCodeLanguage(languageMap[extension]); } } catch (err) { showNotification('فشل قراءة الملف', 'error'); } }; reader.readAsText(file); }; const handleGenerateWebsite = async () => { if (!websiteDescription.trim() && !selectedTemplate) { showNotification('الرجاء إدخال وصف للموقع أو اختيار قالب', 'warning'); return; } setLoading(true); setError(null); try { // In a real application, this would call an API to generate the website // const response = await fetch('https://api.m1ai.com/generate-website', { // method: 'POST', // headers: { 'Content-Type': 'application/json' }, // body: JSON.stringify({ // description: websiteDescription, // template: selectedTemplate ? selectedTemplate.id : null // }) // }); // if (!response.ok) throw new Error('فشل إنشاء الموقع'); // const data = await response.json(); // setGeneratedWebsite(data.website); // Simulate website generation await new Promise(resolve => setTimeout(resolve, 2000)); // Update usage stats const updatedStats = { ...usageStats }; updatedStats.websitesGenerated += 1; setUsageStats(updatedStats); // Generate HTML based on description or template let templateHTML = ''; let templateCSS = ''; if (selectedTemplate) { if (selectedTemplate.id === 1) { // E-commerce template templateHTML = generateEcommerceTemplate(); } else if (selectedTemplate.id === 2) { // Blog template templateHTML = generateBlogTemplate(); } else if (selectedTemplate.id === 3) { // Business template templateHTML = generateBusinessTemplate(); } else if (selectedTemplate.id === 4) { // Education template templateHTML = generateEducationTemplate(); } } else { // Generate based on description templateHTML = generateWebsiteFromDescription(websiteDescription); } setGeneratedWebsite({ html: templateHTML, css: templateCSS, js: '' }); showNotification('تم إنشاء الموقع بنجاح', 'success'); } catch (err) { setError(err.message || 'حدث خطأ أثناء إنشاء الموقع'); showNotification('حدث خطأ أثناء إنشاء الموقع', 'error'); } finally { setLoading(false); } }; const handleSaveWebsite = () => { if (!generatedWebsite) { showNotification('لا يوجد موقع لحفظه', 'warning'); return; } const title = prompt('أدخل عنوانًا للموقع:') || 'موقع بدون عنوان'; const newWebsite = { id: savedWebsites.length + 1, title, template: selectedTemplate ? selectedTemplate.name : 'مخصص', date: new Date().toISOString().split('T')[0] }; setSavedWebsites([...savedWebsites, newWebsite]); showNotification('تم حفظ الموقع بنجاح', 'success'); }; const handleDownloadWebsite = () => { if (!generatedWebsite) { showNotification('لا يوجد موقع لتنزيله', 'warning'); return; } // In a real application, this would create a zip file with HTML, CSS, and JS files const blob = new Blob([generatedWebsite.html], { type: 'text/html' }); const url = URL.createObjectURL(blob); const a = document.createElement('a'); a.href = url; a.download = 'website.html'; document.body.appendChild(a); a.click(); document.body.removeChild(a); URL.revokeObjectURL(url); showNotification('تم تنزيل الموقع بنجاح', 'success'); }; const handleUpdateSettings = (newSettings) => { setSettings({ ...settings, ...newSettings }); showNotification('تم تحديث الإعدادات بنجاح', 'success'); setShowSettings(false); }; const handleLogout = () => { // In a real application, this would handle the logout process setIsAuthenticated(false); showNotification('تم تسجيل الخروج بنجاح', 'info'); }; // Website template generators const generateEcommerceTemplate = () => { return `
توصيل لجميع أنحاء المملكة خلال 2-3 أيام عمل
طرق دفع متعددة وآمنة لراحتك
استرجاع المنتجات خلال 14 يوم من الشراء
في هذا المقال، سنتعرف على كيفية بناء موقع ويب متكامل باستخدام مكتبة React.js، وسنتعلم كيفية إنشاء مكونات قابلة لإعادة الاستخدام وإدارة حالة التطبيق بشكل فعال.
اقرأ المزيديعد تعلم الآلة أحد أهم فروع الذكاء الاصطناعي، وفي هذا المقال سنستعرض المفاهيم الأساسية لتعلم الآلة وكيفية تطبيقها في مشاريع حقيقية.
اقرأ المزيدتطوير مهاراتك البرمجية يتطلب الممارسة المستمرة والتعلم الدائم. في هذا المقال، سأشارك معك 10 نصائح فعالة ساعدتني في تحسين مهاراتي البرمجية.
اقرأ المزيدنقدم خدمات تكنولوجية متكاملة تساعد الشركات على النمو والتطور في العصر الرقمي
نقدم مجموعة متنوعة من الخدمات التقنية المتكاملة لتلبية احتياجات عملائنا
نقوم بتصميم وتطوير مواقع الويب وتطبيقات الجوال بأحدث التقنيات لتوفير تجربة مستخدم مميزة.
نساعدك على تحسين ظهور موقعك في نتائج محركات البحث وزيادة الزيارات المستهدفة.
نقدم استراتيجيات تسويقية متكاملة عبر مختلف المنصات الرقمية لزيادة الوعي بعلامتك التجارية.
نوفر حلول أمنية متطورة لحماية بياناتك ومعلوماتك من التهديدات الإلكترونية.
نساعدك على الانتقال إلى السحابة وإدارة بنيتك التحتية بكفاءة وأمان.
نقدم استشارات متخصصة لمساعدتك على اتخاذ القرارات التقنية الصحيحة لنمو أعمالك.
شركة التقنية المتطورة هي شركة رائدة في مجال تقديم الحلول التقنية المتكاملة للشركات والمؤسسات. تأسست الشركة عام 2010 على يد مجموعة من الخبراء في مجال تكنولوجيا المعلومات.
نؤمن بأن التكنولوجيا هي المحرك الأساسي للتطور والنمو في عصرنا الحالي، ولذلك نسعى دائمًا لتقديم أحدث الحلول التقنية التي تساعد عملائنا على تحقيق أهدافهم وتطوير أعمالهم.
يتكون فريقنا من نخبة من المتخصصين في مختلف المجالات التقنية، ونحرص على التطوير المستمر لمهاراتنا ومعارفنا لمواكبة أحدث التطورات في عالم التكنولوجيا.
نفخر بثقة عملائنا وشهاداتهم حول خدماتنا
"تعاملنا مع شركة التقنية المتطورة كان تجربة رائعة. قاموا بتطوير موقعنا الإلكتروني بشكل احترافي وبجودة عالية، مما ساهم في زيادة مبيعاتنا بنسبة 40% خلال الأشهر الستة الأولى."
"استفدنا كثيرًا من خدمات التسويق الرقمي التي قدمتها شركة التقنية المتطورة. فريق العمل محترف ومتعاون، والنتائج كانت أفضل مما توقعنا."
تواصل معنا اليوم للحصول على استشارة مجانية ومعرفة كيف يمكننا مساعدتك
منصة تعليمية متكاملة تقدم دورات احترافية في مختلف المجالات التقنية والإدارية
اختر من بين مجموعة متنوعة من الدورات التعليمية عالية الجودة
نقدم تجربة تعليمية فريدة ومميزة لطلابنا
يقدم الدورات نخبة من المدربين المتخصصين ذوي الخبرة العملية الواسعة في مجالاتهم.
احصل على شهادات معتمدة تعزز من سيرتك الذاتية وتزيد من فرصك الوظيفية.
منصة تعليمية تفاعلية تتيح لك التعلم بأسلوب عملي من خلال المشاريع والتطبيقات.
نحرص على تحديث محتوى الدورات باستمرار لمواكبة أحدث التطورات في المجالات المختلفة.
تعرف على نخبة المدربين المتميزين في أكاديميتنا
خبير تطوير الويب
مطور ويب محترف مع خبرة أكثر من 10 سنوات في تطوير تطبيقات الويب وتدريس البرمجة.
متخصصة في الذكاء الاصطناعي
باحثة ومتخصصة في مجال الذكاء الاصطناعي وتعلم الآلة مع خبرة في العديد من المشاريع البحثية.
خبير إدارة المشاريع
مستشار ومدرب معتمد في إدارة المشاريع مع خبرة أكثر من 15 عامًا في قيادة المشاريع الكبرى.
اطلع على تجارب طلابنا السابقين مع دوراتنا التعليمية
"استفدت كثيرًا من دورة تطوير الويب الشامل. المحتوى كان منظم بشكل رائع والمدرب كان متمكن جدًا من المادة العلمية. أنصح بشدة بهذه الدورة لكل من يرغب في تعلم تطوير الويب."
"دورة الذكاء الاصطناعي كانت تجربة تعليمية مميزة. المفاهيم المعقدة تم شرحها بطريقة مبسطة وسهلة الفهم، والتطبيقات العملية ساعدتني على ترسيخ المعلومات."
اشترك في نشرتنا البريدية للحصول على آخر الأخبار والعروض الخاصة