目前市面上最成熟、最主流的架构组合是 前端 UniApp + 后端 PHP(ThinkPHP 6/8 框架)。这套技术栈不仅能实现一套代码同时发布到微信小程序、H5、公众号和App,而且开发效率高、生态完善,非常适合二次开发和快速搭建。
💻 核心搭建逻辑与流程
环境准备:推荐使用 Linux 服务器,搭建 Nginx + PHP (7.4及以上) + MySQL (5.7/8.0) + Redis 的运行环境。
后端搭建(PHP):将源码上传至服务器,配置数据库连接文件,导入初始SQL数据,并设置好伪静态规则。
前端搭建(UniApp):使用 HBuilderX 导入前端源码,修改接口请求的基础域名(BaseURL),然后一键编译打包成微信小程序或App。
第三方服务对接:在后台配置好即时通讯(IM)、音视频通话(如腾讯云TRTC/声网)、短信接口以及对象存储(OSS/COS)的密钥。
📝 发帖功能代码片段(基于 UniApp + PHP)
在交友系统中,发帖(动态/圈子)是沉淀内容、提高用户留存的核心功能。以下是一个简化版的发帖功能实现:
- 前端代码(UniApp Vue 模板)
用户在前端输入内容并选择图片后,通过 uni.request 提交到后端接口
<br> <button @click="submitPost">发布动态</button><br> </view><br></template> <p><script><br>export default {<br> data() {<br> return {<br> postContent: ''<br> }<br> },<br> methods: {<br> submitPost() {<br> if (!this.postContent.trim()) {<br> return uni.showToast({ title: '内容不能为空', icon: 'none' });<br> }<br> // 获取本地存储的用户Token<br> const token = uni.getStorageSync('user_token');</p> <pre><code> uni.request({ url: 'https://你的域名/api/post/create', // 后端发帖接口 method: 'POST', header: { 'token': token }, data: { content: this.postContent }, success: (res) => { if (res.data.code === 200) { uni.showToast({ title: '发布成功' }); this.postContent = ''; } else { uni.showToast({ title: res.data.msg, icon: 'none' }); } } }); } </code></pre><p> }<br>}<br></script></p> <ol> <li>后端代码(PHP ThinkPHP 控制器)</li> </ol> <p>后端接收前端传来的内容,进行基础的安全过滤(防止XSS攻击),并存入 MySQL 数据库</p> <p><?php<br>namespace app\api\controller;<br>use think\facade\Db;<br>use think\facade\Request;</p> <p>class Post<br>{<br> // 发布动态接口<br> public function create()<br> {<br> // 1. 获取当前登录用户ID(通过Token解析)<br> $userId = $this->getAuthUserId();<br> if (!$userId) {<br> return json(['code' => 401, 'msg' => '请先登录']);<br> }</p> <pre><code> // 2. 接收并过滤前端提交的内容 $content = htmlspecialchars(trim(Request::post('content'))); if (empty($content)) { return json(['code' => 400, 'msg' => '发布内容不能为空']); } // 3. 插入数据库 try { $postId = Db::name('posts')->insertGetId([ 'user_id' => $userId, 'content' => $content, 'create_time' => time(), 'status' => 1 // 1正常 0待审核 ]); return json(['code' => 200, 'msg' => '发布成功', 'data' => ['post_id' => $postId]]); } catch (\Exception $e) { return json(['code' => 500, 'msg' => '发布失败,请稍后重试']); } } </code></pre><p>}<br><img src="https://ucc.alicdn.com/pic/developer-ecology/js5nmmyboofuy_66147f81893043399a0aec207bd5ce78.png" alt="交友2.png"></p>