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

uniapp结合uview-ui创建项目关键步骤一步一图教程

文章目录

  • 1 构建项目准备工作
  • 2 项目创建
    • 2.1 打开开发者工具HBuilderX
    • 2.2 创建一个新的项目
    • 2.3 引入uview-ui组件
    • 2.4 uview-ui组件配置
      • 2.4.1 uview-ui组件简单介绍
      • 2.4.2 修改main.js
      • 2.4.3 修改`page.json`
      • 2.4.4 修改`App.vue`
      • 2.4.5 修改uni.scss
      • 2.4.6 修改index.vue
    • 2.5 api接口封装
      • 2.5.1 多环境封装
      • 2.5.2 封装http请求
      • 2.5.3 api接口调用

1 构建项目准备工作

​ 下载开发工具HBuilderX: 官网地址https://www.dcloud.io/hbuilderx.html,下载后安装即可。

​ 安装Node.js:官网地址https://nodejs.org/zh-cn,下载自己需要的版本,安装完成后配置一下环境变量即可。

2 项目创建

2.1 打开开发者工具HBuilderX

​ 双击HBuilderX图标打开开发者工具,打开后的界面如下图

在这里插入图片描述

2.2 创建一个新的项目

​ 点击HBuilderX工具左上角文件F >>>新建 >>>项目

在这里插入图片描述

​ 在打开的界面里面,输入新建项目的名称,本项目是演示的,所以在这里取的名字是dream21th-example,选着构建项目的模板,在这里我们选择默认模板,本次演示采用的vue版本是2

在这里插入图片描述

​ 上述过程完成之后,点击右下角的创建按钮,就会创建一个项目,项目的目录层次结构如下图所示:

在这里插入图片描述

​ 到这一步,一个简单的uniapp项目就已经创建成功了,后面我们将为项目添加uview-ui组件。

2.3 引入uview-ui组件

​ 选中创建的dream21th-example项目,点击鼠标右键,选择命令行窗口打开所在目录,就是跳出命令行操作界面。如下图所示

在这里插入图片描述

​ 接着在命令行操作行输入下面指令安装uview-ui组件,npm install uview-ui@2.0.36

在这里插入图片描述

​ 安装完成之后,在package-lock.json文件中会有刚才安装的版本信息,在node_modules文件夹下面会包含安装的包。

在这里插入图片描述

2.4 uview-ui组件配置

​ 官网地址:https://www.uviewui.com/components/intro.html

2.4.1 uview-ui组件简单介绍

​ uView是uni-app生态专用的UI框架,uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码, 可发布到iOS、Android、H5、以及各种小程序(微信/支付宝/百度/头条/QQ/钉钉)等多个平台(引言自uni-app网)。但目前除微信小程序,其它小程序平台的兼容可能存在一些问题,后续会针对这方面持续优化。

2.4.2 修改main.js

​ 在main.js文件中增加下面内容引入uview-ui组件

import uView from 'uview-ui'
Vue.use(uView)

在这里插入图片描述

2.4.3 修改page.json

​ 在page.json文件中增加下面内容,引入uview-ui的相关组件

	"easycom": {"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"},

在这里插入图片描述

2.4.4 修改App.vue

​ 修改App.vue文件,在里面增加相关的样式

<style lang="scss">/*每个页面公共css */@import "uview-ui/index.scss";
</style>

在这里插入图片描述

2.4.5 修改uni.scss

​ 修改uni.scss文件,覆盖原来的样式

@import 'uview-ui/theme.scss';

在这里插入图片描述

2.4.6 修改index.vue

​ 修改/pages/index/index.vue在里面增加uview-uibutton组件。点击运行>>>到浏览器>>>chrome,看到确定按钮及样式代表成功。

<u-button type="primary" text="确定"></u-button>

在这里插入图片描述

2.5 api接口封装

2.5.1 多环境封装

​ 实际项目会分很多环境,如dev开发环境、local本地环境、prod生产环境等,针对不同环境,其中配置也有不同。我们在创建一个env.js的文件,该文件放到目录common/config下面,具体的内容如下:

// prod-生产 dev-开发 test-测试
const env = "dev"const prod = {baseUrl: 'http://localhost:8081/admin', // 线上环境'
}
const dev = {baseUrl: 'http://localhost:8080/admin', // 生产环境'
}const test = {baseUrl: 'http://localhost:8082/admin', // 测试环境'
}const config = {dev,prod,test,
}export default config[env]

​ 在main.js文件中,注册env

import config from '@/common/config/env.js'
Vue.prototype.$config = config;

2.5.2 封装http请求

​ 新建目录common/http,在目录里面新建request.js,该文件的具体内容如下:

// 此vm参数为页面的实例,可以通过它引用vuex中的变量
import env from '@/common/config/env.js'
module.exports = (vm) => {// 初始化请求配置uni.$u.http.setConfig((config) => {/* config 为默认全局配置*/config.baseURL = env.baseUrl; /* 根域名 */config.custom = { catch: true, auth: true }return config})// 请求拦截uni.$u.http.interceptors.request.use((config) => { // 可使用async await 做异步操作uni.showLoading({title: '加载中'});// 初始化请求拦截器时,会执行此方法,此时data为undefined,赋予默认{}config.data = config.data || {}// 根据custom参数中配置的是否需要token,添加对应的请求头if(config?.custom?.auth) {// 可以在此通过vm引用vuex中的变量,具体值在vm.$store.state中//config.header['Access-Token'] = vm.$store.state.tokenconfig.header['token'] = uni.getStorageSync("token")}return config}, config => { // 可使用async await 做异步操作return Promise.reject(config)})// 响应拦截uni.$u.http.interceptors.response.use((response) => { /* 对响应成功做点什么 可使用async await 做异步操作*/const data = response.data// 自定义参数const custom = response.config?.customif (data.code !== '0000') {// 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示if (custom.toast !== false) {uni.$u.toast(data.msg)}// 如果是401授权异常则跳转登录if('401' == data.code){uni.removeStorageSync("token")uni.removeStorageSync("userInfo")setTimeout(()=>{uni.navigateTo({url: '/pages/login/login'});},1000)}// 如果需要catch返回,则进行rejectif (custom?.catch) {return Promise.reject(data)} else {// 否则返回一个pending中的promise,请求不会进入catch中return new Promise(() => { })}}uni.hideLoading();return data === undefined ? {} : data}, (response) => {// 对响应错误做点什么 (statusCode !== 200)uni.$u.toast("工程师被UFO带走了-_-!");return Promise.reject(response)})
}

​ 引入请求封装,将app参数传递到配置中

// uview-request
require('@/common/http/request.js')(app)

在这里插入图片描述

2.5.3 api接口调用

​ 新建目录common/api,在目录里面新建index.js,在该文件里面编写一个登陆接口:

const http = uni.$u.http
const api = {/*** 登录*/login(params) {return http.post('/user/login', params)}
}export default api;

​ 在main.js文件中,注册api

import api from '@/common/api/index.js'
Vue.prototype.$api = api;

​ 修改index.vue在里面添加一个登陆接口,页面的代码如下:

<template><view class="content"><image class="logo" src="/static/logo.png"></image><view class="text-area"><text class="title">{{title}}</text><u-button type="primary" text="确定" @click="doLogin"></u-button></view></view>
</template><script>export default {data() {return {title: 'Hello'}},onLoad() {},methods: {async doLogin(){let that = thislet requestData = {"data":{mobileNo:'13912345678',password:'123456'}}let response = await this.$api.login(requestData)console.log(response)}}}
</script><style>.content {display: flex;flex-direction: column;align-items: center;justify-content: center;}.logo {height: 200rpx;width: 200rpx;margin-top: 200rpx;margin-left: auto;margin-right: auto;margin-bottom: 50rpx;}.text-area {display: flex;justify-content: center;}.title {font-size: 36rpx;color: #8f8f94;}
</style>

​ 点击登陆后,可以看到接口响应成功,至此一个uniapp项目创建完成,小伙伴可以进行后面的迭代开发了。

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 记忆化搜索——1
  • CSDN 僵尸粉 机器人
  • 学习笔记 韩顺平 零基础30天学会Java(2024.8.6)
  • 【Material-UI】File Upload Button 组件详解
  • 如何判断IP地址属于住宅IP还是机房IP
  • C语言典型例题27
  • 【链表OJ】常见面试题 2
  • MySQL主从服务器
  • 书生大模型学习笔记3 - 书生开源大模型链路体系
  • Java语言程序设计——篇十一(6)
  • 密码学基础-身份认证
  • PostgreSQL 15
  • 【LeetCode每日一题】2024年8月第一周(上)
  • 【面试高频,必知必会】OpenGL渲染流程
  • (javaweb)Http协议
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • C# 免费离线人脸识别 2.0 Demo
  • Linux下的乱码问题
  • MySQL用户中的%到底包不包括localhost?
  • October CMS - 快速入门 9 Images And Galleries
  • Vue官网教程学习过程中值得记录的一些事情
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 初识MongoDB分片
  • 从零搭建Koa2 Server
  • 函数式编程与面向对象编程[4]:Scala的类型关联Type Alias
  • 前端之Sass/Scss实战笔记
  • 原生Ajax
  • gunicorn工作原理
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • (003)SlickEdit Unity的补全
  • (1)无线电失控保护(二)
  • (java版)排序算法----【冒泡,选择,插入,希尔,快速排序,归并排序,基数排序】超详细~~
  • (LeetCode C++)盛最多水的容器
  • (八)Flask之app.route装饰器函数的参数
  • (苍穹外卖)day03菜品管理
  • (二) 初入MySQL 【数据库管理】
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (图)IntelliTrace Tools 跟踪云端程序
  • (学习日记)2024.04.10:UCOSIII第三十八节:事件实验
  • (转)Google的Objective-C编码规范
  • (转)使用VMware vSphere标准交换机设置网络连接
  • ... 是什么 ?... 有什么用处?
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net 代码性能 - (1)
  • .net 后台导出excel ,word
  • .Net 中Partitioner static与dynamic的性能对比
  • .Net环境下的缓存技术介绍
  • .NET开发者必备的11款免费工具
  • .NET中的Event与Delegates,从Publisher到Subscriber的衔接!
  • @vue/cli 3.x+引入jQuery