uniapp创建项目
HbuilderX 安装配置完毕后,我们就可以开始开发了,首先我们需要创建一个项目,我们点击ide左上角 文件-> 新建 ->项目 ,然后我们选择 uniapp 项目 ,模板选择 默认模板
创建完成后,我们可以看到左侧文件树中新增了一个以项目名命名的文件,其中是hbuilder为我们内置的项目模板
以下是uniapp给我们的项目框架介绍
┌─components 符合vue组件规范的uni-app组件目录
│ └─comp-a.vue 可复用的a组件
├─pages 业务页面文件存放的目录
│ ├─index
│ │ └─index.vue index页面
│ └─list
│ └─list.vue list页面
├─packone 业务页面文件存放的目录(分包)
│ ├─goods
│ │ └─goods.vue goods页面
├─static 存放应用引用的本地静态资源(如图片、视频等)的目录,注意: 静态资源只能存放于此
├─node_modules 存放[uni_module](/uni_modules)规范的插件。
├─wxcomponents 存放小程序组件的目录,详见
├─utils 存放小程序工具
└─request.js 封装api请求
├─main.js Vue初始化入口文件
├─App.vue 应用配置,用来配置App全局样式以及监听 应用生命周期
├─manifest.json 配置应用名称、appid、logo、版本等打包信息,详见
└─pages.json 配置页面路由、导航条、选项卡等页面类信息,详见
└─uni.scss 这里是uni-app内置的常用样式变量
复制代码
在pages中依照业务功能来创建功能分类文件夹,最常见的是按照首页的tabbar来区分功能模块,每一个文件夹中存放该功能涉及的所有页面,且每一个功能文件夹中还有一个单独的components文件夹用于放置该仅功能文件夹中的页面依赖的组件。
配置 pages.json
-
pages配置"pages": [ //pages数组中第一项表示应用启动页,参考:https://uniapp.dcloud.io/collocation/pages { "path": "pages/index/index", "style": { "navigationBarTitleText": "主页" } },{ "path": "pages/sort/sort", "style": { "navigationBarTitleText": "分类" } },{ "path": "pages/shop/shop", "style": { "navigationBarTitleText": "购物车" } },{ "path": "pages/mind/mind", "style": { "navigationBarTitleText": "我的" } } ], -
tabBar配置
"tabBar": {
"color": "#2c2c2c",
"selectedColor": "#d81e06",
"list": [
{
"pagePath": "pages/index/index",
"iconPath": "/static/tabbar/index.png",
"selectedIconPath": "/static/tabbar/index_cur.png",
"text": "主页"
},
{
"pagePath": "pages/sort/sort",
"iconPath": "/static/tabbar/order.png",
"selectedIconPath": "/static/tabbar/order_cur.png",
"text": "分类"
},
{
"pagePath": "pages/shop/shop",
"iconPath": "/static/tabbar/shop.png",
"selectedIconPath": "/static/tabbar/shop_cur.png",
"text": "购物车"
},
{
"pagePath": "pages/mind/mind",
"iconPath": "/static/tabbar/me.png",
"selectedIconPath": "/static/tabbar/me_cur.png",
"text": "我的"
}
]
},
- 分包
packone/goods/goods
// 分包
"subPackages": [
{
// 子包的根目录
"root": "packone",
// 子包由哪些页面组成
"pages": [
{
"path": "goods/goods",
"style": {
"navigationBarTitleText": "详情"
}
}
]
}
],
\
封装请求
/utils/request.js
const BASE_URL ='http://192.168.1.120:8084/api'
export const myRequest=(option)=>{
return new Promise((resolve,reject)=>{
uni.request({
url:BASE_URL+option.url,
method:option.method || 'GET',
data:option.data || {},
success:(res)=>{
if(res.data.meta.status !==200){
return uni.showToast({
title:'获取数据失败!'
})
}
resolve(res)
},
fail: (err) => {
return uni.showToast({
title:'获取接口失败'
})
reject(err);
}
})
})
}
main.js引入
import {myRequest} from '@/utils/request.js'
Vue.prototype.$myRequest=myRequest
使用uview-ui
1. npm install uview-ui
2. main.js 引入
import uView from 'uview-ui'
Vue.use(uView)
// 调用setConfig方法,方法内部会进行对象属性深度合并,可以放心嵌套配置
// 需要在Vue.use(uView)之后执行
uni.$u.setConfig({
// 修改$u.config对象的属性
config: {
// 修改默认单位为rpx,相当于执行 uni.$u.config.unit = 'rpx'
unit: 'rpx'
},
// 修改$u.props对象的属性
props: {
// 修改radio组件的size参数的默认值,相当于执行 uni.$u.props.radio.size = 30
radio: {
size: 15
}
// 其他组件属性配置
// ......
}
})
3 在uni.scss 引入样式
@import "uview-ui/theme.scss";
4 在app.vue 引入
<style lang="scss">
/*每个页面公共css */
@import "uview-ui/index.scss";
</style>
5 pages.json 配置
"easycom": {
// 下载安装的方式需要前面的"@/",npm安装的方式无需"@/"
// "^u-(.*)": "@/uview-ui/components/u-$1/u-$1.vue"
// npm安装方式
"^u-(.*)": "uview-ui/components/u-$1/u-$1.vue"
}