uniapp框架——初始化vue3项目(搭建ai项目第一步)

简介: uniapp框架——初始化vue3项目(搭建ai项目第一步)

⭐前言

大家好,我是yma16,本文分享关于 uniapp框架——初始化vue3项目(搭建ai项目第一步)。

vue3系列相关文章:

vue3 + fastapi 实现选择目录所有文件自定义上传到服务器

前端vue2、vue3去掉url路由“ # ”号——nginx配置

csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板

认识vite_vue3 初始化项目到打包

python_selenuim获取csdn新星赛道选手所在城市用echarts地图显示

让大模型分析csdn文章质量 —— 提取csdn博客评论在文心一言分析评论区内容

前端vue3——html2canvas给网站截图生成宣传海报

拖拽相关文章

前端——html拖拽原理

前端vue3——实现二次元人物拼图校验

💖 小程序系列文章

小程序组件传值

小程序自定义微信昵称和头像

小程序制作markdown博客

小程序结合chatgpt制作聊天页面

小程序复制到粘贴板的功能实现

小程序的markdown代码块复制功能

小程序图片二维码识别

小程序获取openid联动django实现

微信小程序_搜索图片功能实现

uniapp框架

uni-app 是一个使用 Vue.js

开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台。

⭐uniapp创建项目

工具:hbuilder

💖 初始化项目

创建项目选择vue3,uni ui

选择运行

目录结构

┌─uniCloud              云空间目录,阿里云为uniCloud-aliyun,腾讯云为uniCloud-tcb(详见uniCloud)
│─components            符合vue组件规范的uni-app组件目录
│  └─comp-a.vue         可复用的a组件
├─utssdk                存放uts文件
├─pages                 业务页面文件存放的目录
│  ├─index
│  │  └─index.vue       index页面
│  └─list
│     └─list.vue        list页面
├─static                存放应用引用的本地静态资源(如图片、视频等)的目录,注意:静态资源都应存放于此目录
├─uni_modules           存放[uni_module](/uni_modules)。
├─platforms             存放各平台专用页面的目录,详见
├─nativeplugins         App原生语言插件 详见
├─nativeResources       App端原生资源目录
│  ├─android            Android原生资源目录 详见
|  └─ios                iOS原生资源目录 详见
├─hybrid                App端存放本地html文件的目录,详见
├─wxcomponents          存放小程序组件的目录,详见
├─unpackage             非工程代码,一般存放运行或发行的编译结果
├─AndroidManifest.xml   Android原生应用清单文件 详见
├─Info.plist            iOS原生应用配置文件 详见
├─main.js               Vue初始化入口文件
├─App.vue               应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json         配置应用名称、appid、logo、版本等打包信息,详见
├─pages.json            配置页面路由、导航条、选项卡等页面类信息,详见
└─uni.scss              这里是uni-app内置的常用样式变量

💖 uni实例生命周期

下面我只枚举常用的几个

api 说明
onInit 监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad
onLoad 监听页面加载,该钩子被调用时,响应式数据、计算属性、方法、侦听器、props、slots 已设置完成,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参),参考示例。
onShow 监听页面显示,页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
onReady 监听页面初次渲染完成,此时组件已挂载完成,DOM 树($el)已可用,注意如果渲染速度快,会在页面进入动画完成前触发
onHide 监听页面隐藏
onUnload 监听页面卸载
onResize 监听窗口尺寸变化

💖 组件生命周期

组件的生命周期同框架的生命周期

如:

  1. vue2则是vue2的生命周期
  2. vue3则是vue3的生命周期

💖 页面调用

  1. getApp()能获取globalData充当全局变量使用
  2. getCurrentPages() 函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,数组中的元素为页面实例,第一个元素为首页,最后一个元素为当前页面。
  3. $getAppWebview() 可以得到当前webview的对象实例

💖 页面通讯

事件传递冒泡

事件定义

1. uni.$emit(eventName,OBJECT)
触发全局的自定义事件。附加参数都会传给监听器回调。
2. uni.$on(eventName,callback)
监听全局的自定义事件。事件可以由 uni.$emit 触发,回调函数会接收所有传入事件触发函数的额外参数。
3. uni.$once(eventName,callback)
监听全局的自定义事件。事件可以由 uni.$emit 触发,但是只触发一次,在第一次触发之后移除监听器。
4. uni.$off([eventName, callback])
移除全局自定义事件监听器。

参数类型定义

属性 类型
eventName 事件名称
callback 回调函数

💖 路由

uni-app 有两种页面路由跳转方式:使用navigator组件跳转、调用API跳转。

路由方式 页面栈表现 触发时机
初始化 新页面入栈 uni-app 打开的第一个页面
打开新页面 新页面入栈 调用 API uni.navigateTo 、使用组件
页面重定向 当前页面出栈,新页面入栈 调用 API uni.redirectTo 、使用组件
页面返回 页面不断出栈,直到目标返回页 调用 API uni.navigateBack 、使用组件 、用户按左上角返回按钮、安卓用户点击物理back按键
Tab 切换 页面全部出栈,只留下新的 Tab 页面 调用 API uni.switchTab 、使用组件 、用户切换 Tab
重加载 页面全部出栈,只留下新的页面 调用 API uni.reLaunch 、使用组件

⭐搭建首页

创建vue3的页面,在pages.json引用

{
      "path": "pages/index/index",
      "style": {
        "navigationStyle": "custom",
        "navigationBarTitleText": ""
      }
    }
]

index.vue

<template>
  <view class="container">
    <view class="container-header">
      {{state.title}}
    </view>
    <view class="container-bottom">
      <button class="button" type="primary" @click="monitorBtn">{{state.btnText}}</button>
    </view>
  </view>
</template>
<script setup>
  import {
    reactive,
    onMounted,
    ref
  } from 'vue'
  const state = reactive({
    title: 'AI模拟面试',
    btnText: '模拟面试',
    drawerVisible: false
  })
  const drawRef = ref(null);
  const monitorBtn = () => {
    console.log('模拟面试')
  }
  const reverseDrawer = () => {
    closeDrawer()
  }
  // 打开窗口
  function showDrawer() {
    console.log('drawRef',drawRef)
  }
  // 关闭窗口
  function closeDrawer() {
    drawRef.value.close()
  }
</script>
<style>
  .container {
    width: 100%;
    height: 100vh;
    background: url('https://yongma16.xyz/staticFile/common/img/ling.jpg');
    background-repeat: no-repeat;
    background-size: 100%;
    /* fallback for old browsers */
    /* background: -webkit-linear-gradient(to bottom, #8f94fb, #4e54c8); */
    /* Chrome 10-25, Safari 5.1-6 */
    /* background: linear-gradient(to bottom, #8f94fb, #4e54c8); */
    /* W3C, IE 10+/ Edge, Firefox 16+, Chrome 26+, Opera 12+, Safari 7+ */
    margin: 0;
    padding: 0;
  }
  .container-header {
    position: absolute;
    width: 100%;
    text-align: center;
    font-family: Helvetica;
    color: rgba(255,255,255,1);
    background: rgba(41, 128, 221,.1);
    font-size: 18px;
    font-weight: bold;
    top: 0px;
  }
  .container-bottom {
    position: absolute;
    bottom: 20px;
    width: 100%;
    text-align: center;
  }
  .button {
    width: 200px;
    background: rgba(255,255,255,.5);
  }
  .drawer-box{
    width: 100%;
  }
  .drawer-box .uni-drawer__content{
    width:100%;
  }
</style>

首页搭建

⭐form表单校验页面

vue3用户表单填写界面

主要填写

  • 行业
  • 岗位
  • 工作年限

代码实现

<template>
  <view class="container">
    <view>
      <uni-forms ref="baseFormRef" label-width='200px' :modelValue="state.baseFormData" label-position='top'>
        <uni-forms-item label="行业" name="industry" required>
          <uni-data-select v-model:value="state.baseFormData.industry" :localdata="state.industryData"
            @change="changeIndustry">
          </uni-data-select>
        </uni-forms-item>
        <uni-forms-item label="岗位" name="post" required>
          <uni-data-select v-model:value="state.baseFormData.post" :localdata="state.postData"
            @change="changePost">
          </uni-data-select>
        </uni-forms-item>
        <uni-forms-item label="工作年限(年)" name="workAge">
          <uni-number-box v-model="state.baseFormData.workAge" :min="0" :max="35" step='0.5' />
        </uni-forms-item>
      </uni-forms>
    </view>
    <view>
      <button type="primary" @click="confirm">
    
        进入面试
    
      </button>
    </view>
  </view>
</template>
<script setup>
  import {
    reactive,
    ref,
    onMounted
  } from 'vue';
  const baseFormRef = ref(null);
  const state = reactive({
    // 基础表单数据
    baseFormData: {
      // 行业
      industry: '',
      // 岗位
      post: '',
      // 工作年限
      workAge: ''
    },
    rules: {
      industry: {
        rules: [{
          required: true,
          errorMessage: '请选择行业',
        }]
      },
      post: {
        rules: [{
          required: true,
          errorMessage: '请选择岗位',
        }]
      },
      workAge: {
        rules: [{
          required: false,
          errorMessage: '请设置工作年限',
        }]
      }
    },
    industryData: [{
        value: 'net',
        text: "互联网"
      },
      {
        value: 'house',
        text: "房地产"
      },
      {
        value: 'drink',
        text: "餐饮店"
      }
    ],
    postData: [{
        value: 'front',
        text: "web前端vue2 vue3 "
      },
      {
        value: 'back',
        text: "后端 java spring cloud"
      }
    ],
  })
  const changeIndustry = (value) => {
    console.log('切换行业', value)
    state.baseFormData.industry = value
  }
  const changePost = (value) => {
    console.log('切换岗位', value)
    state.baseFormData.post = value
  }
  const confirm = () => {
    console.log('confirm')
    baseFormRef.value.validate(['industry', 'post', 'workAge'], (err, formData) => {
      if (!err) {
        console.log('success', formData)
        //userDetail
        uni.navigateTo({
          url: '/pages/chat/index'
        });
      }
    })
  }
  onMounted(()=>{
    baseFormRef.value.setRules(state.rules)
  })
</script>
<style>
  .container {
    height: 100vh;
    padding: 20px;
    background:  linear-gradient(rgba(255, 255, 255, 1), rgba(255, 255, 255, .6)), url('https://yongma16.xyz/staticFile/common/img/ling.jpg');
    background-repeat: no-repeat;
    background-size: 100%;
  }
</style>

填写表单校验页面

回答问题界面

⭐总结

  1. 跨平台:UniApp是一种基于Vue.js的跨平台开发框架,可以轻松地将应用程序发布到iOS和Android平台。
  2. 开发效率高:UniApp提供了一套完整的工具链,包括IDE、模拟器、调试器、打包工具等,让开发人员可以快速构建出高质量的应用程序。
  3. 组件丰富:UniApp提供了丰富的组件库,包括常用的表单组件、布局组件、图表组件等,可以帮助开发人员轻松构建出漂亮的用户界面。
  4. 性能优越:UniApp通过优化渲染机制,实现了与原生应用程序相当的性能表现,同时还支持原生渲染和Web渲染两种方式。
  5. 社区庞大:UniApp拥有庞大的社区支持,开发人员可以在社区中获得帮助、分享经验,并且还可以使用社区提供的插件来扩展应用程序的功能。

⭐结束

本文分享到这结束,如有错误或者不足之处欢迎指出!


目录
相关文章
|
7天前
|
机器学习/深度学习 人工智能 自然语言处理
DiffSensei:AI 漫画生成框架,能生成内容可控的黑白漫画面板,支持多角色和布局控制
DiffSensei 是一个由北京大学、上海AI实验室及南洋理工大学共同推出的AI漫画生成框架,能够生成可控的黑白漫画面板。该框架整合了基于扩散的图像生成器和多模态大型语言模型(MLLM),支持多角色控制和精确布局控制,适用于漫画创作、个性化内容生成等多个领域。
60 17
DiffSensei:AI 漫画生成框架,能生成内容可控的黑白漫画面板,支持多角色和布局控制
|
3天前
|
机器学习/深度学习 人工智能
Leffa:Meta AI 开源精确控制人物外观和姿势的图像生成框架,在生成穿着的同时保持人物特征
Leffa 是 Meta 开源的图像生成框架,通过引入流场学习在注意力机制中精确控制人物的外观和姿势。该框架不增加额外参数和推理成本,适用于多种扩散模型,展现了良好的模型无关性和泛化能力。
34 11
Leffa:Meta AI 开源精确控制人物外观和姿势的图像生成框架,在生成穿着的同时保持人物特征
|
8天前
|
人工智能 API 语音技术
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
TEN Agent 是一个开源的实时多模态 AI 代理框架,集成了 OpenAI Realtime API 和 RTC 技术,支持语音、文本和图像的多模态交互,具备实时通信、模块化设计和多语言支持等功能,适用于智能客服、实时语音助手等多种场景。
87 15
TEN Agent:开源的实时多模态 AI 代理框架,支持语音、文本和图像的实时通信交互
|
9天前
|
人工智能 安全 PyTorch
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
SPDL是Meta AI推出的开源高性能AI模型数据加载解决方案,基于多线程技术和异步事件循环,提供高吞吐量、低资源占用的数据加载功能,支持分布式系统和主流AI框架PyTorch。
42 10
SPDL:Meta AI 推出的开源高性能AI模型数据加载解决方案,兼容主流 AI 框架 PyTorch
|
9天前
|
人工智能 自然语言处理 前端开发
Director:构建视频智能体的 AI 框架,用自然语言执行搜索、编辑、合成和生成等复杂视频任务
Director 是一个构建视频智能体的 AI 框架,用户可以通过自然语言命令执行复杂的视频任务,如搜索、编辑、合成和生成视频内容。该框架基于 VideoDB 的“视频即数据”基础设施,集成了多个预构建的视频代理和 AI API,支持高度定制化,适用于开发者和创作者。
67 9
Director:构建视频智能体的 AI 框架,用自然语言执行搜索、编辑、合成和生成等复杂视频任务
|
11天前
|
机器学习/深度学习 人工智能
SNOOPI:创新 AI 文本到图像生成框架,提升单步扩散模型的效率和性能
SNOOPI是一个创新的AI文本到图像生成框架,通过增强单步扩散模型的指导,显著提升模型性能和控制力。该框架包括PG-SB和NASA两种技术,分别用于增强训练稳定性和整合负面提示。SNOOPI在多个评估指标上超越基线模型,尤其在HPSv2得分达到31.08,成为单步扩散模型的新标杆。
52 10
SNOOPI:创新 AI 文本到图像生成框架,提升单步扩散模型的效率和性能
|
12天前
|
机器学习/深度学习 人工智能 算法
【AI系统】框架编程范式
编程范式是软件工程中一类典型的编程风格,如函数式、命令式、声明式、面向对象等。它们影响着开发者对程序执行的理解。本文探讨了两种主要的编程范式——声明式编程与命令式编程,特别是在AI框架中的应用,如TensorFlow的声明式编程和PyTorch的命令式编程,分析了这两种范式对AI框架架构设计的影响及主流AI框架在这两种范式上的差异。
43 3
【AI系统】框架编程范式
|
3天前
|
机器学习/深度学习 人工智能 算法
AI框架的赢者法则:生态繁荣的昇思MindSpore,成为大模型时代的新选择
2024年被视为大模型应用的元年。昇思MindSpore AI框架凭借其强大的开源社区和技术创新,在全球范围内迅速崛起。截至2024年11月,该框架的下载量已超过1100万次,覆盖130多个国家和地区的2400多个城市,拥有3.7万名贡献者。昇思MindSpore不仅在人才培养和社区治理方面表现出色,还在大模型的开发、训练和应用中发挥了关键作用,支持了50多个主流大模型,覆盖15个行业。随着其市场份额预计达到30%,昇思MindSpore正逐步成为行业共识,推动大模型在各领域的广泛应用。
31 12
|
1天前
|
人工智能 计算机视觉
幻觉不一定有害,新框架用AI的幻觉优化图像分割技术
在图像分割领域,传统方法依赖大量手动标注数据,效率低下且难以适应复杂场景。为解决这一问题,研究人员提出了“任务通用可提示分割”方法,利用多模态大型语言模型(MLLM)生成实例特定提示。然而,MLLM常出现幻觉,影响分割精度。为此,研究团队开发了“Prompt-Mask Cycle”(ProMaC)框架,通过迭代生成和验证提示及掩码,有效利用幻觉信息,提高了分割精度和效率。实验结果表明,ProMaC在多个基准数据集上表现出色,为图像分割技术的发展提供了新思路。
12 6
|
1天前
|
机器学习/深度学习 人工智能 算法
【AI系统】AI 框架之争
本文介绍了AI框架在数学上对自动微分的表达和处理,以及其在多线程算子加速、GPU/NPU支持、代码编译优化等方面的技术挑战。文章详细梳理了AI框架的发展历程,从萌芽阶段到深化阶段,探讨了不同阶段的关键技术和代表性框架。同时,文章展望了AI框架的未来趋势,包括全场景支持、易用性提升、大规模分布式支持和科学计算融合。
18 0

热门文章

最新文章