request.js前言
本文基于 HBuilderX 3.1.22 + 微信开发者工具 1.05.2106300为主要内容进行说明。
文档版本:1.0.2
一、准备
uni-app
是一个使用 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/QQ/快手/钉钉/淘宝)、快应用等多个平台。
1.1 软件安装
创建uni-app有两种,一个是通过 HBuilderX 可视化界面,另一个是通过vue-cli命令行。本文档以HbuilderX为创建说明,以微信开发者工具进行运行项目和代码说明。
HbuilderX 下载地址:/
HbuilderX 文档地址:/Tutorial/startup
微信开发者工具下载地址:/miniprogram/dev/devtools/
HbuilderX安装结束后,一般需要下载开发项目需要的插件,选择工具-->插件安装-->安装或去市场插件查找下载,然后放到目录下的uni_modules文件夹(安装时候自动生成),如scss/sass编译,App真机运行等。
微信开发者工具安装结束后,在工具栏上选择 设置-->通用设置-->安全-->打开服务端口。
其次,在微信开发者平台(/)注册开发者账号,找到自己的开发ID,AppId,并记录好,为项目从HbuilderX运行到微信开发者工具做准备。
然后,在微信公众平台(/)注册对应的账号,比如本次注册的是小程序,则微信开发者APPID如下图中找到:
接着配置微信开发者工具的AppId,在微信开发者工具界面点击右上角详情->基本信息->AppId进行配置,如下图:
二、基于HbuilderX 的uni-app项目搭建
2.1 创建项目
1.在点击工具栏里的文件 -> 新建 -> 项目:
2.选择uni-app
类型,输入工程名,选择模板,点击创建,即可成功创建。
uni-app自带的模板有 Hello uni-app ,是官方的组件和API示例。还有一个重要模板是 uni ui项目模板,日常开发可以参考该模板,毕竟这个模板已内置大量常用组件。
然后在HBuilder X内工具栏点击 运行—>运行到小程序模拟器 -->微信开发者工具,便能初步看到运行成效。
2. 搭建目录文件代码
根据需要,我们写一个简单的登录,使用登录功能来阐述各个目录文件之间的联系。
首先,我们先把已创建的相关文件进行挂载到全局,即在或者App.vue写相关代码:
然后在被引入的文件写必要的内容信息:
然后在被引入的文件写必要的内容信息:
-
.clearfix:before{content:" ";display:table}
-
.clearfix:after{content:" ";display:table;clear:both}
-
.fl{float:left}
-
.fr{float:right}
-
export default function request({
-
url,
-
method = "GET",
-
params = {},
-
header,
-
loadding = false,
-
loaddingText = "加载中..."
-
}) {
-
return new Promise((resolve, reject) => {
-
-
if (loadding) {
-
({
-
title: loaddingText
-
})
-
}
-
setTimeout(() => {
-
({
-
url,
-
method,
-
data: params,
-
header,
-
success: (res) => {
-
if (res) {
-
resolve(res.data)
-
} else {
-
resolve(res)
-
}
-
if (loadding) {
-
()
-
}
-
},
-
fail: (res) => {
-
reject(res)
-
}
-
})
-
}, 1000)
-
}).catch(err => {
-
// 这里既可以捕获throw的异常也可以捕获reject的异常
-
("[Promise catch]:", err)
-
if (loadding) {
-
()
-
} return (err)
-
})
-
}
-
export default {
-
BASE_URL:""
-
}
然后我们开始写登录页面。登录页面需要写用户名、密码、登录按钮三个组件,则需要使用uview创建。使用uview创建组件之前的几个确保:
确保1 HBuilder X
是安装了 scss/sass
编译插件
确保2 在根目录下 文件中引入
uview-ui/
@import 'uview-ui/';
确保3 在根目录下 文件中的style代码块添加
lang="scss"
属性 和 引入 uview-ui/
-
<style lang="scss">
-
@import "uview-ui/";
-
</style>
确保4 在根目录下文件中 引入并使用uView的JS库,注意这两行要放在
import Vue
之后。
-
import uView from "uview-ui";
-
Vue.use(uView);
如果是不想书写引入文件代码,即我们每当引入一个UI组件,就需要添加
import xxx from "uView-ui/components/u-xxx/";
等相关代码。则需要确保5 在根目录下文件中 ,配置easycom组件模式
-
//
-
{
-
"easycom": {
-
"^u-(.*)": "uview-ui/components/u-$1/u-$"
-
},
-
-
// 此为本身已有的内容
-
"pages": [
-
// ......
-
]
-
}
接着我们在pages/login/,即登录页面中,引入uview组件和书写登录代码:
pages/login/
-
<template>
-
<view class="content">
-
<view class="inp">
-
<u-input v-model="username" type="text" :border="true" placeholder="请输入用户名" />
-
</view>
-
<view class="inp">
-
<u-input v-model="password" type="password" :border="true" placeholder="请输入密码" />
-
</view>
-
<view class="inp">
-
<u-button type="primary" shape="circle" style="margin-top: 40rpx;" @click="onLogin">登录</u-button>
-
</view>
-
</view>
-
</template>
-
-
<script>
-
import {
-
login
-
} from '@/api/'
-
export default {
-
data() {
-
return {
-
username: '',
-
password: ''
-
}
-
},
-
onLoad() {
-
-
},
-
methods: {
-
onLogin() {
-
// #ifdef MP-WEIXIN
-
({
-
success: res0 => {
-
login({
-
params: {
-
username: ,
-
password: ,
-
code: res0.code
-
},
-
loadding: true,
-
loaddingText: "登录中..."
-
}).then(res => {
-
this.$ = res
-
if (res) {
-
({
-
url: "../index/index"
-
})
-
} else {
-
({
-
title: "登录失败",
-
duration: 1000,
-
icon: "none"
-
})
-
}
-
})
-
},
-
fail: err => {
-
("fail:", err)
-
}
-
})
-
// #endif
-
// #ifdef H5
-
({
-
url: "../index/index"
-
})
-
// #endif
-
}
-
}
-
}
-
</script>
-
-
<style scoped lang="scss">
-
.content {
-
padding: 20px;
-
-
.inp {
-
margin: 10px;
-
}
-
}
-
</style>
以上代码为先进行获取用户登录凭证code,然后才正式登录。因为开发者需要在开发者服务器后台,使用 code 换取 openid 和 session_key 等信息。然后使用得到的code,和用户名密码一起作为参数进行真正的登录请求。其中,样式最好内聚在组件内,组件内部使用的样式,尽量在style
中添加scoped
,编译时会增加组件hash
前缀来防止样式污染。
login页面 有请求数据,则需要写请求接口:
-
import common from '@/utils/'
-
import request from '@/utils/'
-
-
// 登录
-
export async function login(payload) {
-
return await request({
-
url: common.BASE_URL + "/app/mock/229799/http://login",
-
method: "POST",
-
params: ,
-
loadding: ,
-
loaddingText:
-
})
-
}
到此,直接点击工具栏上的运行-->运行到小程序模拟器-->微信开发者工具,结果如下图所示: