) => {
83 | subPages.push({
84 | ...page,
85 | path: `/${root}/${page.path}`,
86 | })
87 | })
88 | })
89 | const result = [...pages, ...subPages]
90 | console.log(`getAllPages by ${key} result: `, result)
91 | return result
92 | }
93 |
94 | /**
95 | * 得到所有的需要登录的pages,包括主包和分包的
96 | * 只得到 path 数组
97 | */
98 | export const getNeedLoginPages = (): string[] => getAllPages('needLogin').map((page) => page.path)
99 |
100 | /**
101 | * 得到所有的需要登录的pages,包括主包和分包的
102 | * 只得到 path 数组
103 | */
104 | export const needLoginPages: string[] = getAllPages('needLogin').map((page) => page.path)
105 |
106 | export const getArrElementByIdx = (arr: any[], index: number) => {
107 | if (index < 0) return arr[arr.length + index]
108 | if (index >= arr.length) return undefined
109 | return arr[index]
110 | }
111 |
--------------------------------------------------------------------------------
/pages/demo/page/clock2.vue:
--------------------------------------------------------------------------------
1 |
2 | {
3 | layout: 'demo',
4 | style: { navigationBarTitleText: '动态时钟-抗锯齿' },
5 | }
6 |
7 |
8 |
9 | 动态时钟
10 |
11 |
12 |
13 | {{ n }}
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
35 |
36 |
153 |
--------------------------------------------------------------------------------
/vite.config.ts:
--------------------------------------------------------------------------------
1 | import path from 'node:path'
2 | import dayjs from 'dayjs'
3 | import { defineConfig, loadEnv } from 'vite'
4 | import Uni from '@dcloudio/vite-plugin-uni'
5 | // @see https://uni-helper.js.org/vite-plugin-uni-pages
6 | import UniPages from '@uni-helper/vite-plugin-uni-pages'
7 | // @see https://uni-helper.js.org/vite-plugin-uni-layouts
8 | import UniLayouts from '@uni-helper/vite-plugin-uni-layouts'
9 | // @see https://github.com/uni-helper/vite-plugin-uni-platform
10 | // 需要与 @uni-helper/vite-plugin-uni-pages 插件一起使用
11 | // import UniPlatform from '@uni-helper/vite-plugin-uni-platform'
12 | // @see https://github.com/uni-helper/vite-plugin-uni-manifest
13 | import UniManifest from '@uni-helper/vite-plugin-uni-manifest'
14 | // @see https://unocss.dev/
15 | import UnoCSS from 'unocss/vite'
16 | // import autoprefixer from 'autoprefixer'
17 | import AutoImport from 'unplugin-auto-import/vite'
18 | // import viteCompression from 'vite-plugin-compression'
19 | import ViteRestart from 'vite-plugin-restart'
20 |
21 | // https://vitejs.dev/config/
22 | export default ({ command, mode }) => {
23 | // console.log(mode === process.env.NODE_ENV) // true
24 |
25 | // mode: 区分生产环境还是开发环境
26 | console.log('command, mode -> ', command, mode)
27 | // dev 和 build 命令可以分别使用 .env.development 和 .env.production 的环境变量
28 |
29 | // process.env.VITE_ROOT_DIR: 获取当前文件的目录跟地址
30 | // loadEnv(): 返回当前环境env文件中额外定义的变量
31 | const env = loadEnv(mode, path.resolve(process.env.VITE_ROOT_DIR, 'env'))
32 | const { VITE_ROOT_DIR, VITE_APP_PORT, VITE_DELETE_CONSOLE, VITE_SHOW_SOURCEMAP } = env
33 | console.log('环境变量 env -> ', env)
34 | const { UNI_PLATFORM } = process.env
35 | console.log('UNI_PLATFORM -> ', UNI_PLATFORM) // 得到 mp-weixin, h5, app 等
36 |
37 | return defineConfig({
38 | // root: VITE_ROOT_DIR,
39 | envDir: './env', // 自定义env目录
40 | plugins: [
41 | UniPages({
42 | dts: path.join(VITE_ROOT_DIR, 'types/uni-pages.d.ts'),
43 | homePage: 'pages/index/index', // 设置默认路由入口
44 | dir: 'pages', // 主目录
45 | subPackages: ['pages-sub'], // 子目录,是个数组,可以配置多个,但是不能为pages里面的目录
46 | outDir: './',
47 | exclude: ['**/components/**/**.*'],
48 | routeBlockLang: 'json5', // 虽然设了默认值,但是vue文件还是要加上 lang="json5", 这样才能很好地格式化
49 | }),
50 | UniLayouts({
51 | layoutDir: 'layouts',
52 | layout: '',
53 | cwd: VITE_ROOT_DIR,
54 | }),
55 | // UniPlatform(),
56 | UniManifest(),
57 | // UniXXX 需要在 Uni 之前引入
58 | Uni(),
59 | UnoCSS(),
60 | AutoImport({
61 | imports: ['vue', 'uni-app'],
62 | dts: 'types/auto-import.d.ts',
63 | dirs: ['hooks'], // 自动导入 hooks
64 | eslintrc: { enabled: true },
65 | vueTemplate: true, // default false
66 | }),
67 |
68 | // viteCompression(),
69 | ViteRestart({
70 | // 通过这个插件,在修改vite.config.js文件则不需要重新运行也生效配置
71 | restart: ['vite.config.js'],
72 | }),
73 | // h5环境增加编译时间
74 | UNI_PLATFORM === 'h5' && {
75 | name: 'html-transform',
76 | transformIndexHtml(html) {
77 | return html.replace('%BUILD_DATE%', dayjs().format('YYYY-MM-DD HH:mm:ss'))
78 | },
79 | },
80 | ],
81 | define: {
82 | __UNI_PLATFORM__: JSON.stringify(UNI_PLATFORM),
83 | },
84 | css: {
85 | postcss: {
86 | plugins: [
87 | // autoprefixer({
88 | // // 指定目标浏览器
89 | // overrideBrowserslist: ['> 1%', 'last 2 versions'],
90 | // }),
91 | ],
92 | },
93 | },
94 |
95 | resolve: {
96 | alias: {
97 | '@': path.join(VITE_ROOT_DIR, ''),
98 | },
99 | },
100 | server: {
101 | host: '0.0.0.0',
102 | hmr: true,
103 | port: Number.parseInt(VITE_APP_PORT, 10),
104 | },
105 | build: {
106 | // 方便非h5端调试
107 | sourcemap: VITE_SHOW_SOURCEMAP === 'true', // 默认是false
108 | target: 'es6',
109 | minify: 'terser',
110 | terserOptions: {
111 | compress: {
112 | drop_console: VITE_DELETE_CONSOLE === 'true',
113 | drop_debugger: true,
114 | },
115 | },
116 | },
117 | })
118 | }
119 |
--------------------------------------------------------------------------------
/pages/demo/base/throughout.vue:
--------------------------------------------------------------------------------
1 |
2 | {
3 | style: {
4 | navigationBarTitleText: '通屏+下拉刷新+自定义导航栏',
5 | enablePullDownRefresh: false,
6 | backgroundColor: '#23c09c', // 这个背景色要与页面的.top-section的背景图差不多,这样下拉刷新看起来才比较协调
7 | 'app-plus': {
8 | titleNView: {
9 | type: 'transparent',
10 | },
11 | },
12 | 'mp-weixin': {
13 | navigationStyle: 'custom',
14 | },
15 | },
16 | }
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
34 |
35 |
36 |
37 | {{ '我是标题' }}
38 |
39 |
40 |
41 |
51 |
52 | 顶部区域
53 | 可以是标题,也可以是个人中心头像等
54 | 建议本区域高度不低于200rpx
55 |
56 |
57 | 注意,上面的导航栏渐变效果仅微信端支持,且上面的导航栏无法抽为组件引入使用,否则滚动效果没有了。如果不只是微信小程序使用,可以
58 | onPageScroll 实现全端效果一样,另外如果是app端,还可以配置 titleNView。参考
59 | https://uniapp.dcloud.net.cn/tutorial/page.html#onpagescroll 。
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
95 |
96 |
146 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
10 |
11 |
12 |
13 | [](https://github.com/codercup/unibest)
14 | [](https://github.com/codercup/unibest)
15 | [](https://gitee.com/codercup/unibest/stargazers)
16 | [](https://gitee.com/codercup/unibest/members)
17 | 
18 | 
19 | 
20 | 
21 |
22 |
23 |
24 | `unibest` 是一个 uniapp 跨端解决方案,由 `uniapp` + `Vue3` + `Ts` + `Vite4` + `UnoCss` + `VSCode`(可选 `webstorm`) 实现。它使用了最新的前端技术栈,可以通过命令行方式运行 `web`、`小程序` 和 `App`,同时也支持 `HBuilderX` 运行,当前版本为 `HBuilderX` 运行版本。如需通过命令行运行,请安装命令行版(unibest)。
25 |
26 | `unibest` 内置了 `约定式路由`、`layout布局`、`请求封装`、`请求拦截`、`登录拦截`、`UnoCSS`、`i18n多语言` 等基础功能,提供了 `代码提示`、`自动格式化`、`统一配置`、`代码片段` 等辅助功能,让你编写 `uniapp` 拥有 `best` 体验 ( `unibest 的由来`)。
27 |
28 | 
29 |
30 |
31 | 📱 在线预览
32 | |
33 | 📖 阅读文档
34 |
35 |
36 | ## ✨ 特性
37 |
38 | - ⚡️ [Vue 3](https://github.com/vuejs/core), [Vite](https://github.com/vitejs/vite), [pnpm](https://pnpm.io/), [esbuild](https://github.com/evanw/esbuild) - 就是快!
39 | - 🔥 最新语法 - `
166 |
214 |
--------------------------------------------------------------------------------
/pages/demo/page/waterfall.vue:
--------------------------------------------------------------------------------
1 |
2 | {
3 | style: { navigationBarTitleText: 'waterfall' },
4 | }
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 | {{ item.title }}
33 |
34 |
35 | {{ item.desc }}
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
52 |
53 |
54 |
55 | {{ item.title }}
56 |
57 |
58 | {{ item.desc }}
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
151 |
156 |
157 |
189 |
--------------------------------------------------------------------------------
/pages/demo/page/lottery/big-wheel.vue:
--------------------------------------------------------------------------------
1 |
2 | {
3 | layout: 'demo',
4 | style: { navigationBarTitleText: '大转盘抽奖' },
5 | }
6 |
7 |
8 |
9 |
10 |
11 |
12 |
18 |
19 | {{ item.name }}
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
163 |
164 |
225 |
--------------------------------------------------------------------------------
/pages/demo/page/sign.vue:
--------------------------------------------------------------------------------
1 |
2 | {
3 | layout: 'default',
4 | style: { navigationBarTitleText: '签字板' },
5 | }
6 |
7 |
8 |
9 |
10 |
21 |
22 |
23 |
24 | {{ isFullScreen ? '退出全屏' : '全屏' }}
25 |
26 | 清空
27 |
28 | 撤回
29 |
30 |
31 |
32 | 保存
33 |
34 |
35 |
36 |
37 |
38 |
222 |
223 |
267 |
--------------------------------------------------------------------------------
/unocss.css:
--------------------------------------------------------------------------------
1 | /* layer: preflights */
2 | page,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgb(0 0 0 / 0);--un-ring-shadow:0 0 rgb(0 0 0 / 0);--un-shadow-inset: ;--un-shadow:0 0 rgb(0 0 0 / 0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgb(147 197 253 / 0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}
3 | /* layer: icons */
4 | .i-carbon-car{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='m29.338 15.934l-7.732-2.779l-3.232-4.058A2.99 2.99 0 0 0 16.054 8H8.058a2.998 2.998 0 0 0-2.48 1.312l-2.712 3.983A4.988 4.988 0 0 0 2 16.107V24a1 1 0 0 0 1 1h2.142a3.98 3.98 0 0 0 7.716 0h6.284a3.98 3.98 0 0 0 7.716 0H29a1 1 0 0 0 1-1v-7.125a1 1 0 0 0-.662-.941M9 26a2 2 0 1 1 2-2a2.003 2.003 0 0 1-2 2m14 0a2 2 0 1 1 2-2a2.003 2.003 0 0 1-2 2m5-3h-1.142a3.98 3.98 0 0 0-7.716 0h-6.284a3.98 3.98 0 0 0-7.716 0H4v-6.893a2.998 2.998 0 0 1 .52-1.688l2.711-3.981A1 1 0 0 1 8.058 10h7.996a.993.993 0 0 1 .764.355l3.4 4.268a1 1 0 0 0 .444.318L28 17.578Z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;display:inline-block;vertical-align:middle;width:1.2em;height:1.2em;}
5 | .i-carbon-sun{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6M5.394 6.813L6.81 5.399l3.505 3.506L8.9 10.319zM2 15.005h5v2H2zm3.394 10.193L8.9 21.692l1.414 1.414l-3.505 3.506zM15 25.005h2v5h-2zm6.687-1.9l1.414-1.414l3.506 3.506l-1.414 1.414zm3.313-8.1h5v2h-5zm-3.313-6.101l3.506-3.506l1.414 1.414l-3.506 3.506zM15 2.005h2v5h-2z'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;display:inline-block;vertical-align:middle;width:1.2em;height:1.2em;}
6 | .i-carbon-user-avatar{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M16 8a5 5 0 1 0 5 5a5 5 0 0 0-5-5m0 8a3 3 0 1 1 3-3a3.003 3.003 0 0 1-3 3'/%3E%3Cpath fill='currentColor' d='M16 2a14 14 0 1 0 14 14A14.016 14.016 0 0 0 16 2m-6 24.377V25a3.003 3.003 0 0 1 3-3h6a3.003 3.003 0 0 1 3 3v1.377a11.899 11.899 0 0 1-12 0m13.993-1.451A5.002 5.002 0 0 0 19 20h-6a5.002 5.002 0 0 0-4.992 4.926a12 12 0 1 1 15.985 0'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;display:inline-block;vertical-align:middle;width:1.2em;height:1.2em;}
7 | /* layer: applet_shortcuts */
8 | .dark .dark_a_i-carbon-moon{--un-icon:url("data:image/svg+xml;utf8,%3Csvg viewBox='0 0 32 32' display='inline-block' vertical-align='middle' width='1.2em' height='1.2em' xmlns='http://www.w3.org/2000/svg' %3E%3Cpath fill='currentColor' d='M13.503 5.414a15.076 15.076 0 0 0 11.593 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3'/%3E%3C/svg%3E");-webkit-mask:var(--un-icon) no-repeat;mask:var(--un-icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit;display:inline-block;vertical-align:middle;width:1.2em;height:1.2em;}
9 | /* layer: default */
10 | .m-8{margin:64rpx;}
11 | .m-auto{margin:auto;}
12 | .mx-auto{margin-left:auto;margin-right:auto;}
13 | .mb-2{margin-bottom:16rpx;}
14 | .mb-4{margin-bottom:32rpx;}
15 | .mb-8{margin-bottom:64rpx;}
16 | .ml-2{margin-left:16rpx;}
17 | .mr-2{margin-right:16rpx;}
18 | .mt-12{margin-top:96rpx;}
19 | .mt-2{margin-top:16rpx;}
20 | .mt-4{margin-top:32rpx;}
21 | .mt-8{margin-top:64rpx;}
22 | .block{display:block;}
23 | .h-28{height:224rpx;}
24 | .max-w-100{max-width:800rpx;}
25 | .w-20{width:160rpx;}
26 | .w-28{width:224rpx;}
27 | .flex{display:flex;}
28 | .items-center{align-items:center;}
29 | .justify-center{justify-content:center;}
30 | .overflow-hidden{overflow:hidden;}
31 | .bg-white{--un-bg-opacity:1;background-color:rgb(255 255 255 / var(--un-bg-opacity));}
32 | .p-4{padding:32rpx;}
33 | .px,
34 | .px-4{padding-left:32rpx;padding-right:32rpx;}
35 | .pt-2{padding-top:16rpx;}
36 | .text-center{text-align:center;}
37 | .text-justify{text-align:justify;}
38 | .indent{text-indent:48rpx;}
39 | .text-2xl{font-size:48rpx;line-height:64rpx;}
40 | .text-4{font-size:32rpx;}
41 | .text-4xl{font-size:72rpx;line-height:80rpx;}
42 | .text-blue-500{--un-text-opacity:1;color:rgb(59 130 246 / var(--un-text-opacity));}
43 | .text-green-400{--un-text-opacity:1;color:rgb(74 222 128 / var(--un-text-opacity));}
44 | .text-red{--un-text-opacity:1;color:rgb(248 113 113 / var(--un-text-opacity));}
45 | .leading-8{line-height:64rpx;}
--------------------------------------------------------------------------------
/types/auto-import.d.ts:
--------------------------------------------------------------------------------
1 | /* eslint-disable */
2 | /* prettier-ignore */
3 | // @ts-nocheck
4 | // noinspection JSUnusedGlobalSymbols
5 | // Generated by unplugin-auto-import
6 | export {}
7 | declare global {
8 | const EffectScope: typeof import('vue')['EffectScope']
9 | const computed: typeof import('vue')['computed']
10 | const createApp: typeof import('vue')['createApp']
11 | const customRef: typeof import('vue')['customRef']
12 | const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
13 | const defineComponent: typeof import('vue')['defineComponent']
14 | const effectScope: typeof import('vue')['effectScope']
15 | const getCurrentInstance: typeof import('vue')['getCurrentInstance']
16 | const getCurrentScope: typeof import('vue')['getCurrentScope']
17 | const h: typeof import('vue')['h']
18 | const inject: typeof import('vue')['inject']
19 | const isProxy: typeof import('vue')['isProxy']
20 | const isReactive: typeof import('vue')['isReactive']
21 | const isReadonly: typeof import('vue')['isReadonly']
22 | const isRef: typeof import('vue')['isRef']
23 | const markRaw: typeof import('vue')['markRaw']
24 | const nextTick: typeof import('vue')['nextTick']
25 | const onActivated: typeof import('vue')['onActivated']
26 | const onAddToFavorites: typeof import('@dcloudio/uni-app')['onAddToFavorites']
27 | const onBackPress: typeof import('@dcloudio/uni-app')['onBackPress']
28 | const onBeforeMount: typeof import('vue')['onBeforeMount']
29 | const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
30 | const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
31 | const onDeactivated: typeof import('vue')['onDeactivated']
32 | const onError: typeof import('@dcloudio/uni-app')['onError']
33 | const onErrorCaptured: typeof import('vue')['onErrorCaptured']
34 | const onHide: typeof import('@dcloudio/uni-app')['onHide']
35 | const onLaunch: typeof import('@dcloudio/uni-app')['onLaunch']
36 | const onLoad: typeof import('@dcloudio/uni-app')['onLoad']
37 | const onMounted: typeof import('vue')['onMounted']
38 | const onNavigationBarButtonTap: typeof import('@dcloudio/uni-app')['onNavigationBarButtonTap']
39 | const onNavigationBarSearchInputChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputChanged']
40 | const onNavigationBarSearchInputClicked: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputClicked']
41 | const onNavigationBarSearchInputConfirmed: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputConfirmed']
42 | const onNavigationBarSearchInputFocusChanged: typeof import('@dcloudio/uni-app')['onNavigationBarSearchInputFocusChanged']
43 | const onPageNotFound: typeof import('@dcloudio/uni-app')['onPageNotFound']
44 | const onPageScroll: typeof import('@dcloudio/uni-app')['onPageScroll']
45 | const onPullDownRefresh: typeof import('@dcloudio/uni-app')['onPullDownRefresh']
46 | const onReachBottom: typeof import('@dcloudio/uni-app')['onReachBottom']
47 | const onReady: typeof import('@dcloudio/uni-app')['onReady']
48 | const onRenderTracked: typeof import('vue')['onRenderTracked']
49 | const onRenderTriggered: typeof import('vue')['onRenderTriggered']
50 | const onResize: typeof import('@dcloudio/uni-app')['onResize']
51 | const onScopeDispose: typeof import('vue')['onScopeDispose']
52 | const onServerPrefetch: typeof import('vue')['onServerPrefetch']
53 | const onShareAppMessage: typeof import('@dcloudio/uni-app')['onShareAppMessage']
54 | const onShareTimeline: typeof import('@dcloudio/uni-app')['onShareTimeline']
55 | const onShow: typeof import('@dcloudio/uni-app')['onShow']
56 | const onTabItemTap: typeof import('@dcloudio/uni-app')['onTabItemTap']
57 | const onThemeChange: typeof import('@dcloudio/uni-app')['onThemeChange']
58 | const onUnhandledRejection: typeof import('@dcloudio/uni-app')['onUnhandledRejection']
59 | const onUnload: typeof import('@dcloudio/uni-app')['onUnload']
60 | const onUnmounted: typeof import('vue')['onUnmounted']
61 | const onUpdated: typeof import('vue')['onUpdated']
62 | const provide: typeof import('vue')['provide']
63 | const reactive: typeof import('vue')['reactive']
64 | const readonly: typeof import('vue')['readonly']
65 | const ref: typeof import('vue')['ref']
66 | const resolveComponent: typeof import('vue')['resolveComponent']
67 | const shallowReactive: typeof import('vue')['shallowReactive']
68 | const shallowReadonly: typeof import('vue')['shallowReadonly']
69 | const shallowRef: typeof import('vue')['shallowRef']
70 | const toRaw: typeof import('vue')['toRaw']
71 | const toRef: typeof import('vue')['toRef']
72 | const toRefs: typeof import('vue')['toRefs']
73 | const toValue: typeof import('vue')['toValue']
74 | const triggerRef: typeof import('vue')['triggerRef']
75 | const unref: typeof import('vue')['unref']
76 | const useAttrs: typeof import('vue')['useAttrs']
77 | const useCssModule: typeof import('vue')['useCssModule']
78 | const useCssVars: typeof import('vue')['useCssVars']
79 | const useNavbarWeixin: typeof import('../hooks/useNavbarWeixin')['default']
80 | const useSlots: typeof import('vue')['useSlots']
81 | const watch: typeof import('vue')['watch']
82 | const watchEffect: typeof import('vue')['watchEffect']
83 | const watchPostEffect: typeof import('vue')['watchPostEffect']
84 | const watchSyncEffect: typeof import('vue')['watchSyncEffect']
85 | }
86 | // for type re-export
87 | declare global {
88 | // @ts-ignore
89 | export type { Component, ComponentPublicInstance, ComputedRef, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, VNode, WritableComputedRef } from 'vue'
90 | import('vue')
91 | }
92 | // for vue template auto import
93 | import { UnwrapRef } from 'vue'
94 | declare module 'vue' {
95 | interface GlobalComponents {}
96 | interface ComponentCustomProperties {
97 | readonly EffectScope: UnwrapRef
98 | readonly computed: UnwrapRef
99 | readonly createApp: UnwrapRef
100 | readonly customRef: UnwrapRef
101 | readonly defineAsyncComponent: UnwrapRef
102 | readonly defineComponent: UnwrapRef
103 | readonly effectScope: UnwrapRef
104 | readonly getCurrentInstance: UnwrapRef
105 | readonly getCurrentScope: UnwrapRef
106 | readonly h: UnwrapRef
107 | readonly inject: UnwrapRef
108 | readonly isProxy: UnwrapRef
109 | readonly isReactive: UnwrapRef
110 | readonly isReadonly: UnwrapRef
111 | readonly isRef: UnwrapRef
112 | readonly markRaw: UnwrapRef
113 | readonly nextTick: UnwrapRef
114 | readonly onActivated: UnwrapRef
115 | readonly onAddToFavorites: UnwrapRef
116 | readonly onBackPress: UnwrapRef
117 | readonly onBeforeMount: UnwrapRef
118 | readonly onBeforeUnmount: UnwrapRef
119 | readonly onBeforeUpdate: UnwrapRef
120 | readonly onDeactivated: UnwrapRef
121 | readonly onError: UnwrapRef
122 | readonly onErrorCaptured: UnwrapRef
123 | readonly onHide: UnwrapRef
124 | readonly onLaunch: UnwrapRef
125 | readonly onLoad: UnwrapRef
126 | readonly onMounted: UnwrapRef
127 | readonly onNavigationBarButtonTap: UnwrapRef
128 | readonly onNavigationBarSearchInputChanged: UnwrapRef
129 | readonly onNavigationBarSearchInputClicked: UnwrapRef
130 | readonly onNavigationBarSearchInputConfirmed: UnwrapRef
131 | readonly onNavigationBarSearchInputFocusChanged: UnwrapRef
132 | readonly onPageNotFound: UnwrapRef
133 | readonly onPageScroll: UnwrapRef
134 | readonly onPullDownRefresh: UnwrapRef
135 | readonly onReachBottom: UnwrapRef
136 | readonly onReady: UnwrapRef
137 | readonly onRenderTracked: UnwrapRef
138 | readonly onRenderTriggered: UnwrapRef
139 | readonly onResize: UnwrapRef
140 | readonly onScopeDispose: UnwrapRef
141 | readonly onServerPrefetch: UnwrapRef
142 | readonly onShareAppMessage: UnwrapRef
143 | readonly onShareTimeline: UnwrapRef
144 | readonly onShow: UnwrapRef
145 | readonly onTabItemTap: UnwrapRef
146 | readonly onThemeChange: UnwrapRef
147 | readonly onUnhandledRejection: UnwrapRef
148 | readonly onUnload: UnwrapRef
149 | readonly onUnmounted: UnwrapRef
150 | readonly onUpdated: UnwrapRef
151 | readonly provide: UnwrapRef
152 | readonly reactive: UnwrapRef
153 | readonly readonly: UnwrapRef
154 | readonly ref: UnwrapRef
155 | readonly resolveComponent: UnwrapRef
156 | readonly shallowReactive: UnwrapRef
157 | readonly shallowReadonly: UnwrapRef
158 | readonly shallowRef: UnwrapRef
159 | readonly toRaw: UnwrapRef
160 | readonly toRef: UnwrapRef
161 | readonly toRefs: UnwrapRef
162 | readonly toValue: UnwrapRef
163 | readonly triggerRef: UnwrapRef
164 | readonly unref: UnwrapRef
165 | readonly useAttrs: UnwrapRef
166 | readonly useCssModule: UnwrapRef
167 | readonly useCssVars: UnwrapRef
168 | readonly useNavbarWeixin: UnwrapRef
169 | readonly useSlots: UnwrapRef
170 | readonly watch: UnwrapRef
171 | readonly watchEffect: UnwrapRef
172 | readonly watchPostEffect: UnwrapRef
173 | readonly watchSyncEffect: UnwrapRef
174 | }
175 | }
176 | declare module '@vue/runtime-core' {
177 | interface GlobalComponents {}
178 | interface ComponentCustomProperties {
179 | readonly EffectScope: UnwrapRef
180 | readonly computed: UnwrapRef
181 | readonly createApp: UnwrapRef
182 | readonly customRef: UnwrapRef
183 | readonly defineAsyncComponent: UnwrapRef
184 | readonly defineComponent: UnwrapRef
185 | readonly effectScope: UnwrapRef
186 | readonly getCurrentInstance: UnwrapRef
187 | readonly getCurrentScope: UnwrapRef
188 | readonly h: UnwrapRef
189 | readonly inject: UnwrapRef
190 | readonly isProxy: UnwrapRef
191 | readonly isReactive: UnwrapRef
192 | readonly isReadonly: UnwrapRef
193 | readonly isRef: UnwrapRef
194 | readonly markRaw: UnwrapRef
195 | readonly nextTick: UnwrapRef
196 | readonly onActivated: UnwrapRef
197 | readonly onAddToFavorites: UnwrapRef
198 | readonly onBackPress: UnwrapRef
199 | readonly onBeforeMount: UnwrapRef
200 | readonly onBeforeUnmount: UnwrapRef
201 | readonly onBeforeUpdate: UnwrapRef
202 | readonly onDeactivated: UnwrapRef
203 | readonly onError: UnwrapRef
204 | readonly onErrorCaptured: UnwrapRef
205 | readonly onHide: UnwrapRef
206 | readonly onLaunch: UnwrapRef
207 | readonly onLoad: UnwrapRef
208 | readonly onMounted: UnwrapRef
209 | readonly onNavigationBarButtonTap: UnwrapRef
210 | readonly onNavigationBarSearchInputChanged: UnwrapRef
211 | readonly onNavigationBarSearchInputClicked: UnwrapRef
212 | readonly onNavigationBarSearchInputConfirmed: UnwrapRef
213 | readonly onNavigationBarSearchInputFocusChanged: UnwrapRef
214 | readonly onPageNotFound: UnwrapRef
215 | readonly onPageScroll: UnwrapRef
216 | readonly onPullDownRefresh: UnwrapRef
217 | readonly onReachBottom: UnwrapRef
218 | readonly onReady: UnwrapRef
219 | readonly onRenderTracked: UnwrapRef
220 | readonly onRenderTriggered: UnwrapRef
221 | readonly onResize: UnwrapRef
222 | readonly onScopeDispose: UnwrapRef
223 | readonly onServerPrefetch: UnwrapRef
224 | readonly onShareAppMessage: UnwrapRef
225 | readonly onShareTimeline: UnwrapRef
226 | readonly onShow: UnwrapRef
227 | readonly onTabItemTap: UnwrapRef
228 | readonly onThemeChange: UnwrapRef
229 | readonly onUnhandledRejection: UnwrapRef
230 | readonly onUnload: UnwrapRef
231 | readonly onUnmounted: UnwrapRef
232 | readonly onUpdated: UnwrapRef
233 | readonly provide: UnwrapRef
234 | readonly reactive: UnwrapRef
235 | readonly readonly: UnwrapRef
236 | readonly ref: UnwrapRef
237 | readonly resolveComponent: UnwrapRef
238 | readonly shallowReactive: UnwrapRef
239 | readonly shallowReadonly: UnwrapRef
240 | readonly shallowRef: UnwrapRef
241 | readonly toRaw: UnwrapRef
242 | readonly toRef: UnwrapRef
243 | readonly toRefs: UnwrapRef
244 | readonly toValue: UnwrapRef
245 | readonly triggerRef: UnwrapRef
246 | readonly unref: UnwrapRef
247 | readonly useAttrs: UnwrapRef
248 | readonly useCssModule: UnwrapRef
249 | readonly useCssVars: UnwrapRef
250 | readonly useNavbarWeixin: UnwrapRef
251 | readonly useSlots: UnwrapRef
252 | readonly watch: UnwrapRef
253 | readonly watchEffect: UnwrapRef
254 | readonly watchPostEffect: UnwrapRef
255 | readonly watchSyncEffect: UnwrapRef
256 | }
257 | }
258 |
--------------------------------------------------------------------------------