微信小程序开发脚手架 (by uniapp)
Intro
- **Nodejs version 20+ **
Features
📱Uniapp Cli - Cross-platform
🎨 UnoCSS - The instant on-demand atomic CSS engine.
😃 Use icons from any icon sets in Pure CSS
🔥 Use the new
<script setup>style🦾 TypeScript & ESLint - Code Quality
Construct
1 | ... |
Quick start
1 | npm install -g pnpm |
Install & Running
1 | # add packages |
Develop
保姆级开发流程
- 使用webstorm开发工具, 需要安装相关插件, 以提高开发效率. 打开
Settings > Plugins,搜索Unocss Uniapp-Tool - 开始安装依赖 ([Quick start](##Quick start)), 已安装可以忽略此步骤
当前已设置好小程序主页面框架, 页面主题样式、底部头部导航、背景
开始开发一个页面
页面定义
- 在
src/pages文件夹中新建.vue文件, 参考下方命名方式 - 打开
pages.config.ts, 配置好你的页面路径参数, 如下
1 | { |
文件命名方式
src/pages文件夹中的文件统一小写开头命名, 跟path相对应, 符合resful风格component文件夹页面需使用的相关组件, 大写开头驼峰命名方式.ts后缀,小写开头驼峰命名方式
布局
1 | <!-- uni-pages 布局参数 --> |
- 由pages和route动态执行加载
- 页面组件加载顺序: layout -> pages - component
- 参考
index入口页面的加载顺序/layout/main.vue -> /pages/index.vue -> /frame/Entry.vue- >/frame/sidebar/index.vue
- 当前配置了俩种布局
default和main, 默认route块为空, 则使用default布局, 布局样例参考/pages/qa.vue、/pages/access.vue、/pages/index
以下是布局中可能使用的代码 (仅参考)
- 每个页面的可见高度在不同设备不一致, 动态获取可见高度来指定页面的高度
1 | const windowHeight = ref(uni.getWindowInfo().windowHeight) |
- 单文件组件中, 需要统一每个页面的风格(如顶部导航, 滚动样式等), 这里的统一是为了符合小程序和多端的一致性,并不影响实际逻辑代码
1 | const navBarTop = ref(30) // 内边距高度,单位px |
(202.09.23 更新)
** 注意:
通常在小程序里,页面都需要顶部导航组件现已经封装成组件,根据参数动态显示顶部导航, 使用样例参考/pages/qa.vue
页面跳转常用几种方式
uni.relanuch({ url: '/pages/xxx'})重新加载一个页面,不可回退(不可回退仅app效果, 小程序无效 )uni.navigateTo({ url: '/pages/xxx'})路由到一个新页面, 可以回退
国际化
- 国际化资源目录, 请参考文档中的目录结构介绍
- 使用案例
1 | /*ts中使用*/ |
注意点:
组件生命周期函数, 参考uniapp文档: vue3页面及组件生命周期
使用图标时, 如需动态加载图标库, 需要先定义. 参考
unocss-icon.ts, see: https://github.com/unocss/unocss/issues/829默认 font-size 为 16px,即 1rem = 16px,也就是说 Unocss 的1单位换算成 px 就是 4px , e.g:
[w-1] = 0.25rem = 4pxsetup 语法糖的问题, @vue/runtime-core 和 vue的区别
- 俩者import的写法不一一样, runtime:
import { ref } from 'vue@runtime-core'vue:import { ref } from 'vue' - runtime-core适用开发一个自定义的 Vue 生态工具或库, 否则适用vue即可
- 俩者import的写法不一一样, runtime:
背景图不支持本地图片, 使用网络图片, 用云存储或者自建静态服务器cdn
样式兼容性
- 小程序不能使用伪类的样式, 此问题是小程序的和uniapp 无关
- 设置小程序局部样式穿透, 原始情况是父子组件样式是隔离的, 每个组件只受自己的wxss文件的影响, 设置穿透后, 父组件指定样式可以影响子组件
1 | <!-- 允许样式穿透 --> |
- 不管是vue事件还是自定义事件请尽量不要设置在子组件名字标签上,