- 博客(32)
- 收藏
- 关注
原创 Vue2动态代理无须重启项目解决方案
如果我们需要使用不同的环境地址的时候,就需要使用命令或者手动修改vue.config.js中配置来重新启动项目。当项目项目越来越大的时候,我们需要很长的时间来启动项目,如此反复,极大影响我们开发进度。
2024-06-18 19:46:11 434
原创 如何写一个其他人可以使用的GitHub Action
在GitHub中,你肯定会使用自动部署一个项目到上,在这个过程中总要使用workflows工作流,并在其中使用action,在这个使用的过程中,总会好奇怎么去写一个action呢,所以,我对此进行了一个学习。官方概述如下:GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。您可以创建工作流程来构建和测试存储库的每个拉取请求,或将合并的拉取请求部署到生产环境。
2024-02-03 10:53:15 1649
原创 Scss基础用法
和都是用于样式表的预处理器,它们扩展了普通的CSS语法,提供了更多的功能和灵活性。SassPythonSCSSCSSSass.sassSCSS.scssSassSCSSCSSSCSSCSSCSSCSSSCSSSass在实际使用中,两者都提供了相似的功能,包括变量、嵌套规则、混合(Mixins)等,因此可以根据团队的需求和开发者的偏好进行选择。
2023-12-26 14:20:48 113
原创 小知识|npm scripts 如何将参数正确传递运行的脚本
在package.json文件中有个scripts命令:npm run component:add,在命令行输入npm run component:add -g aa -n bb -d cc后,显示的命令变成了node ./packages/scripts component:add aa bb ccc,-都不见了
2023-12-25 17:42:28 507
原创 Nestjs成长足迹(二):TypeORM操作数据库、Pipe校验参数
本文章记录自己学习Nest的过程,适于前端及对后端没有基础但对Nest感兴趣的同学,如有错误,欢迎各位大佬指正在开始本文的正式内容前,先梳理一下项目的目录结构,本项目使用了与我前面发文使用koa2写接口的一般步骤相似的目录架构,主要就是servicesmodulesdtoentities这几个重要目录在上一篇文章,已经初步介绍了Nest以及其swagger文档的使用,那么本篇便开始讲述Nest如何连接数据库、在创建实体中使用Pipe管道进行参数校验用于多对多关系,使用后会由TypeORM。
2023-12-13 23:12:54 1467
原创 Nestjs成长足迹(一):Nest介绍、swagger的使用
本文章记录自己学习Nest的过程,适于前端及对后端没有基础但对Nest感兴趣的同学,如有错误,欢迎各位大佬指正Nest 是一个用于构建高效,可扩展的Node.js服务器端应用程序的框架。它使用渐进式 JavaScript,内置并完全支持TypeScript(但仍然允许开发人员使用纯 JavaScript 编写代码)并结合了 OOP(面向对象编程),FP(函数式编程)和 FRP(函数式响应编程)的元素。在底层,Nest使用强大的 HTTP Server 框架,如 Express(默认)和 Fastify。
2023-12-13 22:40:48 1852 1
原创 使用EJS实现一键自动化生成代码模版
前言:在使用Koa2写毕设后端API的时候,每写一个接口,需要分别在router、controller、service三个文件夹下分别创建文件,在接口很多的情况下,每次在三个文件夹下分别创建对应的文件,是一件很没有效率的事情,那有没有什么比较好的解决方案么?写一个自动生成代码文件的脚本!!!结合这篇:使用Koa2写接口的一般步骤进行阅读更佳1、使用到的库ejs:是一套简单的模板语言,帮你利用普通的 JavaScript代码HTML 页面;npm install ejs -D<.
2022-05-21 10:04:17 809
原创 在Vue3+Vite+TS项目中,模块 ““path““ 只能在使用 “allowSyntheticDefaultImports“ 标志时进行默认导入ts(1259)
模块 ““path”” 只能在使用 “allowSyntheticDefaultImports” 标志时进行默认导入ts(1259)path.d.ts(167, 5): 此模块是使用 “export =” 声明的,只能在使用 “allowSyntheticDefaultImports” 标志时进行默认导入。在Vue3+Vite+TS项目中解决办法在tsconfig.node.json文件中添加"allowSyntheticDefaultImports": true...
2022-03-19 10:47:54 3705
原创 使用koa2写接口的一般步骤
1、前言这记录的是我使用koa2写后端接口的一些步骤。2、文件目录拆分srcapp:主体部分constants:放一些常量controller:控制器,写一些逻辑操作,比如,获取我们输入的信息,再调用service中操作数据库的方法middleware:中间件,比如验证授权、验证输入的账号密码是否正确/存在、验证token是否已过期等router:路由层,在这个文件夹中写路由service:service层,就是操作数据库的一些方法utils:放一些可以用到的方法,比如读取文件
2022-03-02 22:59:17 1232 1
原创 被遗忘的setTimeout第三个参数
被遗忘的setTimeout第三个参数平时我们使用setTimeout设置定时器,都只使用过前两个参数setTimeout(func, timeout)// func 执行函数// timeout 设置的定时时间举个例子:在for循环中使用setTimeoutfor (var i = 0; i < 3; i++) { setTimeout(() => { console.log(i) }, 1000)}● 这是一道很经典的面试题,可以随口说出打印三个3,因为
2022-02-26 14:25:20 297
原创 不能将类型Timeout分配给类型number/不能将类型“{}”分配给类型“IntrinsicAttributes & Partial<{ title: string; }> & Omit<Read
不能将类型“{}”分配给类型“IntrinsicAttributes & Partial<{ title: string; }> & Omit<Readonly<{ title?: unknown; xLabels?: unknown; values?: unknown; } & { title: string; xLabels: string[]; values: any[]; } & {}> & VNodeProps & AllowedComponentProps & ComponentCustomPr
2021-12-31 16:32:41 6177 1
原创 使用el-row、el-col制作表格及表格下方的展开/收起按钮
使用el-row、el-col制作表格及表格下方的展开/收起按钮效果图如下动态图收起状态展开状态无数据状态功能:● 默认展示三行数据,超出三行的数据被折叠,点击展开按钮,即可展开● 如果没有数据,展示内容为:暂无数据,且展开按钮也不显示● 如果数据不到三行或者只有三行,那么展开按钮不显示思路:使用el-row、el-col将表格的雏形可以先绘制出来el-col中的span将一行分为24份具体样式看下面的css代码默认展示三行数据,超出三行的数据被折叠
2021-12-14 23:40:31 4053
原创 粒子动态背景--在Vue3中使用VueParticles
前言在公司某项目登录界面见到粒子动画背景,也想将这个动画效果用在自己的项目上,起初以为直接安装vue-particles就可以了,结果自己的项目是Vue3的,不兼容。根据网上调研,在Vue3中可以使用particles.vue3实现这个粒子动画particles.vue3官网https://particles.js.org/Demos就是一个演示,在里面可以自己更改一些配置Presets就是预设的动画,点进去可以看到效果API Docs文档CodePen代
2021-12-08 14:24:21 10367 8
原创 CSS的BEM规范
BEM规范学习在实际项目中,经常可以看到以下类似这样的css样式,这种就是CSS命名规范——BEM思想BEM 是块(block)、元素(element)、修饰符(modifier)的简写主要缺点就是命名很长__和--的区别__表示的就是下级元素--表示的是不同的形态就是另一个类名,另一种样式,就像overview__row中有公共的样式,而overview__row--right中具有非公共的样式,是特有的样式&符号表示嵌套的上一级之所以是两个连接符和
2021-11-29 11:36:57 3246
原创 可以直接拿走使用的TypeScript二次封装的axios库
可以直接拿走使用的TypeScript二次封装的axios库为什么要封装axios降低耦合度,方便后期维护如果不进行封装,就会造成耦合度太高,一旦axios库不再维护,需要换库就很麻烦,需要一个页面一个页面的去找到并更改,这就会造成不必要的麻烦而封装之后,只需要修改一个地方即可实现功能实现三类拦截器:不同实例的所有请求、同一个实例的所有请求、同一个实例的部分请求根据需求可创建多个实例对象拦截token可选是否有loading动画loading动画使用了element-plu
2021-11-27 22:59:45 585
原创 使用vitepress构建组件库文档
使用vitepress构建组件库文档前期调研Vitepress官方文档:https://vitepress.vuejs.org/Vitepress是在Vite之上构建的Vue驱动的静态站点生成器。Vitepress 被称为“ Vuepress的小弟弟”,它比同类产品具有一些优势。建立在Vite而非Webpack上,因此启动时间,热重装等更快使用Vue3来减少JS的有效负载轻量级Vitepress 能够实现这些目标的一个原因是,它比Vuepress 更具体,而 Vue
2021-11-18 16:18:45 3646
原创 DataV画飞线图初体验以及在Vue2中使用CompositionAPI
DataV画飞线图初体验以及在Vue2中使用CompositionAPIDataV画飞线图初体验安装DataVnpm install @jiaminghi/data-vieworyarn add @jiaminghi/data-view在main.js中写入import dataV from '@jiaminghi/data-view'Vue.use(dataV)创建FlyLineMap.vue文件开启了dev模式,可以很快的确定飞线起点位置:dev="tr
2021-11-15 17:14:08 5685 21
原创 Vue3setup函数中使用Vuex中使用mapState和mapGetters的hooks
Vue3setup函数中使用Vuex中使用mapState和mapGetters的hooks// useMapper.js 核心import { computed } from 'vue';import { useStore } from 'vuex'// mapper传入的, mapFn是使用的map方法export function useMapper(mapper, mapFn) { // 拿到store对象 const store = useStore() // 获取到对应
2021-10-18 09:31:17 3927 1
原创 Vue2与Vue3的一些区别
1.OptionsAPI更换成CompositionAPIOptionsAPI当组件代码很多时,如果增加需求,要在 data、methods、computed 以及 mounted 中反复的跳转CompositionAPI将零散分布的逻辑组合在一起来维护,并且还可以将单独的功能逻辑拆分成单独的文件1.1.setup函数setup 是 Vue3.x 新增的一个选项, 他是组件内使用 Composition API的入口setup 执行时机是在 beforeCreate 之前执行setup中不
2021-10-12 09:15:38 274
原创 解决element-plus中,表单验证,prop的值与v-model的值和rules中的值一样,还是报错的问题(表单验证明明有值,却提示错误)
解决element-plus中,表单验证,prop的值与v-model的值和rules中的值一样,还是报错的问题(表单验证明明有值,却提示错误)报错如下源代码如下解决办法:将v-model改为:model成功解决
2021-09-16 17:19:41 2394 4
原创 从输入URL到页面加载的全过程(只包含DNS解析过程、页面渲染过程)
从输入URL到页面加载的全过程输入URL,并按下回车浏览器检查浏览器缓存、系统缓存、路由器缓存,如果缓存中有,则直接显示页面,如果没有进行下一步根据URL通过DNS进行域名解析,获取IP地址DNS解析过程:是一个迭代查询和递归查询的过程首先会在浏览器的缓存中查找对应的IP地址,如果查找到直接返回,若找不到继续下一步将请求发送给本地DNS服务器,在本地域名服务器缓存中查询,如果查找到,就直接将查找结果返回,若找不到继续下一步本地DNS服务器向根域名服务器发送请求,根域名服务器会返回一个所查
2021-09-07 10:09:12 409
原创 JS分割URL获取参数
JS分割URL获取参数思路创建一个空对象存储按"?"分割为数组,并取下标为1的值再按"&"分割为数组将数组遍历,一个个按"="分割下面是代码 。function urlToObj(str) { let obj = {} let arr = str.split('?')[1].split('&') for (let i = 0; i < arr.length; i++) { let res = arr[i].split('=') obj[re
2021-09-01 11:06:09 316
原创 for-in/of/Object.keys之间的关系
for-in/of在in的时候,是打印所有的key,但是在of的时候,是打印所有(key为数字的情况)的value并且arr[1] 和arr[‘1’] 一样的,在下标(或者 key) 中,不区分Number和String,数组就是对象for-in循环:只能获得对象的键名key,不能获得键值,且会遍历对象的整个原型链,主要用于遍历对象,格式:for(keys in zhangsan){}for-of循环:允许遍历获得键值value,只遍历当前对象不会遍历原型链,作为遍历所有数据结构的统
2021-08-31 17:33:14 252
原创 常见Vue面试题
常见Vue面试题1.对Vue的理解vue是一套用于构建用户界面的渐进式框架,相当于view层, 可以双向数据绑定, 相对其他框架,他更轻量, 性能上更高效, 更容易上手, 学习成本低,可以和各种支持的第三方库结合使用,完全能够为复杂的单页面富应用(SPA)提供驱动2.与React的区别React采用特殊的JSX语法,Vue在组件开发中使用.vue特殊文件格式;中心思想相同:都是使用组件,组件实例之间可以嵌套;都不内置AJAX,Route等功能到核心包,而是以插件的方式加载;在组件开发中都支持mixi
2021-08-21 23:02:14 263
原创 axios学习笔记
axios学习笔记1.axios是什么Axios 是一个基于 promise 的 网络请求库,可以用在浏览器和 node.js 中,是前端最流行的 ajax 请求库2.axios为什么既能在浏览器环境运行又能在服务器(node)环境运行?在浏览器中发送XMLHttpRequests请求在node.js中发送http请求3.axios功能特点在浏览器中发送XMLHttpRequests请求在node.js中发送http请求支持Promise API拦截请求和响应转换请求和响应数据
2021-08-21 23:00:32 770
原创 VueRouter学习笔记
VueRouter学习笔记1.后端渲染html+css+javajava代码从数据库中读取数据,并且将它动态的放在页面中,这已经是在服务器渲染好的网页2.后端路由服务器处理URL和页面之间的映射关系3.前端渲染浏览器中显示的网页中的大部分内容,是由前端写的js代码在浏览器中执行,最终渲染的网页4.前端路由改变URL,但页面不进行整体刷新直接赋值location.hash改变href,页面不会刷新HTML5的history模式(5种方法),页面也不会刷新pushStat
2021-08-21 22:58:06 102
原创 经典必考JavaScript面试题
经典必考JavaScript面试题1.let和const使用let关键字(和const)声明的变量也会存在变量提升,但与var不同,初始化没有被提升。在变量未初始化或赋值之前,不允许访问, 这被称为“暂时性死区”。 当我们在声明变量之前尝试访问变量时,JavaScript会抛出一个ReferenceError。const . let和var的区别?**var:**只有全局作用域和函数作用域概念;变量可以多次声明,存在变量提升(就是函数任意地方声明变量都可以)**const:**cons
2021-08-16 09:58:51 139
原创 经典CSS面试题
经典CSS面试题1.link 和 @import 都能导入一个样式文件,它们有什么区别嘛?link 是 HTML 标签,除了能导入 CSS 外,还能导入别的资源,比如图片、脚本和字体等;而 @import 是 CSS 的语法,只能用来导入 CSS;link 导入的样式会在页面加载时同时加载,@import 导入的样式在页面加载完成后再加载;link 没有兼容性问题,@import 不兼容 ie5 以下;link 可以通过 JS 操作 DOM 动态引入样式表改变样式,而@import
2021-08-16 09:55:45 93
原创 data为什么是函数及父子组件通信及访问
9.组件中的数据存放数据存放在data中,它必须是个函数,且返回一个对象为什么data必须是个函数不是函数的话,每个组件的data都是内存的同一个地址,一个数据改变,其他数据也会改变,当data是一个函数的时候,每一个实例的data属性都是独立的,不会相互影响(数据独立)10.父子组件通信(传数据)10.1父传子:props在子组件中使用props接收,使用v-bind绑定父组件传递的数据props中可以使用数组或对象,一般对象使用得比较多使用对象,可以对父组件传递的数
2021-08-08 21:40:53 93
原创 v-module双向数据绑定实现原理及修饰符的使用
02学习笔记-v-module双向数据绑定实现原理v-module双向数据绑定实现原理v-module其实是一个语法糖它主要做了两件事在input中绑定value:value="message"message是自定义的input本身有个事件叫input,用于监听value的值,在input中监听这个事件,并给它赋值给message<input type="text" v-model="message">等同于下面这句<input type="text" :
2021-08-06 15:38:30 2169 2
原创 vue的一些学习笔记,为什么不建议使用index(下标)作为key
学习笔记01:VUE1.methods方法与computed计算属性对比2.ES6对象字面量增强写法3.v-on3.1传参问题3.2常用修饰符的使用4.v-if与v-show条件为false时5.v-for中遍历对象的几种情况6.数组方法1.methods方法与computed计算属性对比computed计算属性会进行缓存,多次调用只会执行一次,性能得到优化2.ES6对象字面量增强写法理解:就是边声明边赋值//ES5的写法const obj = { name: name, age
2021-08-06 12:15:42 626
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人