rust
基础概念cargo 是rust的包管理工具rustc 是rust的编译器rustdoc 是rust的文档生成工具rustfmt 是rust的代码格式化工具rust-analyzer 是rust的智能补全工具
cargocargo 是rust的包管理工具cargo build 编译项目cargo run 运行项目cargo check 检查项目cargo fmt 格式化代码cargo clippy 检查代码cargo doc 生成文档cargo build –release 编译项目(优化)cargo clean 清理项目cargo update 更新依赖cargo add 添加依赖cargo remove 删除依赖
1. 简单的hello12345678910use ferris_says::say;use std::io::{stdout, BufWriter};fn main() { let out = "Hello fellow Rustaceans!"; let width = 24; let mut writ ...
vben-admin学习1
学习项目 vue-vben-admin
1. bindMethods12345678910111213141516171819export function bindMethods<T extends object>(instance: T): void { const prototype = Object.getPrototypeOf(instance); //获取属性 返回对象 const propertyNames = Object.getOwnPropertyNames(prototype); //获取属性名 返回数组 propertyNames.forEach((propertyName) => { const descriptor = Object.getOwnPropertyDescriptor(prototype, propertyName); //获取属性描述符 const propertyValue = instance[propertyName as keyof T]; //获取属性 ...
vben-全局设定&class解读
学习项目 vue-vben-admin
1.preferencesManager外观管理器
2.StorageManager缓存管理器, 状态管理器
3.GlobalShareState全局共享状态
1234/** * 全局复用的变量、组件、配置,各个模块之间共享 * 通过单例模式实现,单例必须注意不受请求影响,例如用户信息这些需要根据请求获取的。后续如果有ssr需求,也不会影响 */
4.StateHandler异步等待异步, 状态处理器
Eg1:12345678910private async getForm() { if (!this.isMounted) { // 等待form挂载 await this.stateHandler.waitForCondition(); } if (!this.form?.meta) { throw new Error('<VbenForm /> is not mounted'); } return ...
vben-admin学习1
学习项目 vue-vben-admin
1.初始化123456//(package.json/.node-version有写)nvm use 20 pnpm i pnpm run dev
疑问点: 选择ui框架是怎么实现的 ?
2. 选择了ant-design1.main.ts1234567891011121314151617181920212223242526272829303132import { initPreferences } from '@vben/preferences';import { unmountGlobalLoading } from '@vben/utils';import { overridesPreferences } from './preferences';/** * 应用初始化完成之后再进行页面加载渲染 */async function initApplication() { // name用于指定项目唯一标识 / ...
nuxt实践
从使用nuxt开发web门户, 到使用nuxt开发h5页面
1. 为什么使用 ssr, ssg , seo 是我看中的地方
2. 为什么h5使用
不用定义路由
加载较快
seo较好
开发注意
列表渲染涉及到本地图片的地方一定要注意, 否则线上500
1new URL(`~/assets/image/1/a.png`, import.meta.url).href
打包产物dist里面是软链接, 实践内容在public里面
nuxt.config.ts配置配置iconfont123css:[ "~/assets/iconfont/iconfont.css" ],
env配置12345678import { loadEnv } from 'vite'const envName = process.env.npm_lifecycle_script.match(/--mode\s(.*)/)?.[1]const envData = loadEnv(envName as string, process.cw ...
开发代码调试, 问题定位, h5调试总结
开发中问题调试, 一直是一个业务开发痛点, 根据前端的应用载体可分为,
web应用
小程序
h5
app内嵌h5
微信h5 | 微信公众号
web调试
一般在开发过程中, 大多采用console, debugger断点方式
线上环境调试
本地连接线上数据进行调试
线上查看控制台是否有报错(一般是使用了某些没有的定义的变量或者方法)
线上调试正在运行的源代码, 进行debugger调试
各种浏览器tools: Vue devtools , React developer tools, react redux
小程序调试基本和上述一致, 只是载体从浏览器变为了开发者工具或者真机, 需要注意的是, 如果需要测试唤起调试, 需要编译好小程序后, 手机扫描, 设置唤起扫码的版本
h5调试
内嵌h5如果有对应程序的debug包, 可以直接抓包, 如果不能抓包, 网页检查器也是不能使用的
接口调试 / 网页错误
抓包工具charles fiddler
网页调试功能
safari可以使用网页检查器(和web应用一样全可以调试)
chorme devices可以 ...
vue hooks使用有感
Vue3 表单逻辑抽象与复用方案设计1. 背景与问题在开发中经常遇到复杂的表单页面,这些表单通常具有以下特点:
字段较多且类型复杂
存在多个依赖关系(如审核人依赖组织)
包含特殊功能(如地图选择)
需要处理编辑和新增两种场景
数据提交和回显需要转换
这些特点导致以下问题:
代码组织混乱
逻辑复用困难
维护成本高
代码重复率高
2. 解决方案2.1 整体思路将表单逻辑分为三层:
基础功能层 - 处理常规表单字段
定制功能层 - 处理特定业务逻辑
特殊功能层 - 处理复杂交互功能
同时抽象出通用的工具层:
通用表单数据处理 hook
通用表单配置 hook
工具函数库
2.2 核心抽象2.2.1 通用表单数据处理 Hook12345678910111213141516171819202122232425// useFormData.tsexport function useFormData<T extends object, S = T>(initialData: T,options: {transform?: (data: T) => S;re ...
js内置对象map,set,generate,iterator
开发中用到最多的场景,父子组件通信,分发事件,组件传值。
1.generate 迭代器可以暂停和开始
*function
yield
yield*
1.funtion* 定义一个迭代器函数
generator.prototype.next()
generator.prototype.return()
generator.prototype.throw() 抛出错误
12345function* generator(i) { yield i; yield i + 10;}const gen = generator(10);
生成器函数有一个next()方法
next()方法返回一个对象,这个对象包含两个属性:value 和 done,value 属性表示本次 yield 表达式的返回值,done 属性为布尔类型,表示生成器后续是否还有 yield 语句,即生成器函数是否已经执行完毕并返回。
调用 next()方法时,如果传入了参数,那么这个参数会传给上一条执行的 yield 语句左边的变量,例如下面例子中的x:
1234567891011function ...
react
hexo对于{}处理会有问题
1.基础语法组件必须有一个根节点,组件名字必须大写
内联样式
123456<div className="arr" style={{ color: "#F40",fontSize:20 }}> {arr}</div>
style如果是对象,要两个{}内嵌,写属性要加引号,fontSize小驼峰
定义虚拟dom时候,不写引号
标签中混入js要用{}
jsx即是js和html混用,{}匹配js,<>匹配html
内联用{}内嵌写法
只有一个根标签
标签需要闭合
写一个不存在的标签
12写的小写标签当作浏览器标签识别 <good>写的大写标签(首字母)当作component组件,如果不存在,报错com is not undefinded
如果{}里面是一个数组,可以自动遍历,如果是对象,则出错
表达式和代码
jsx里面{}只能是一个表达式,不能是js代码
arr.map
demo(1)
cons ...
sql语法学习
作为一个前端,我认为sql的学习有助于理解业务,当别人告诉你这个表这个表时,不至于一知半解,我不指望一次入门学习能带来很多,但收获远比我想象的多的多。
1,基本使用1.删除目录1.点击安装文件夹,删除profile下面的文件夹
2.环境变量安装到sql下面的bin 文件夹
3.mySql 服务自动启动, 启动才能使用
2.命令启用服务12net start MySQLnet stop MySQL
3.使用客户端连接数据库服务器123mysql -uroot -p密码 显示密码mysql -u root -p 隐藏密码exit 退出
查看数据库
show database
使用数据库
use myDatabase
创建数据库
create database bjdatabse
数据库的基本单元
表
2.基础知识1.约束唯一性约束
show tables 查看数据库下面有那些表
2.sql语句的分类
DQL 数据查询语句 select
DML 数据操作语言 insert delete update 主要操作表中的数据
DDL 数据定义语言 操作表的结构,删除列 create dro ...