当前位置: 首页 > news >正文

上海网站推广 优帮云广西医科大学网站建设

上海网站推广 优帮云,广西医科大学网站建设,python做网站用什么,宁波网站建设宁波引言 在这个数字化的时代#xff0c;历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里#xff0c;我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物活起来#xff1f;如何让历史学习变得生动有趣#xff1f;带着这些思考历史学习常常给人一种距离感。教科书中的历史人物似乎永远停留在文字里我们无法真正理解他们的思想和智慧。如何让这些伟大的历史人物活起来如何让历史学习变得生动有趣带着这些思考我们开发了一个简单的穿越时空对话机。 源码已经放在最后啦 人物选择界面 聊天界面 1. 项目背景 1.1 创意起源 在传统的历史学习中学生们往往需要通过记忆大量的史实和年代来了解历史。这种学习方式不仅枯燥而且难以激发学习兴趣。我们注意到 学生对历史人物的故事最感兴趣互动式学习效果最好AI技术为教育带来新可能 基于这些观察我萌生了开发一个能让用户直接与历史人物对话的应用的想法。 1.2 项目目标 教育价值 让历史学习变得生动有趣深入理解历史人物的思想培养历史思维能力 技术创新 运用先进的AI对话技术打造流畅的用户体验实现智能的角色扮演 文化传承 弘扬优秀传统文化促进文化交流连接古今智慧 2. 核心功能概述 2.1 人物库设计 我们精心挑选了来自不同时期、不同领域的历史名人 中国古代名人 孔子儒家思想的代表强调仁义礼智信诸葛亮军事谋略家智慧与忠诚的化身李白浪漫主义诗人豪放不羁的文学天才苏轼文学艺术全才豁达乐观的人生导师李时珍医学大师严谨求实的科学精神 世界名人 达芬奇文艺复兴全才艺术与科学的完美结合爱因斯坦现代物理学家创新思维的代表莎士比亚戏剧大师人性洞察的大师莫扎特音乐天才艺术激情的化身 每个人物都经过精心设计包括 详细的背景故事独特的性格特征专业领域知识语言表达风格典型的思维方式 2.2 对话系统 基于DeepSeek API构建的智能对话系统具有以下特点 角色准确性 准确还原历史人物性格保持语言风格一致性符合历史背景 对话智能性 上下文理解能力灵活的问题处理深度的知识储备 交互自然性 流畅的对话节奏自然的语言表达适当的情感表现 3. 技术架构 3.1 技术栈选择 我们采用了现代化的技术栈 前端技术 - React 18 - TypeScript 4.x - Vite - CSS ModulesAI对话引擎 - DeepSeek API - WebSocket - Axios数据存储 - LocalStorage3.2 系统架构 采用清晰的分层架构 表现层 角色选择界面对话交互界面用户反馈组件 业务层 对话管理角色控制会话处理 数据层 API通信本地存储状态管理 3.3 数据流设计 实现了清晰的单向数据流 #mermaid-svg-RvoMVKJoABCNAvXH {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .error-icon{fill:#552222;}#mermaid-svg-RvoMVKJoABCNAvXH .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-RvoMVKJoABCNAvXH .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-RvoMVKJoABCNAvXH .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-RvoMVKJoABCNAvXH .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-RvoMVKJoABCNAvXH .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-RvoMVKJoABCNAvXH .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-RvoMVKJoABCNAvXH .marker{fill:#333333;stroke:#333333;}#mermaid-svg-RvoMVKJoABCNAvXH .marker.cross{stroke:#333333;}#mermaid-svg-RvoMVKJoABCNAvXH svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-RvoMVKJoABCNAvXH .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .cluster-label text{fill:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .cluster-label span{color:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .label text,#mermaid-svg-RvoMVKJoABCNAvXH span{fill:#333;color:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .node rect,#mermaid-svg-RvoMVKJoABCNAvXH .node circle,#mermaid-svg-RvoMVKJoABCNAvXH .node ellipse,#mermaid-svg-RvoMVKJoABCNAvXH .node polygon,#mermaid-svg-RvoMVKJoABCNAvXH .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-RvoMVKJoABCNAvXH .node .label{text-align:center;}#mermaid-svg-RvoMVKJoABCNAvXH .node.clickable{cursor:pointer;}#mermaid-svg-RvoMVKJoABCNAvXH .arrowheadPath{fill:#333333;}#mermaid-svg-RvoMVKJoABCNAvXH .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-RvoMVKJoABCNAvXH .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-RvoMVKJoABCNAvXH .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-RvoMVKJoABCNAvXH .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-RvoMVKJoABCNAvXH .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-RvoMVKJoABCNAvXH .cluster text{fill:#333;}#mermaid-svg-RvoMVKJoABCNAvXH .cluster span{color:#333;}#mermaid-svg-RvoMVKJoABCNAvXH div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-RvoMVKJoABCNAvXH :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 用户输入 状态更新 API请求 响应处理 界面更新 4. DeepSeek API集成 4.1 API配置 const api axios.create({baseURL: https://api.deepseek.com/v1,headers: {Authorization: Bearer ${API_KEY},Content-Type: application/json,}, });4.2 对话生成 export const generateResponse async (messages: ChatMessage[]) {const response await api.post(/chat/completions, {model: deepseek-chat,messages,temperature: 0.7,max_tokens: 1000,});return response.data.choices[0].message.content; };4.3 提示词系统 为每个历史人物设计了专门的提示词模板 interface HistoricalFigurePrompt {id: string;name: string;period: string;description: string;avatar: string;systemPrompt: string;sampleQuestions: string[];personality: string;background: string; }5. 开发规范 5.1 代码规范 使用ESLint进行代码检查使用Prettier进行代码格式化遵循TypeScript严格模式采用函数式编程范式 5.2 命名规范 组件采用大驼峰命名函数采用小驼峰命名常量使用大写下划线CSS类名采用kebab-case 5.3 文件组织 src/ ├── components/ # 通用组件 ├── pages/ # 页面组件 ├── services/ # 服务层 ├── styles/ # 样式文件6. 用户界面设计理念 6.1 设计原则 在设计用户界面时我们遵循以下核心原则 简约而不简单 清晰的视觉层次重点内容突出减少视觉干扰 沉浸式体验 符合历史氛围富有时代特色细节打造意境 交互友好 操作直观反馈及时引导清晰 6.2 视觉风格 我们采用了现代简约与古典元素相结合的设计风格 配色方案 :root {--primary-color: #4A90E2;--secondary-color: #F5A623;--text-color: #2C3E50;--background-color: #F8F9FA;--border-color: #E2E8F0; }字体选择 中文思源宋体英文Roboto代码JetBrains Mono 布局网格 基础单位8px内容区域最大宽度1200px响应式断点576px、768px、992px、1200px 7. 角色选择页面 7.1 布局设计 角色选择页面采用卡片式布局 const CharacterSelect: React.FC () {return (div classNamecharacter-selectheader classNameheaderh1穿越时空/h1p与历史对话/p/headerdiv classNamecharacter-grid{historicalFigures.map(figure (CharacterCardkey{figure.id}figure{figure}onClick{() handleSelect(figure)}/))}/div/div); };7.2 角色卡片设计 每个角色卡片包含 视觉元素 头像/形象姓名/时代特色标签简介文字 交互效果 .character-card {transition: transform 0.3s ease;:hover {transform: translateY(-5px);box-shadow: 0 10px 20px rgba(0,0,0,0.1);} }信息展示 const CharacterCard: React.FCProps ({ figure }) (div classNamecharacter-carddiv classNameavatar{figure.avatar}/divh3{figure.name}/h3p classNameperiod{figure.period}/pp classNamedescription{figure.description}/pdiv classNamepersonality-tags{figure.personality.split().map(tag (span classNametag{tag}/span))}/div/div );8. 对话界面实现 8.1 整体布局 对话界面分为三个主要部分 顶部导航 返回按钮当前角色信息功能按钮 对话区域 消息气泡打字机效果滚动加载 输入区域 消息输入框发送按钮快捷操作 8.2 消息展示 实现了富有特色的消息气泡 const MessageBubble: React.FCProps ({ message, isUser }) (div className{message ${isUser ? user : assistant}}div classNameavatar{isUser ? : selectedFigure.avatar}/divdiv classNamecontentdiv classNamebubble{message.content}/divdiv classNametime{formatTime(message.timestamp)}/div/div/div );8.3 打字机效果 实现了自然的打字机效果 const simulateTyping async (content: string) {await new Promise(resolve setTimeout(resolve, 500 Math.random() * 1000));return content; };8.4 历史记录功能 实现了完整的对话历史管理 interface ChatHistory {characterId: string;messages: ChatMessage[];lastUpdated: string; }export const saveChatHistory (characterId: string, messages: ChatMessage[]) {try {const existingHistory localStorage.getItem(CHAT_HISTORY_KEY);const history existingHistory ? JSON.parse(existingHistory) : {};history[characterId] {characterId,messages,lastUpdated: new Date().toISOString()};localStorage.setItem(CHAT_HISTORY_KEY, JSON.stringify(history));} catch (error) {console.error(Failed to save chat history:, error);} };9. 动画效果 9.1 过渡动画 使用CSS transitions实现平滑过渡 .fade-enter {opacity: 0;transform: translateY(20px); }.fade-enter-active {opacity: 1;transform: translateY(0);transition: opacity 300ms, transform 300ms; }.fade-exit {opacity: 1; }.fade-exit-active {opacity: 0;transition: opacity 300ms; }9.2 加载动画 实现了优雅的加载效果 .typing-indicator {display: flex;gap: 4px;padding: 8px 12px;.dot {width: 8px;height: 8px;background: var(--primary-color);border-radius: 50%;animation: bounce 1.4s infinite ease-in-out;:nth-child(1) { animation-delay: -0.32s; }:nth-child(2) { animation-delay: -0.16s; }} }keyframes bounce {0%, 80%, 100% { transform: scale(0); }40% { transform: scale(1); } }10. 响应式设计 10.1 媒体查询 实现了完整的响应式布局 /* 移动端 */ media (max-width: 576px) {.character-grid {grid-template-columns: 1fr;} }/* 平板 */ media (min-width: 577px) and (max-width: 992px) {.character-grid {grid-template-columns: repeat(2, 1fr);} }/* 桌面端 */ media (min-width: 993px) {.character-grid {grid-template-columns: repeat(3, 1fr);} }10.2 弹性布局 使用Flexbox实现灵活的布局 .chat-container {display: flex;flex-direction: column;height: 100vh;.chat-messages {flex: 1;overflow-y: auto;}.chat-input {padding: 1rem;border-top: 1px solid var(--border-color);} }11. 性能优化 11.1 虚拟滚动 实现了消息列表的虚拟滚动 import { FixedSizeList } from react-window;const MessageList: React.FCProps ({ messages }) (FixedSizeListheight{600}itemCount{messages.length}itemSize{80}width100%{({ index, style }) (MessageItemmessage{messages[index]}style{style}/)}/FixedSizeList );11.2 防抖处理 对输入和滚动事件进行防抖处理 const debouncedScroll debounce(() {const { scrollTop, scrollHeight, clientHeight } messagesRef.current;if (scrollHeight - scrollTop clientHeight) {loadMoreMessages();} }, 200);11.3 懒加载 实现了图片和组件的懒加载 const LazyCharacterCard React.lazy(() import(./CharacterCard));const CharacterGrid () (Suspense fallback{Skeleton /}{figures.map(figure (LazyCharacterCardkey{figure.id}figure{figure}/))}/Suspense );12. 性能优化策略 12.1 代码层面优化 12.1.1 React优化 组件优化 // 使用React.memo避免不必要的重渲染 const MessageBubble React.memoProps(({ message, isUser }) {return (div className{message ${isUser ? user : assistant}}{/* 消息内容 */}/div); });// 使用useCallback优化事件处理函数 const handleSendMessage useCallback(() {// 处理发送消息 }, [dependencies]);状态管理优化 // 使用useReducer处理复杂状态 const [state, dispatch] useReducer(chatReducer, initialState);// 分离状态逻辑 const chatReducer (state, action) {switch (action.type) {case ADD_MESSAGE:return {...state,messages: [...state.messages, action.payload]};case CLEAR_HISTORY:return {...state,messages: []};default:return state;} };12.1.2 资源加载优化 代码分割 // 路由级别的代码分割 const ChatInterface lazy(() import(./pages/ChatInterface)); const CharacterSelect lazy(() import(./pages/CharacterSelect));// 组件级别的代码分割 const MarkdownRenderer lazy(() import(./components/MarkdownRenderer));资源预加载 // 预加载关键资源 const prefetchResources () {const links [{ rel: prefetch, href: /assets/fonts/main.woff2 },{ rel: preload, href: /assets/images/sprites.png, as: image }];links.forEach(link {const linkElement document.createElement(link);Object.assign(linkElement, link);document.head.appendChild(linkElement);}); };12.2 网络优化 12.2.1 API请求优化 请求缓存 const cache new Map();const cachedFetch async (url: string) {if (cache.has(url)) {return cache.get(url);}const response await fetch(url);const data await response.json();cache.set(url, data);return data; };请求合并 const batchRequest async (requests: Request[]) {const batchId generateBatchId();return await api.post(/batch, {batchId,requests}); };12.2.2 WebSocket优化 class WebSocketManager {private ws: WebSocket;private reconnectAttempts 0;private maxReconnectAttempts 5;constructor(url: string) {this.ws new WebSocket(url);this.setupEventHandlers();}private setupEventHandlers() {this.ws.onclose () {if (this.reconnectAttempts this.maxReconnectAttempts) {setTimeout(() this.reconnect(), 1000 * Math.pow(2, this.reconnectAttempts));}};}private reconnect() {this.reconnectAttempts;// 重新连接逻辑} }12.3 存储优化 12.3.1 本地存储优化 数据压缩 import { compress, decompress } from lz-string;const saveCompressedData (key: string, data: any) {const compressed compress(JSON.stringify(data));localStorage.setItem(key, compressed); };const loadCompressedData (key: string) {const compressed localStorage.getItem(key);if (!compressed) return null;return JSON.parse(decompress(compressed)); };存储管理 class StorageManager {private maxSize 5 * 1024 * 1024; // 5MBasync cleanup() {const items { ...localStorage };const totalSize Object.values(items).reduce((size, item) size item.length, 0);if (totalSize this.maxSize) {// 清理最旧的数据const oldestKey this.findOldestKey();localStorage.removeItem(oldestKey);}} }13. 用户体验优化 13.1 交互优化 13.1.1 输入优化 智能提示 const AutoComplete: React.FCProps ({ suggestions, onSelect }) {return (div classNameautocomplete{suggestions.map(suggestion (divkey{suggestion.id}classNamesuggestiononClick{() onSelect(suggestion)}{suggestion.text}/div))}/div); };输入防抖 const useDebounce (value: string, delay: number) {const [debouncedValue, setDebouncedValue] useState(value);useEffect(() {const handler setTimeout(() {setDebouncedValue(value);}, delay);return () {clearTimeout(handler);};}, [value, delay]);return debouncedValue; };13.2 动画优化 13.2.1 性能优化的动画 .optimized-animation {will-change: transform;transform: translateZ(0);backface-visibility: hidden; }keyframes smooth-entrance {from {opacity: 0;transform: translateY(20px);}to {opacity: 1;transform: translateY(0);} }13.2.2 动画管理 class AnimationManager {private animations: Mapstring, Animation new Map();register(id: string, animation: Animation) {this.animations.set(id, animation);}play(id: string) {const animation this.animations.get(id);if (animation) {animation.play();}}pause(id: string) {const animation this.animations.get(id);if (animation) {animation.pause();}} }结语 穿越时空对话机探索了如何将先进的AI技术与教育需求相结合的可能性。通过这个项目我们不仅实现了有趣的历史对话功能也积累了宝贵的技术经验。 未来我们将继续优化和扩展这个项目让更多人能够通过这种创新的方式学习历史、感受文化。我们相信技术的进步将为教育带来更多可能性。 Gitee源码
文章转载自:
http://www.morning.nggbf.cn.gov.cn.nggbf.cn
http://www.morning.hrgxk.cn.gov.cn.hrgxk.cn
http://www.morning.xsqbx.cn.gov.cn.xsqbx.cn
http://www.morning.xrwbc.cn.gov.cn.xrwbc.cn
http://www.morning.qsy37.cn.gov.cn.qsy37.cn
http://www.morning.pmghz.cn.gov.cn.pmghz.cn
http://www.morning.yrbqy.cn.gov.cn.yrbqy.cn
http://www.morning.mlmwl.cn.gov.cn.mlmwl.cn
http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn
http://www.morning.rlksq.cn.gov.cn.rlksq.cn
http://www.morning.rnqnp.cn.gov.cn.rnqnp.cn
http://www.morning.rbjp.cn.gov.cn.rbjp.cn
http://www.morning.dpruuode.cn.gov.cn.dpruuode.cn
http://www.morning.phnbd.cn.gov.cn.phnbd.cn
http://www.morning.jxrpn.cn.gov.cn.jxrpn.cn
http://www.morning.kxxld.cn.gov.cn.kxxld.cn
http://www.morning.xhfky.cn.gov.cn.xhfky.cn
http://www.morning.wzknt.cn.gov.cn.wzknt.cn
http://www.morning.rqknq.cn.gov.cn.rqknq.cn
http://www.morning.bpmtq.cn.gov.cn.bpmtq.cn
http://www.morning.pqqhl.cn.gov.cn.pqqhl.cn
http://www.morning.ymtbr.cn.gov.cn.ymtbr.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.jygsq.cn.gov.cn.jygsq.cn
http://www.morning.51meihou.cn.gov.cn.51meihou.cn
http://www.morning.rymd.cn.gov.cn.rymd.cn
http://www.morning.lslin.com.gov.cn.lslin.com
http://www.morning.mstrb.cn.gov.cn.mstrb.cn
http://www.morning.ryysc.cn.gov.cn.ryysc.cn
http://www.morning.qzfjl.cn.gov.cn.qzfjl.cn
http://www.morning.hlzpb.cn.gov.cn.hlzpb.cn
http://www.morning.jkrrg.cn.gov.cn.jkrrg.cn
http://www.morning.rmxgk.cn.gov.cn.rmxgk.cn
http://www.morning.fwjfh.cn.gov.cn.fwjfh.cn
http://www.morning.dfckx.cn.gov.cn.dfckx.cn
http://www.morning.kzyr.cn.gov.cn.kzyr.cn
http://www.morning.pcqdf.cn.gov.cn.pcqdf.cn
http://www.morning.blxlf.cn.gov.cn.blxlf.cn
http://www.morning.kmjbs.cn.gov.cn.kmjbs.cn
http://www.morning.snkry.cn.gov.cn.snkry.cn
http://www.morning.hmtft.cn.gov.cn.hmtft.cn
http://www.morning.spqtq.cn.gov.cn.spqtq.cn
http://www.morning.rkhhl.cn.gov.cn.rkhhl.cn
http://www.morning.rbrd.cn.gov.cn.rbrd.cn
http://www.morning.gbfck.cn.gov.cn.gbfck.cn
http://www.morning.bxhch.cn.gov.cn.bxhch.cn
http://www.morning.mxgpp.cn.gov.cn.mxgpp.cn
http://www.morning.hwnnh.cn.gov.cn.hwnnh.cn
http://www.morning.hyjpl.cn.gov.cn.hyjpl.cn
http://www.morning.mxxsq.cn.gov.cn.mxxsq.cn
http://www.morning.ckntb.cn.gov.cn.ckntb.cn
http://www.morning.gsqw.cn.gov.cn.gsqw.cn
http://www.morning.zbjfq.cn.gov.cn.zbjfq.cn
http://www.morning.trjp.cn.gov.cn.trjp.cn
http://www.morning.fmswb.cn.gov.cn.fmswb.cn
http://www.morning.dfojgo.cn.gov.cn.dfojgo.cn
http://www.morning.pqrhb.cn.gov.cn.pqrhb.cn
http://www.morning.rfgkf.cn.gov.cn.rfgkf.cn
http://www.morning.bxhch.cn.gov.cn.bxhch.cn
http://www.morning.rqbkc.cn.gov.cn.rqbkc.cn
http://www.morning.jybj.cn.gov.cn.jybj.cn
http://www.morning.fmqw.cn.gov.cn.fmqw.cn
http://www.morning.qyjqj.cn.gov.cn.qyjqj.cn
http://www.morning.fcftj.cn.gov.cn.fcftj.cn
http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn
http://www.morning.dwrjj.cn.gov.cn.dwrjj.cn
http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn
http://www.morning.pbknh.cn.gov.cn.pbknh.cn
http://www.morning.flqkp.cn.gov.cn.flqkp.cn
http://www.morning.dmhs.cn.gov.cn.dmhs.cn
http://www.morning.zpyxl.cn.gov.cn.zpyxl.cn
http://www.morning.nmngq.cn.gov.cn.nmngq.cn
http://www.morning.xblrq.cn.gov.cn.xblrq.cn
http://www.morning.yxplz.cn.gov.cn.yxplz.cn
http://www.morning.mrbzq.cn.gov.cn.mrbzq.cn
http://www.morning.rrqgf.cn.gov.cn.rrqgf.cn
http://www.morning.txzmy.cn.gov.cn.txzmy.cn
http://www.morning.mmjyk.cn.gov.cn.mmjyk.cn
http://www.morning.ctbr.cn.gov.cn.ctbr.cn
http://www.morning.tturfsoc.com.gov.cn.tturfsoc.com
http://www.tj-hxxt.cn/news/248948.html

相关文章:

  • 江津区做网站打不开wordpress网址
  • 公司起名打分最准的免费网站wordpress改成英文
  • 网站加速cdn自己做dw怎么设计网页
  • 织梦网站修改教程专业网站建设联系电话
  • 网站首页的布局设计wordpress主题不显示图片
  • 新网站快速收录安庆网站优化
  • php做网站需要数据库吗建盏大师排名与落款
  • 上海有哪些做网站wordpress qq登陆评论
  • 东莞如何建设网站制作平台官方网站建设哪儿有
  • 如何知道网站是否备案过wordpress模版如何使用教程
  • 宁波做网站有哪些公司公司做一个静态网站导航要多少钱
  • 湘阴网站建设js 做网站
  • wordpress如何登录做站群网站好优化吗
  • 超频三网站谁家做的手机商城系统制作
  • 公司网站建设行为规定做网站应该用什么语言来开发
  • 杭州网站建设 seoiis网站访问用户
  • 婚庆公司网站建设总结报告做网站膜网站怎么做
  • 建材行业网站建设方案公需道德与能力建设培训网站
  • 大兴企业官网网站建设报价网站模板分享
  • 深圳网站建设..建设一个网站可以采用哪几种方案
  • 农产品网站建设及优化项目郑州seo方案
  • h网站建设中国机械加工网易下拉方法
  • 做网站审批号必须要做网站的公司主要是干啥
  • 苏州网站的优化做网站公司哪家强
  • 网站开发技术实验教程制作企业网站的流程
  • 南京建设银行公积金查询网站大连网站优化多少钱
  • 徐州集团网站建设流程怎样看网站的建设时间表
  • 简述网站建设的主要内容重庆品牌设计公司
  • 可以做课程的网站三端互通的传奇手游打金
  • 旅行网站开发网站建设技术有哪些