一.工具
HBuilder X
HBuilderX内置相关环境,开箱即用,无需配置nodejs
下载App开发版,可开箱即用;如下载标准版,
在运行或发行uni-app
时,会提示安装uni-app
插件,插件下载完成后方可使用
安装地址https://www.dcloud.io/hbuilderx.html
注:如果是第一次使用,需要先配置小程序ide的相关路径,才能运行成功。如下图,需在输入框输入微信开发者工具的安装路径。 若HBuilderX不能正常启动微信开发者工具,需要开发者手动启动,然后将uni-app生成小程序工程的路径拷贝到微信开发者工具里面,在HBuilderX里面开发,在微信开发者工具里面就可看到实时的效果。
uni-app默认把项目编译到根目录的unpackage目录。
点击项目——点击工具栏——运行
注意:如果是第一次使用,需要先配置小程序ide的相关路径,才能运行成功。如下图,需在输入框输入微信开发者工具的安装路径。 若HBuilderX不能正常启动微信开发者工具,需要开发者手动启动,然后将uni-app生成小程序工程的路径拷贝到微信开发者工具里面,在HBuilderX里面开发,在微信开发者工具里面就可看到实时的效果。
uni-app默认把项目编译到根目录的unpackage目录。
在微信开发者工具里面,点击工具栏——设置——安全设置
打包项目
点击工具栏——发行
点击查看发行步骤https://uniapp.dcloud.io/quickstart-hx?id=%E5%8F%91%E5%B8%83uni-app
安装ui框架
uview
安装步骤
// main.js
import uView from "uview-ui";
Vue.use(uView);
二.框架/语法
介绍:使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝)、快应用等多个平台
三.配置
在page.json里面进行配置
pages中的第一个页面,要出现在tabBar配置项中,示例如下:
"tabBar": {
"color": "#7A7E83",
"selectedColor": "#3cc51f",
"borderStyle": "black",
"backgroundColor": "#ffffff",
"height": "50px",
"fontSize": "10px",
"iconWidth": "24px",
"spacing": "3px",
"list": [{
"pagePath": "pages/index/index",
"iconPath": "static/tab/icon_index.png",
"selectedIconPath": "static/tab/icon_index_sel.png",//跳转时的图标
"text": "首页"
}, {
"pagePath": "pages/shop/shop",
"iconPath": "static/tab/icon_cart.png",
"selectedIconPath": "static/tab/icon_cart_sel.png",
"text": "商城"
},
{
"pagePath": "pages/mine/mine",
"iconPath": "static/tab/icon_my.png",
"selectedIconPath": "static/tab/icon_my_sel.png",
"text": "我的"
}]
}
需要配置appid
四.数据接口
步骤如下:
输入命令:
cnpm install uni-ajax
新建ajax.js
(1)// 引入 uni-ajax 模块
import ajax from 'uni-ajax'
(2)// 创建请求实例
const instance = ajax.create({
// 本地测试地址
// baseURL: 'http://172.1343.0.101:8080',
// 线上地址
baseURL: 'https://gindus34324try.zjyqzg.com/prod-api/',
})
(3) // 添加请求拦截器
instance.interceptors.request.use(
config => {
config.header['Authorization'] = 'Bearer ' + uni.getStorageSync("wxUserToken")
return config
},
error => {
// 对请求错误做些什么
return Promise.reject(error)
}
)
(4) // 添加响应拦截器
//根据业务添加拦截器,以下的业务情况是:当业务需要登录以后才可以查看的,后端就会返回状态码401,就会跳转到登录界面,等登录以后就会跳回刚刚的页面,当状态码为500时,就代表出错了,状态码为200时,就表示已经成功
instance.interceptors.response.use(
response => {
var currentPath = getCurrentPages()[0].$page.fullPath;
uni.showLoading({
title: '加载中'
})
if (response.data.code == 401) {
//没有登录、没有拿到用户数据就跳转到登录页
uni.navigateTo({
url:"/pages/home/home"
})
} else if (response.data.code == 500) {
uni.$u.toast(response.data.msg);
uni.hideLoading();
}
if (response.data.code == 200) {
setTimeout(function() {
uni.hideLoading();
}, 500);
}
// 对响应数据做些什么
return response.data
},
error => {
// 对响应错误做些什么
return Promise.reject(error)
}
)
// 导出 create 创建后的实例
export default instance
import App from './App'
import ajax from './common/ajax.js'
// #ifndef VUE3
import Vue from 'vue'
import uView from "uview-ui"
Vue.prototype.$ajax = ajax;
Vue.use(uView);
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
...App
})
app.$mount()
// #endif
// #ifdef VUE3
import { createSSRApp } from 'vue'
export function createApp() {
const app = createSSRApp(App)
return {
app
}
}
// #endif
新建api文件夹,示例如下:
根据页面以及共用接口进行创建
// 查询大赛详细信息
const matchInfo = '/terminal/applymatchactivity/16';
//下载大赛文档
const downLoadFile = '/terminal/applymatchactivity/downLoad/16';
export {
matchInfo,
downLoadFile,
}