前言

缘由

博友有问,狗哥必答

前段时间,博友加本狗微信,询问uniapp的学习方法。本狗资历浅薄,没有专门学过uniapp,只能将自己日常开发uniapp的基本流程和步骤进行分享,希望可以略尽绵薄之力。感谢如下图所示的博友朋友询问支持,大家的支持才是我进步的动力。


主要目标

实现4大重点

  1. uniapp项目搭建流程
  2. uniapp项目常用组件引入方式
  3. uniapp项目接口封装策略
  4. uniapp项目常用配置整理

快速链接

公众号:JavaDog程序狗

关注公众号,发送 【uniapp】,无任何套路即可获得


猜你喜欢

文章推荐

【项目实战】SpringBoot+vue+iview打造一个极简个人博客系统

【项目实战】SpringBoot+uniapp+uview2打造H5+小程序+APP入门学习的聊天小项目

【项目实战】SpringBoot+uniapp+uview2打造一个企业黑红名单吐槽小程序

【模块分层】还不会SpringBoot项目模块分层?来这手把手教你!

【ChatGPT】手摸手,带你玩转ChatGPT

【ChatGPT】SpringBoot+uniapp+uview2对接OpenAI,带你开发玩转ChatGPT


猜你想问

如何与狗哥联系进行探讨

关注公众号【JavaDog程序狗】,里面包含狗哥联系方式有问必答

正文

前置条件

1.HBuilderX

官方IDE下载地址 https://www.dcloud.io/hbuilderx.html

2.npm Node.js 包管理工具

安装Node等相关百度即可,简单易懂

开始

1.打开工具

双击打开HBuilder X


2.创建新项目

  • 点击HBuilder X工具左上角【文件】=》【新建】=》【项目】

  • 按照项目业务起名,如聊天系统就叫chat-uniapp,博客系统就叫blog-uniapp,这个地方不强制,个人习惯,本次实例以example-unipp作为项目名,选择默认模板,示例以vue2版本做基础,点击【创建】

  • 初始化项目结构如下


3.引入组件

  • 本狗在uniapp项目中,常用UI库及常用工具引入,小项目基本够用,大家可按需加载
插件 版本 用途
uview-ui ^2.0.31 多平台快速开发的UI框架
moment ^2.29.4 js工具库

uView UI,是全面兼容nvue的uni-app生态框架,其中还包含API相关JS函数,方便封装易用。

moment时间js工具库,常用时间转化格式化等

  • 项目根路径新建package.json,配置上述依赖组件
{
"dependencies": {
"moment": "^2.29.4",
"uview-ui": "^2.0.31"
}
}

  • 项目根路径下拉取依赖

右击项目根目录,点击【使用命令行窗口打开所在目录】,或者通过命令行进入项目路径都可

npm i



查看成功拉取依赖


4.组件配置

  • 配置uview
  1. App.vue中引入uview的scss

  2. main.js中引入uview
import uView from 'uview-ui'
Vue.use(uView)

  1. 将根路径下uni.scss中,将uview的theme.scss 覆盖uniapp默认内置样式
/* uni.scss */
@import 'uview-ui/theme.scss';

  1. 在pages.json中加入easycom
"easycom": {
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
},

  1. 加入uview组件,在/pages/index/index.vue加入简单button组件
<u-button type="primary" text="测试"></u-button>

  1. 启动项目,测试是否引入成功

    点击【运行】=》【运行到浏览器】=》【chrome】,打开显示button即为成功




  • 配置moment
  1. main.js中引入moment
// 引入moment
import moment from 'moment';
// 挂载到vue原型上,全局注册
Vue.prototype.$moment = moment;

  1. /pages/index/index.vue中引入moment,调试组件
<h3>{{$moment(new Date()).format('yyyy-MM-DD HH:mm:ss')}}</h3>

  1. 查看页面是否引入moment成功


5.函数封装

  • 环境变量

实际项目会分很多环境,如dev开发环境、local本地环境、prod生产环境等,针对不同环境,其中配置也有不同

在根路径下新建common/config文件包,在包中新建env.js

// prod-生产 dev-开发 local-本地
const env = "local"
// contextPath路径
const contextPath = "example/v1" const prod = {
baseUrl: `https://localhost:9001/${contextPath}`, // 线上环境'
}
const dev = {
baseUrl: `http://localhost:7001/${contextPath}`, // 开发环境'
}
const local = {
baseUrl: `http://localhost:8001/${contextPath}`, // 测试环境'
} const config = {
dev,
prod,
local,
}
export default config[env]



挂载vue原型,全局注册config

import config from '@/common/config/env.js'
Vue.prototype.$config = config;
  • Http请求

通常将项目中与后台交互中Http请求做封装

因本项目采用uview为UI组件库,内置很多API函数,直接摘取成熟框架中函数封装即可,如Http请求

https://www.uviewui.com/js/http.html



新建\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.token
config.header['Access-Token'] = uni.getStorageSync("access_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?.custom
if (data.code !== 200) {
// 如果没有显式定义custom的toast参数为false的话,默认对报错进行toast弹出提示
if (custom.toast !== false) {
uni.$u.toast(data.message)
}
// 如果是401授权异常则跳转登录
if(401 == data.code){
uni.removeStorageSync("Access-Token")
uni.removeStorageSync("userInfo")
setTimeout(()=>{
uni.navigateTo({
url: '/pages/login/index'
});
},1000)
}
// 如果需要catch返回,则进行reject
if (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参数传递到配置中

// 引入请求封装,将app参数传递到配置中
require('@/common/http/request.js')(app)


  • API接口

通常将项目中与后台交互的api接口统一管理

新建\common\api包,在包中新建index.js,其中举例login接口

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

挂载vue原型,全局注册api

import api from "@/common/api"
Vue.prototype.$api = api;

  • 最终调试

在/pages/index/index.vue加入简单交互,点击按钮调用接口



接口调用成功,返回值打印



调试成功后,即可根据业务需求填充内容,丰富页面,迭代开发


补充

以上流程均是本狗常用流程不代表标准,大家可以根据习惯自行调整,UI或工具选择,挑选完全依赖于功能适合自己的才是最好的。再啰嗦一句,本狗还是喜欢采用webstorm进行开发,然后用HBuilderX进行编译,个人喜好,只是推荐。

总结

本文旨在通过本狗平时项目开发习惯,总结出一套搭建uniapp的常用流程。其实重点在于对官网文档的理解,不管什么项目,什么框架,只要吃透文档,任何常见的疑难问题都会迎刃而解。希望广大博友们在奋笔疾书的搬砖的同时,一定注重官网文档翻阅和总结

JavaDog 狗屋地址
个人博客 https://blog.javadog.net
公众号 https://mp.weixin.qq.com/s/_vgnXoQ8FSobD3OfRAf5gw
CSDN https://blog.csdn.net/baidu_25986059
掘金 https://juejin.cn/user/2172290706716775
知乎 https://www.zhihu.com/people/JavaDog
简书 https://www.jianshu.com/u/1ff9c6bdb916
gitee https://gitee.com/javadog-net
GitHub https://github.com/javadog-net

【有问必答】搭建uniapp项目流程手把手教学的更多相关文章

  1. webpack 搭建vue项目流程

    1.安装node 2.打开命令行输入  npm install -g vue-cli 3.vue init webpack-simple vue 4.各种确认(enter键) 5.npm instal ...

  2. Eclipse搭建maven项目的流程,聚合所有的子模块项目

    Eclipse搭建maven项目的流程 2018年03月01日 15:47:03 阅读数:22 1:搭建parent工程,用来聚合所有的子模块项目 2:搭建公共使用的模块common 这里你要点击空白 ...

  3. django搭建简单开发项目流程(一)

    1 搭建环境 sudo apt-get install python3-pip 安装pip3 sudo pip3 install virtualenv 安装虚拟环境 virtualenv -p pyt ...

  4. vue项目搭建和开发流程 vue项目配置ElementUI、jQuery和Bootstrap环境

    目录 一.VUE项目的搭建 1. 环境搭建 2. 项目的创建和启动 二. 开发项目 1. 配置vue项目启动功能 2. 开发vue项目 (1)项目文件的作用 (2)vue项目开发流程 (3)vue项目 ...

  5. 零配置简单搭建SpringMVC 项目

    SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...

  6. 3 分钟轻松搭建 Ruby 项目自动化持续集成

    任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这是一篇关于 Ruby 项目持续集成的快速指导教程,教大家如何使用 f ...

  7. Maven 搭建 SSM 项目 (oracle)

    简单谈一下maven搭建 ssm 项目 (使用数据库oracle,比 mysql 难,所以这里谈一下) 在创建maven 的web项目时,常常会缺了main/java , main/test 两个文件 ...

  8. 搭建vue项目环境

    前言 在开发本项目之前,我对vue,react,angular等框架了解,仅限于知道它们是什么框架,他们的核心是什么,但是并没有实际使用过(angular 1.0版本用过,因为太难用,所以对这类框架都 ...

  9. element-ui和npm、webpack、vue-cli搭建Vue项目

    一.element-ui的简单使用 1.安装 1. npm 安装 推荐使用 npm 的方式安装,它能更好地和 webpack 打包工具配合使用. npm i element-ui -S 2. CDN ...

  10. 2. 搭建DRF项目

    企业项目开发流程 一.需求分析 1.企业的web项目类型: 商城 门户网站[企业站和门户站] 社交网络 资讯论坛 内部系统 个人博客 内容收费站 前端的静态页面制作,外界开发的时候,是照着psd/pn ...

随机推荐

  1. 初识MPC

    MPC调研报告 ​ 这是一篇关于MPC的调研报告,主要介绍了我对MPC领域的一些基础认识.全文按照这样的方式组织:第一节我介绍了什么是MPC以及MPC的起源:第二节介绍了MPC领域常用的一些符号和安全 ...

  2. 功能测试--Fiddler

    Fiddler(更推荐Charles,很好用) 1.fiddler是什么?------客户端的所有请求都要先经过fiddler,然后转发到服务器:反之,服务器的所有响应,也会先经过fiddler,然后 ...

  3. 6. 基础查(会员信息) - 创建查询Web Api - 配置Table Permission

    ​ Power Portal中的Web API可以对门户页面中所有的Microsoft Dataverse实体进行创建.更新和删除操作.我们可以直接使用门户Web API对产品创建新客户.更新联系人或 ...

  4. 谈恋爱要做什么事?基于auto.js自动发早安给女朋友

    谈恋爱要做什么事?除了用心之外,每天早安晚安必然是少不了的.但是每天都发免不了会忘, 为了避免遗忘,引起不必要的尴尬,我们可以做个自动化脚本来做这件事. 1 auto.js 是什么? Auto.JS是 ...

  5. GO语言学习笔记-方法篇 Study for Go ! Chapter five - Method

    持续更新 Go 语言学习进度中 ...... GO语言学习笔记-类型篇 Study for Go! Chapter one - Type - slowlydance2me - 博客园 (cnblogs ...

  6. 2023 年最新最全的 React 面试题

    React 作为前端使用最多的框架,必然是面试的重点.我们接下来主要从 React 的使用方式.源码层面和周边生态(如 redux, react-router 等)等几个方便来进行总结. 1. 使用方 ...

  7. 认识流媒体协议,从 RTSP 协议解析开始!

    RTSP 是 Internet 协议规范,是 TCP/IP 协议体系中的一个应用层协议级网络通信系统.专为娱乐(如音频和视频)和通信系统的使用,以控制流媒体服务器.该协议用于在端点之间建立和控制媒体会 ...

  8. (数据科学学习手札150)基于dask对geopandas进行并行加速

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 大家好我是费老师,geopandas作为我们非常 ...

  9. 【单元测试】Junit 4(六)--junit4测试优先级顺序

    ​ @FixMethodOrder的顺序也并不一定是方法在代码中定义的顺序,这与JVM的实现有关. ​ 我们在写JUnit测试用例时,有时候需要按照定义顺序执行我们的单元测试方法,比如如在测试数据库相 ...

  10. 10 个杀手级的 Python 自动化脚本

    重复性任务总是耗时且无聊,想一想你想要一张一张地裁剪 100 张照片或 Fetch API.纠正拼写和语法等工作,所有这些任务都很耗时,为什么不自动化它们呢?在今天的文章中,我将与你分享 10 个 P ...