资讯动态

Dify开源AI应用开发平台:从零部署到20+实战项目搭建指南

发布时间:2026/8/25 1:23:17 来源:尧图企业网站定制
这次我们来看一个能让你快速上手 AI 应用开发的开源平台——Dify。它不是某个单一的模型而是一个集成了大模型能力、知识库、工作流和智能体构建功能的低代码平台。简单说有了它你不需要从零开始写复杂的后端代码就能搭建出功能丰富的 AI 应用比如智能客服、内容生成助手、数据分析工具等。对于想进入 AI 应用开发领域但又苦于技术门槛的开发者或团队来说Dify 提供了一个非常高效的起点。Dify 的核心价值在于“开箱即用”和“可视化编排”。它帮你封装了与大模型如 GPT、Claude、国产大模型的交互、上下文管理、知识库检索、函数调用等复杂逻辑你只需要通过拖拽工作流节点就能组合出强大的 AI 应用。本文将带你从零开始完成 Dify 的本地部署并手把手搭建超过 20 个不同类型的 AI 应用实例涵盖从简单的对话机器人到复杂的多步骤数据处理流程。整个过程重点关注实操避开那些概念性的空谈直接告诉你每一步怎么做以及可能会遇到哪些坑。无论你是想学习 AI 应用开发的全栈工程师、希望将 AI 能力集成到业务中的产品经理还是对自动化工具感兴趣的技术爱好者这篇文章都能提供一条清晰的路径。我们会从环境准备、一键部署开始逐步深入到工作流设计、知识库构建和 API 集成确保你看完就能动手做出东西。1. 核心能力速览在深入细节之前我们先通过一个表格快速了解 Dify 能做什么以及它的技术特点。能力项说明项目类型开源的低代码 AI 应用开发平台核心功能可视化工作流编排、智能体Agent构建、知识库RAG管理、模型集成、API 服务发布部署方式支持 Docker 一键部署、源码部署也提供云端 SaaS 服务硬件门槛对本地部署而言主要消耗在于运行的大模型。平台本身资源占用不高2核4G内存的服务器即可运行。知识库嵌入和推理依赖所选模型的硬件要求。模型支持支持 OpenAI GPT系列、Anthropic Claude、Cohere、Hugging Face 模型及国内主流大模型通义千问、文心一言、智谱GLM、DeepSeek等启动方式通过 Docker Compose 命令一键启动所有服务前端、后端、数据库等接口能力提供完整的 RESTful API可用于集成到第三方系统也支持 SSEServer-Sent Events流式输出批量任务工作流支持批量处理输入知识库支持批量文档上传与处理适合场景快速构建 AI 应用原型、企业内部知识问答系统、自动化内容生成与处理流程、AI 智能体开发从表格可以看出Dify 的重点是降低 AI 应用开发的门槛。它不要求你精通深度学习或大模型原理而是让你像搭积木一样通过组合预定义的模块来创造价值。2. 适用场景与使用边界Dify 是一个强大的工具但明确其适用边界能帮助你更好地决策是否采用它。它非常适合以下场景快速原型验证当你有一个 AI 应用的想法需要快速验证其可行性和用户体验时用 Dify 搭建原型可能只需要几小时而不是几周。企业内部工具开发例如搭建一个连接公司内部文档的知识库问答机器人或是一个自动生成周报、会议纪要的助手。教育学习与培训对于想学习 AI 应用开发流程、提示工程、RAG 原理的开发者Dify 提供了一个可视化的实践环境。中小型 AI 产品开发对于功能相对聚焦、逻辑清晰的 AI 应用完全可以在 Dify 上完成开发和部署无需自建复杂的技术栈。它可能不适合或需要注意的场景超高性能与定制化需求如果应用需要极低的延迟、极高的并发或深度定制化的模型推理逻辑、缓存策略直接使用模型原生 SDK 或自建服务可能更灵活。完全离线的边缘环境Dify 平台本身可以本地部署但其集成的多数大模型服务需要网络调用除非你在本地部署了开源大模型并通过 Dify 的本地模型推理功能连接。数据安全与合规使用 Dify 时你的提示词、知识库文档、与模型的交互数据会经过 Dify 服务处理。在私有化部署的前提下数据可控性高。若使用其云端服务需仔细阅读其数据政策。版权与内容合规通过 Dify 构建的应用生成的内容需确保符合法律法规不产生侵权、虚假、有害信息。开发者需对应用输出负责并设置必要的审查与过滤机制。3. 环境准备与前置条件在开始安装 Dify 之前请确保你的本地或服务器环境满足以下基本要求。这是后续一切操作的基础。1. 操作系统推荐Linux (Ubuntu 20.04/22.04 LTS, CentOS 7/8) 或 macOS。也可行Windows 10/11 (需安装 WSL 2 或 Docker Desktop)。2. 容器化环境 (必须)Dify 官方推荐使用 Docker 和 Docker Compose 进行部署这能最大程度避免环境依赖问题。Docker Engine: 版本 20.10.0 或更高。Docker Compose: 版本 v2.0.0 或更高。在 Linux 上通常通过apt或yum安装的docker-compose是 v1 版本建议安装 Docker Compose Plugin (v2)。验证安装# 检查 Docker 版本 docker --version # 检查 Docker Compose 版本 (V2) docker compose version3. 硬件资源CPU: 至少 2 核。内存: 至少 4 GB。如果计划同时运行本地大模型则需要根据模型大小增加内存通常 16GB 或更多。磁盘空间: 至少 10 GB 可用空间用于存放 Docker 镜像、数据库和知识库文档。网络: 能够稳定访问互联网以下载 Docker 镜像和调用云端大模型 API如果使用。4. 端口占用Dify 默认会占用以下端口请确保它们未被其他程序占用3000: 前端 Web 界面。5001: 后端 API 服务。6379: Redis 服务用于缓存和会话。5432: PostgreSQL 数据库。如果端口冲突可以在后续的docker-compose.yaml配置文件中进行修改。4. 安装部署与启动方式我们将采用最主流的 Docker Compose 方式进行一键部署。这种方式隔离性好依赖清晰最适合新手和快速启动。步骤 1获取部署文件首先在你的工作目录例如~/dify下从 Dify 的 GitHub 仓库获取最新的docker-compose.yaml配置文件。# 创建一个专门目录 mkdir -p ~/dify cd ~/dify # 下载官方 docker-compose 文件 curl -o docker-compose.yaml https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml如果网络环境不佳也可以直接访问 GitHub 仓库手动下载该文件。步骤 2启动 Dify 服务在包含docker-compose.yaml文件的目录下执行一条命令即可启动所有服务。# 在后台启动所有服务 docker compose up -d这条命令会执行以下操作从 Docker Hub 拉取所需的镜像dify-api, dify-web, postgres, redis 等。创建并启动对应的容器。初始化数据库。首次执行时由于需要拉取镜像耗时可能较长取决于网络速度。执行成功后你会看到类似[] Running 5/5的提示。步骤 3验证服务状态启动后可以使用以下命令检查容器是否正常运行# 查看所有容器状态 docker compose ps正常情况下所有服务的State栏应显示为Up。你也可以查看日志来监控启动过程# 查看所有服务的日志 docker compose logs -f # 仅查看后端 API 服务的日志 docker compose logs -f dify-api如果看到日志中出现数据库连接成功、服务启动在指定端口等字样通常表示启动成功。步骤 4访问 Web 控制台在浏览器中打开http://localhost:3000如果部署在远程服务器请将localhost替换为服务器 IP 地址。 首次访问你会进入初始化设置页面需要创建管理员账户输入邮箱和密码。配置初始设置如团队名称等。 完成设置后即可登录进入 Dify 的主控制台。至此Dify 平台已经成功部署并可以访问。接下来我们将进入核心的功能实践环节。5. 功能测试与效果验证搭建你的第一个 AI 应用登录控制台后我们通过构建几个典型的 AI 应用来验证 Dify 的核心功能。我们从简单到复杂逐步深入。5.1 基础对话机器人Chat Application这是最直接的功能用于测试与大模型的基础连接。测试目的验证 Dify 能否成功连接并调用大模型 API完成基础的对话交互。操作步骤在控制台点击“创建应用”选择“对话型应用”。为应用命名例如“我的第一个聊天助手”。进入应用构建界面后在左侧边栏选择“模型供应商”。关键配置选择一个模型提供商如 OpenAI、通义千问、智谱AI等并填入对应的 API Key 和 Base URL如果需要。这是 Dify 与 AI 大脑通信的桥梁。以 OpenAI 为例你需要一个有效的 OpenAI API Key。你可以在“模型供应商”设置中全局配置也可以在当前应用内单独配置。配置完成后切换到右侧的“对话”预览窗口。输入测试问题例如“用一句话介绍 Dify 是什么”预期结果与判断成功几秒内你会收到一个连贯、合理的回答例如“Dify 是一个开源的 LLM 应用开发平台允许开发者通过可视化工作流快速构建和部署 AI 应用。”失败排查无响应或报错检查 API Key 是否正确、网络是否通畅、模型服务地址Base URL是否配置正确。回答内容奇怪检查选择的模型是否合适或尝试调整“提示词”部分给模型更明确的指令。5.2 知识库问答应用RAG Application这是 Dify 的杀手锏功能让 AI 能够基于你提供的专属资料回答问题。测试目的验证知识库的创建、文档处理切分、向量化和基于知识的准确问答能力。操作步骤在控制台顶部导航栏进入“知识库”。点击“创建知识库”命名并选择嵌入模型Embedding Model。对于中文text-embedding-ada-002或BAAI/bge-large-zh都是不错的选择。Dify 内置了一些选项。创建后进入知识库点击“上传文件”。支持 TXT、PDF、Word、PPT、Excel、Markdown 等多种格式。上传一份你的测试文档例如一份产品说明书或一篇技术文章。上传后Dify 会自动进行文本提取、分块和向量化存储。等待处理状态变为“已索引”。回到“应用”页面创建一个新的“对话型应用”或“文本生成型应用”。在应用构建界面的“上下文”部分添加“知识库检索”节点。关联你刚才创建的知识库并设置检索参数如返回最相关的 2 个片段。在预览窗口提问一个文档中明确包含答案的问题。预期结果与判断成功AI 的回答能够准确引用文档中的信息并且回答与文档内容一致。例如文档中提到“产品保修期为三年”提问“保修多久”应回答“三年”。失败排查检索不到内容检查知识库处理状态是否为“已索引”检查提问是否与文档内容相关度过低尝试调整检索的相似度阈值或分块大小。回答与文档不符检查是否同时开启了联网搜索或其他上下文导致信息混杂检查提示词是否要求模型“严格基于知识库内容回答”。5.3 可视化工作流Workflow工作流是 Dify 实现复杂逻辑的核心。我们构建一个简单的“内容重写情感分析”串联流程。测试目的验证多个 AI 功能节点能否按顺序执行并传递数据。操作步骤创建应用时选择“工作流型应用”。进入工作流画布。从左侧节点库拖拽以下节点到画布开始节点作为流程入口。LLM 节点配置一个文本改写任务例如“将用户输入的专业技术描述改写成通俗易懂的博客风格”。另一个 LLM 节点配置一个情感分析任务例如“分析上一节点输出文本的情感倾向积极/消极/中性”。结束节点输出最终结果。用连接线将节点按顺序连接开始 - LLM改写- LLM情感分析- 结束。配置第一个 LLM 节点的输入使其接收“开始节点”传来的用户输入变量如{{#context.query#}}。配置第二个 LLM 节点的输入使其接收第一个 LLM 节点的输出变量如{{#node-1.output#}}。配置“结束节点”让它输出两个 LLM 节点的结果。保存工作流在预览区测试。输入一段技术文本如“卷积神经网络通过卷积核提取图像局部特征。”预期结果与判断成功工作流依次执行。首先输出改写后的通俗文本例如“这就像用一个特殊的小滤镜一点点扫描图片找出里面的关键图案。”然后输出对该文本的情感分析结果例如“中性”或“积极”因为是在描述技术。失败排查流程不执行检查节点连线是否正确输入输出变量名是否匹配。第二个节点报错检查变量引用语法是否正确确保引用的node-1是第一个 LLM 节点的 ID。结果不符合预期检查每个 LLM 节点的提示词是否清晰明确。通过以上三个测试你已经验证了 Dify 最核心的对话、知识库和工作流能力。接下来我们看看如何将这些应用通过 API 对外提供服务。6. 接口 API 与批量任务Dify 不仅提供 Web 界面更重要的是能将你构建的应用封装成 API集成到任何系统中。同时它也支持高效的批量处理。6.1 API 接口调用每个创建的应用都会自动生成对应的 API。接口启动方式Dify 后端服务dify-api容器在启动时就已经提供了 API 服务默认运行在http://localhost:5001。获取 API 信息在 Dify 控制台进入任意一个应用。点击顶部“发布”标签页然后选择“API 访问”。在这里你可以看到API 密钥用于鉴权。API 端点该应用的专用调用地址。调用示例提供了cURL和Python的代码片段。Python 调用示例 假设你创建了一个知识库问答应用下面是如何通过 Python 调用它。import requests import json # 配置参数 api_key 你的-API-KEY # 从 Dify 控制台获取 app_endpoint https://api.dify.ai/v1/chat-messages # 你的应用 API 地址本地部署则为 http://localhost:5001/v1/chat-messages # 构造请求头 headers { Authorization: fBearer {api_key}, Content-Type: application/json } # 构造请求体 payload { inputs: {}, # 如果有工作流变量在这里传入 query: Dify 平台的主要特点是什么, # 用户问题 response_mode: streaming, # 流式响应或阻塞式 (blocking) conversation_id: , # 可选用于多轮对话保持上下文 user: test_user_001 # 用户标识 } # 发送 POST 请求 response requests.post(app_endpoint, headersheaders, jsonpayload, streamTrue) # 处理流式响应 if response.status_code 200: for line in response.iter_lines(): if line: decoded_line line.decode(utf-8) if decoded_line.startswith(data: ): data decoded_line[6:] # 去掉 data: 前缀 if data ! [DONE]: try: event_data json.loads(data) # 提取回答内容 if answer in event_data: print(event_data[answer], end, flushTrue) except json.JSONDecodeError: pass print() # 换行 else: print(f请求失败状态码: {response.status_code}) print(response.text)关键点response_mode:streaming适合需要实时显示的场景blocking会等待完整响应后再返回。conversation_id: 如果需要维持会话上下文需在后续请求中传入相同的 ID。user: 用于区分不同终端用户便于审计。6.2 批量任务处理Dify 本身没有专门的“批量任务”队列管理界面但可以通过 API 轻松实现。方案一循环调用 API对于已知的批量输入列表最简单的方式是写脚本循环调用上述 API。import requests import json import time api_key 你的-API-KEY app_endpoint 你的-应用-API-地址 headers { Authorization: fBearer {api_key}, Content-Type: application/json } questions [ 问题一什么是机器学习, 问题二Dify 支持哪些大模型, 问题三如何创建一个知识库 ] answers [] for i, query in enumerate(questions): print(f处理第 {i1} 个问题: {query}) payload { inputs: {}, query: query, response_mode: blocking, # 使用阻塞模式等待单个结果 user: fbatch_user_{i} } try: response requests.post(app_endpoint, headersheaders, jsonpayload, timeout60) if response.status_code 200: result response.json() answers.append(result.get(answer, No answer)) else: answers.append(fError: {response.status_code}) print(f 请求失败: {response.text}) except Exception as e: answers.append(fException: {str(e)}) print(f 发生异常: {e}) time.sleep(1) # 避免请求过快根据模型速率调整 print(\n批量处理完成结果如下) for q, a in zip(questions, answers): print(fQ: {q}\nA: {a}\n)方案二结合工作流和“代码执行”节点对于更复杂的批量处理逻辑如读取文件夹下所有文件分别处理并保存结果可以在工作流中使用“代码执行”节点编写 Python 脚本实现应用内的批量处理。这需要更高级的工作流设计。失败重试建议 在批量脚本中应对网络超时、API 限流429 状态码等情况加入重试机制和指数退避策略以提高任务完成的可靠性。7. 资源占用与性能观察了解 Dify 运行时的资源消耗有助于你规划服务器配置和优化性能。1. 平台基础服务资源占用运行docker compose up -d后可以通过以下命令观察资源使用情况# 查看所有容器的资源占用CPU内存 docker stats通常情况下在空闲状态下dify-api和dify-web各占用约 200-500 MB 内存。postgres(数据库)占用约 100-300 MB 内存。redis(缓存)占用约 50-100 MB 内存。 平台基础服务总计约占用 1-1.5 GB 内存。CPU 占用很低主要在响应请求时波动。2. 知识库处理性能知识库处理文档解析、文本分块、向量化是相对耗时的操作其性能主要取决于文档大小与数量处理一本电子书和一篇短文的时间差异巨大。嵌入模型本地运行的嵌入模型比调用云端 API 慢但数据不出私域。服务器 CPU文本处理和向量计算受 CPU 性能影响。观察方法在上传文档时观察控制台“知识库”页面的处理状态或查看dify-api容器的日志 (docker compose logs -f dify-api)。3. 推理性能与成本这是资源消耗的大头但完全取决于你选择的大模型。调用云端 API如 GPT-4Dify 平台本身消耗可忽略性能与成本由云端模型决定。你需要关注 API 的响应延迟和 Token 消耗。本地模型如果你通过 Dify 的“本地模型推理”功能连接了本地部署的 LLM如 Ollama、vLLM 托管的模型那么 GPU/CPU 和显存/内存的占用将由该本地模型决定。这与你直接运行该模型相同。观察方法使用nvidia-smiGPU或htopCPU监控本地模型推理进程的资源使用情况。4. 如何降低资源占用与优化仅部署必要服务如果你只使用 Dify 的 API可以考虑不启动前端 Web 服务 (dify-web)。优化知识库配置调整文本分块Chunk的大小和重叠度找到精度与检索速度的平衡点。对于大规模知识库考虑使用性能更好的向量数据库如 Qdrant、Weaviate但 Dify 默认的 PostgreSQLpgvector已能满足多数场景。缓存策略对于相同或相似的用户查询可以利用 Redis 缓存检索结果或最终答案减少对模型和向量库的重复调用。模型选择在满足需求的前提下选择更轻量、更快的模型如 GPT-3.5-Turbo 相比 GPT-4。8. 常见问题与排查方法在部署和使用 Dify 的过程中你可能会遇到一些问题。下表列出了常见问题及其解决方法。问题现象可能原因排查方式解决方案启动失败docker compose up -d报错1. Docker 或 Docker Compose 未安装或版本过低。2. 端口被占用。3. 镜像拉取失败。1. 运行docker --version和docker compose version检查。2. 运行netstat -tulnp | grep :端口号检查 3000, 5001 等端口。3. 查看命令行的错误信息通常是网络超时。1. 升级或重新安装 Docker。2. 修改docker-compose.yaml中的端口映射如5001:5001改为5002:5001。3. 配置 Docker 镜像加速器或手动docker pull镜像。Web 控制台 (localhost:3000) 无法访问1. 服务未成功启动。2. 防火墙/安全组阻止了端口访问。3. 前端容器启动失败。1. 运行docker compose ps查看容器状态。2. 运行docker compose logs dify-web查看前端日志。3. 检查服务器防火墙规则。1. 根据日志修复错误后重启服务docker compose restart。2. 开放服务器对应的端口3000。3. 确保docker-compose.yaml中dify-web服务配置正确。API 调用返回 401 或 403 错误API Key 错误、过期或未正确传入。1. 检查请求头中的Authorization字段格式是否为Bearer your-api-key。2. 在 Dify 控制台“API 访问”页面确认 API Key 是否正确。1. 使用正确的 API Key。2. 如果怀疑泄露可以在 Dify 控制台重置 API Key。知识库文档一直处于“处理中”或“索引中”1. 嵌入模型配置错误或不可用。2. 文档格式复杂解析失败。3. 服务器资源不足处理超时。1. 检查知识库设置的“嵌入模型”是否可用如 API Key 有效。2. 查看dify-api容器日志看是否有解析错误。3. 观察服务器 CPU/内存使用率。1. 更换或重新配置嵌入模型。2. 尝试将文档转换为纯文本.txt或 Markdown 格式再上传。3. 增加服务器资源或分批次上传小量文档。工作流运行时报错提示变量未找到工作流节点间的变量引用错误。节点 ID 或变量名拼写错误。1. 检查出错节点配置的输入框中变量引用语法如{{#node-1.output#}}是否正确。2. 确认被引用的上游节点 ID 是否匹配。1. 使用变量选择器点击输入框旁的{...}图标来选取变量避免手动输入错误。2. 重新连接节点确保数据流方向正确。调用大模型 API 超时或返回空内容1. 网络问题无法连接模型供应商。2. 模型供应商 API 限流或故障。3. 提示词导致模型输出被截断或为空。1. 在服务器上使用curl或ping测试到模型 API 地址的网络连通性。2. 查看模型供应商的状态页面或控制台。3. 简化提示词进行测试。1. 检查网络代理或防火墙设置。2. 等待限流解除或切换备用模型。3. 优化提示词并检查模型的输出 Token 限制。数据库连接失败日志显示database system is shutting downPostgreSQL 容器可能因磁盘空间不足、配置错误等原因崩溃。运行docker compose logs postgres查看数据库容器的详细错误日志。1. 检查磁盘空间df -h。2. 尝试重启数据库容器docker compose restart postgres。3. 备份数据后重建数据库容器谨慎操作。9. 最佳实践与使用建议基于大量实践以下建议能帮助你更稳定、高效地使用 Dify。环境隔离与备份使用 Docker Compose 部署本身就是一种环境隔离。定期备份docker-compose.yaml文件和重要的环境变量文件。重要定期备份 PostgreSQL 数据库。数据库容器内的数据是持久化的通过 volume但最好有额外的备份。可以使用docker exec执行pg_dump命令进行备份。配置管理将敏感的配置如各模型供应商的 API Key通过环境变量文件.env管理而不是硬编码在docker-compose.yaml中。Dify 的 Compose 文件支持读取.env。为不同环境开发、测试、生产准备不同的配置。应用设计与提示词工程从小开始先构建一个最小可行应用MVP测试核心流程再逐步添加复杂功能。模块化工作流将常用的功能如文本清洗、特定格式生成封装成可复用的工作流片段或独立应用。精心设计提示词这是影响 AI 应用效果最关键的因素。在 Dify 的“提示词”编辑器中充分利用上下文变量、系统指令和少量示例Few-shot来引导模型。知识库优化文档预处理上传前尽量保证文档格式规范。对于复杂 PDF可先尝试转换为文本或 Markdown。分块策略根据文档类型调整分块大小。法律合同适合大块技术问答适合小块。适当的重叠Overlap有助于防止答案被切断。测试检索效果在知识库页面使用“测试”功能输入各种问题检查返回的文本片段是否相关。API 集成与安全限流与鉴权在生产环境使用 Dify API 时应考虑在前端如 Nginx或 API 网关层添加速率限制和额外的身份验证。监控与日志监控 API 的响应时间、错误率和 Token 消耗。Dify 的 API 日志可以帮助你分析问题。输入输出过滤对于面向公众的应用务必对用户输入和模型输出进行内容安全过滤防止滥用和产生不良内容。版权与合规数据来源确保上传到知识库的文档拥有合法的使用权。生成内容审核AI 生成的内容可能存在事实性错误幻觉或偏见。对于重要用途建立人工审核流程。用户隐私如果应用处理用户个人数据需明确告知并遵守相关隐私法规。10. 总结与下一步Dify 通过将大模型能力、知识库检索和工作流编排封装成一个直观的可视化平台显著降低了 AI 应用开发的门槛。从本文的实践来看它的核心优势在于“快速集成”和“灵活组装”。你不需要关心向量数据库如何搭建、对话状态如何管理这些底层细节而是可以专注于业务逻辑和用户体验设计。对于初学者最应该优先验证的功能就是“连接一个大模型”和“创建一个知识库问答应用”。这两个功能能立即让你感受到 AI 能力的提升。最容易踩的坑通常是环境配置端口冲突、镜像拉取失败和API Key 配置错误按照本文的排查方法基本都能解决。掌握了基础之后下一步可以深入探索智能体Agent开发利用 Dify 的工具调用Function Calling能力让 AI 不仅能回答还能执行操作如查询天气、发送邮件。复杂工作流尝试构建包含条件判断、循环、并行处理的多分支工作流实现更复杂的自动化流程。多模态应用结合支持图像识别的模型如 GPT-4V构建能理解图片内容的 AI 应用。性能调优与扩展研究如何优化知识库检索速度、如何对高并发 API 进行负载均衡、如何将 Dify 与你的现有业务系统深度集成。Dify 的社区版功能已经非常强大足以支撑个人项目和中小型商业应用。将其部署在你的本地或私有服务器上你就拥有了一个完全可控的 AI 应用开发工厂。建议收藏本文在搭建过程中遇到具体问题时随时回来查阅对应的章节。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价