耗时一天,我用AI开发了AI小程序

小码哥从事前后端开发近十年,但是随着技术的更新迭代,有时候没有时间和精力去优化UI、实现一些前后端功能,以及解决一些bug。特别是我想开发小码哥AI的移动端,但觉得自己没有那么多时间去研究移动端了,准备放弃了,后来尝试了 国产AI(后面会介绍),测试了一下,完全能满足我的开发需求,瞬间感觉我又行了。

AI一边帮我写代码,我一边刷剧,不吹牛P的,可以看看我的成果。我使用uniapp框架,一举多得,可以发布微信小程序、h5页面、手机端app,目前微信小程序、h5都是已经跑通了,后续测试手机端app,后端统一使用springboot框架,统一管理和维护,后台试了试国产的AI大模型,直接帮我开发前端,以及完成和后端的对接。小码哥承诺:

目前一句话改图,免费、免费、免费! 如果访问不了,可能是浏览器自动加了https,把https改成http即可。

01、移动端

02、PC端

我使用了vue3款框架,开发起来还是比较顺畅的

这是原图

这是AI修改后的图,提示词为:改成红色短发

效果

这是原图

这是效果图,出图时间大概是20秒左右。

03、 代码部分

我使用了deepseek和通义灵码,大家可以去对比一下,各有各的优势,比如给我实现一个手机号和验证码登录的页面,我的提示词如下:我在使用uniapp开发,帮我优化一下UI和功能,第一,点击获取验证码时,必须要输入手机号,手机号必须要校验正确性,点击注册时,必须要输入手机号和验证码,请给我完整代码,方便我复制。

完整代码如下:

javascript 复制代码
<template>
 <view class="register-container">
    <view class="register-content">
      <uni-forms ref="registerForm" :model="formData">
        <uni-forms-item label="手机号" name="phone">
          <uni-easyinput type="number" v-model="formData.phone" placeholder="请输入手机号" />
        </uni-forms-item>
        <uni-forms-item label="验证码" name="code">
          <view class="code-container">
            <uni-easyinput type="number" v-model="formData.code" placeholder="请输入验证码" />
            <button :disabled="isCounting" @click="getVerificationCode" class="code-button">{{ codeButtonText }}</button>
          </view>
        </uni-forms-item>
        <button type="primary" @click="submitForm" class="submit-button">注册</button>
      </uni-forms>
    </view>
  </view>
</template>

<script setup>
import { ref, reactive, computed } from 'vue';
import { get,post } from '/common/api/request.js';

const formData = reactive({
  phone: '',
  code: ''
});

// 校验手机号格式
const isPhoneValid = computed(() => {
  return /^1[3456789]\d{9}$/.test(formData.phone);
});



const useCountdown = (seconds) => {
  const isCounting = ref(false);
  const countdownText = ref(seconds);

  const startCountdown = () => {
    isCounting.value = true;
    countdownText.value = seconds;

    const interval = setInterval(() => {
      countdownText.value--;
      if (countdownText.value <= 0) {
        clearInterval(interval);
        isCounting.value = false;
      }
    }, 1000);
  };

  return {
    isCounting,
    countdownText,
    startCountdown
  };
};

const { isCounting, countdownText, startCountdown } = useCountdown(60);

const codeButtonText = computed(() => isCounting.value ? `${countdownText.value}秒后重试` : '获取验证码');


const smsVO = reactive({
	smsCode: {
		mobile: '',
		scene: 21
	},
	loginSms: {
	  mobile: '',
	  code: ''
	}
})


const getVerificationCode = async () => {
  smsVO.smsCode.mobile = formData.phone;
  if (!formData.phone) {
    uni.showToast({
      title: '手机号不能为空',
      icon: 'none'
    });
    return;
  }

  if (!isPhoneValid.value) {
    uni.showToast({
      title: '手机号格式不正确',
      icon: 'none'
    });
    return;
  }

  console.log("isCounting value:", isCounting.value);
  if (!isCounting.value) {
    startCountdown();
    try {
      const response = await post('/system/auth/send-sms-code', smsVO.smsCode);
      if (response.code === 0) {
        uni.showToast({
          title: '验证码已发送',
          icon: 'success'
        });
      } else {
        uni.showToast({
          title: '验证码发送失败',
          icon: 'none'
        });
      }
    } catch (error) {
      console.error("发送验证码失败", error);
      uni.showToast({
        title: '验证码发送失败,请重试',
        icon: 'none'
      });
    }
  }
};

// 注册提交
const submitForm = async () => {
  if (!formData.phone) {
    uni.showToast({
      title: '手机号不能为空',
      icon: 'none'
    });
    return;
  }

  if (!isPhoneValid.value) {
    uni.showToast({
      title: '手机号格式不正确',
      icon: 'none'
    });
    return;
  }

  if (!formData.code) {
    uni.showToast({
      title: '验证码不能为空',
      icon: 'none'
    });
    return;
  }
	console.info('smsVO.smsCode',smsVO.smsCode);
    smsVO.loginSms.mobile = formData.phone;
    smsVO.loginSms.code = formData.code;
	const response = await post('/system/auth/sms-login', smsVO.loginSms);

	if (response && response.code == 0) {
		uni.showLoading({
			title: '注册登录中...'
		});
		const { accessToken, expiresTime, refreshToken, userId } = response.data;
		uni.setStorageSync('token', accessToken);
		uni.setStorageSync('expiresTime', expiresTime);
		uni.setStorageSync('refreshToken', refreshToken);
		uni.setStorageSync('userId', userId); // 缓存 token
		
		// 缓存用户头像和昵称
		
		uni.setStorageSync('avatarUrl', 'https://www.cells88.com/wp-content/uploads/2023/11/2023110300595934.png');//使用网络图片
		uni.setStorageSync('nickName', userId);
		
		
		// 导航到标签栏页面
		uni.switchTab({
			url: '/pages/tabbar/index/index'
		});
	} else {
	  console.log('登录失败:', response);
	  uni.showToast({
	    title: response.msg,
	    icon: 'none'
	  });
	}
};
</script>

<style lang="scss">
.register-container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100vh;
  background-color: #f5f5f5;

  .register-content {
    width: 80%;
    max-width: 400px;
    padding: 20px;
    background-color: white;
    border-radius: 10px;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);

    .code-container {
      display: flex;
      align-items: center;

      .code-button {
        margin-left: 10px;
        padding: 5px 10px;
        background-color: #007aff;
        color: white;
        border: none;
        border-radius: 5px;
        cursor: pointer;

        &:disabled {
          background-color: #ccc;
          cursor: not-allowed;
        }
      }
    }

    .submit-button {
      width: 100%;
      margin-top: 20px;
    }
  }
}
</style>

这只是一个简单的例子,实现的效果如下:

如果大家感兴趣,文末点击名片,欢迎一起交流,后续我将逐步分享我是如何实现AI功能的。

相关推荐
cnbestec32 分钟前
GelSight Mini视触觉传感器凝胶触头升级:增加40%耐用性,拓展机器人与触觉AI 应用边界
人工智能·机器人
bohu8338 分钟前
ros2-4.2 用python实现人脸识别
人工智能·opencv·人脸识别·ros2·服务调用
Loving_enjoy1 小时前
ChatGPT 数据分析与处理使用详解
大数据·人工智能
whaosoft-1431 小时前
51c自动驾驶~合集45
人工智能
刘大猫262 小时前
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
人工智能·操作系统·团队管理
hfmeet2 小时前
行为分析:LSTM、3D CNN、SlowFast Networks。这三者的优缺点
人工智能·cnn·lstm
小灰灰__2 小时前
LLM大模型实践10-聊天机器人
人工智能·chatgpt·机器人
MicrosoftReactor2 小时前
技术速递|通过 .NET Aspire 使用本地 AI 模型
人工智能·.net·.net aspire
Lunar*3 小时前
视频抽帧工具:按需提取高质量数据集
人工智能·数据分析
爱研究的小牛3 小时前
Synthesia技术浅析(二):虚拟人物视频生成
人工智能·深度学习·机器学习·aigc·音视频