DaisyUI指南
主题切换参考主题控制器。以下甄选了几个好看的主题。
123456789101112131415161718192021222324252627282930313233/** @type {import('tailwindcss').Config} */export default { content: ["./src/**/*.{html,js,vue}"], theme: { extend: {}, }, plugins: [require("daisyui")], daisyui: { themes: [ "light", "dark", "halloween", "garden", "forest", "lofi", ...
VueUse
这是 Vue 的一个第三方库,提供了许多意想不到的功能。比如异步 computed 。
computedAsyncVue 官方的 computed 是同步的,有时并不能满足开发需求。比如我根据“县名”异步查询行政区下的“乡镇”,在 resolve 之前,我希望有个默认值。当然了,我可以定义一个 ref 变量来存放默认值,异步查询后更改 ref 的值。这意味着,我要在选择县之后的回调函数中,手动调用异步函数,然后等待异步函数 resolve ,再修改 ref 的值。这显然很麻烦。
但是这个库函数,直接传入异步函数和默认值,组件直接使用 computed 的结果即可,自然是方便很多。
比如。
1234567891011const towns = computedAsync( async () => { if (country.value) { let towns = await getTowns((country.value as any).name); return addIdToDistinct ...
项目过程中积累的css技巧
Flex布局设置多行首对齐且整体居中假定项目中的待展示元素宽高固定,每一行要求左对齐,一行最多五个,在此基础上,依据设备的不同,每一行多余的屏幕空间不同。如何将每行排满后多余的屏幕空间分配给该行的每个元素?
答:采用一个空盒子对展示元素进行包裹。对于空盒子,采用 flex-bias 设置一行内所占空间为 20% ,同时空盒子也进行 flex 布局,对展示元素进行水平和垂直的居中处理。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869<template> <div class="categories"> <div class="wrapper" v-for="category in categories"> <navigator class ...
vue3知识点
样式穿透使用样式穿透,可以穿透子组件影响到下面的类的样式,做到对第三方组件的样式自定义。
采用>>>12345uni-data-picker>>>.input-value-border { border: 1px solid black; width: 100px; height: 50px;}
采用 /deep/12345uni-data-picker /deep/ .input-value-border { border: 1px solid red; width: 100px; height: 50px;}
采用 ::v-deep12345uni-data-picker::v-deep .input-value-border { border: 3px solid orange; width: 100px; height: 50px;}
父组件获取子组件属性根据官方文档,采用组合式 api 编写的组件,内部 ...
MemFireDb
安装以最近的 uniapp 开发微信小程序为例。
12npm install @supabase/supabase-jsnpm install supabase-wechat-stable-v2
配置数据库连接12345678//fireDb.tsimport { createClient } from "supabase-wechat-stable-v2"//这两个常量可以在MemFireDb官网数据库的api中找到const supabaseUrl = "https://xxxx.baseapi.memfiredb.com";const publicAnonKey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";// Create a single supabase client for interacting with your databaseexport const supabase = createClient(supabaseUrl, publicA ...
TypeScript
安装1npm i -g typescript
编译ts文件使用该命令可以将 ts 文件转换成可执行的 js 文件。
1tsc xxx.ts
通过 node 命令执行相应的 js 文件。
1node xxx.js
直接运行ts文件先安装所需工具包。
1npm i -g ts-node
使用该工具包直接执行 ts 文件。
1ts-node xxx.ts
使用时的一些小问题类型本身定义是错误的比如,在使用 MemFireDB 的微信SDK开发小程序的时候,我使用了一个方法用于获取用户信息。
1const { data: { user } } = await supabase.auth.getUser();
对于 user 对应的官方 type 是 User,如下所示。
123456789101112131415161718192021222324interface User { id: string app_metadata: UserAppMetadata user_metadata: UserMetadata aud: ...
uniapp知识点
在vscode中开发uniapp使用命令行创建uniapp项目此处是vue3+ts。
1npx degit dcloudio/uni-preset-vue#vite-ts my-vue3-project
安装插件
uni-create-view
uni-helper
uniapp小程序扩展
TS相关在根目录创建 tsconfig.json 文件,并进行个性化配置,个性化配置是可选的,没有tsconfig.json时会自动使用默认配置运行。推荐配置如下:
12345678910111213141516171819202122232425262728293031323334353637383940414243444546// tsconfig.json{ "compilerOptions": { "target": "esnext", "module": "esnext", "strict": true, "js ...
使用nrm管理npm镜像源
安装nrm1npm install -g nrm
查看镜像源1nrm ls
选用镜像源1nrm use xxx
比如nrm use taobao。
基础算法
快速排序
选取基准值(分界值)x,可以是数组的第一个元素,也可以是数组的最后一个元素,中间元素亦可。
使用双指针 i 和 j 从数组的两端开始扫描,从左端找到一个>=x的值a,从右端找到一个<=x的值b,交换ab的值,交换后i以及i之前的元素都小于等于x,j以及j之后的元素都大于等于x。交换后i应递增,j应递减,继续查找可以交换的值,知道ij相遇甚至错开(i > j)。
当数组成功划分两部分,左部分小于等于x,右部分大于等于x的时候,左右两部分分别递归调用快速排序。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859//// Created by Kahiva on 2024/1/4.//#include <iostream>using namespace std;const int N = 100010;int t[N];void quick_sort(int l, ...
数据结构——基础问题
六、哈夫曼树1.合并果子12345678910111213141516171819202122232425262728293031323334353637383940414243//// Created by Kahiva on 2023/10/31.////https://www.acwing.com/problem/content/150///使用哈夫曼树的知识合并果子堆,计算最小花费体力#include <iostream>#include <algorithm>#include <queue>#include <vector>using namespace std;int main(){ //定义一个优先队列,第一个参数是队列元素的类型,第二个是使用的容器类型,第三个是排序方式。 //此处使用升序排序,即小的元素优先出队。 priority_queue<int, vector<int>, greater<int>> stones_heap; int n; ...