- 博客(45)
- 资源 (1)
- 收藏
- 关注
原创 Tiptap 实战:如何让中文顿号“、”也能触发组件菜单(输入法字符监听与 ProseMirror 插件机制)
本文分享在Tiptap编辑器中实现中文顿号触发组件菜单时遇到的技术问题与创新解决方案。主要难点包括输入法字符捕获、重复触发、字符残留和插件冲突等。通过采用handleTextInput捕获字符、直接插入节点而非替换、引入防重复机制和调整插件优先级等方法,最终实现简洁稳健的方案。文章强调理解底层机制的重要性,并提出未来可扩展至更多触发符号和智能化推荐功能。
2025-10-29 10:29:32
731
原创 RSS与Folo:信息茧房时代的窗口
在AI技术快速发展的信息爆炸时代,Folo RSS阅读器为工程师和产品经理提供了高效的信息管理方案。这款开源工具支持arXiv、OpenAI等专业AI资讯源订阅,具备简洁UI、AI摘要、标签分类等功能,帮助用户摆脱算法干扰,打造个性化的AI知识中枢。通过集中管理技术博客、开源工具更新等信息,Folo让用户能快速获取有价值内容,实现高效的知识沉淀,是应对信息过载的理想选择。
2025-08-07 11:10:49
879
原创 [Vue3+TipTap] 评论系统:从入门到秃头,这篇全搞定(干货警告!)
本文详细介绍了基于Vue3和TipTap的评论系统开发实践。文章采用"四层别墅"架构(表现层、业务逻辑层、数据层、协同层)构建系统,通过多种组件通信方式实现数据流转。重点讲解了三种评论类型(内联、块级、表格行)的实现方案,以及智能定位菜单、状态管理Map结构和性能优化技巧(防抖节流、虚拟滚动、懒加载)。最后分享了错误处理机制,为开发者提供了一套完整的评论系统解决方案,帮助提升开发效率并减少常见问题。
2025-07-19 17:39:24
1342
原创 2025年了,还没用过 Cursor?来看我一周的使用体验
一周的免费体验下来,Cursor 给我的初步印象是积极的。它的核心功能确实能提高日常开发效率,尤其是代码补全的智能程度令人印象深刻。与VS Code和WebStorm相比,Cursor作为新兴工具展现出了AI辅助编程的巨大潜力。虽然在成熟度和稳定性上还有差距,但其创新的交互方式和深度理解代码的能力确实让我印象深刻。关于是否升级到 Pro 版本,我打算再使用一段时间,看看免费版的限制是否真的会影响我的工作效率。如果继续感到它的价值,那么升级应该是值得的投资。
2025-03-27 10:37:09
5169
原创 vue+leaflet集成echarts实现动态轨迹图
vue+leaflet集成echarts实现动态轨迹图2. 引入插件3. 实现leaflet自定义动态样式marker
2022-11-28 09:56:48
2368
4
原创 vue+leaflet添加海量点图标
当项目中出现需要大量点图标需要渲染时,使用img图片的方式,页面会十分卡顿,这里使用vue+leaflet利用leaflet-canvas-marker渲染海量点
2022-07-28 17:18:15
3762
5
原创 vue3+element-plus按需引入,修改默认样式
在vue3项目中按需引入element-plus组件,直接引入会发现默认是英文,这里将会教你如何改为中文,实现自动导入,并修改默认样式。
2022-07-23 09:30:00
5483
原创 vue3+element-plus表格自适应高度
在这里不多赘述vue2和vue3自定义指令写法有何不同,直接抛代码,如若有该需求,可直接复制到项目中使用。又是熟悉的adaptive.js文件,具体用法可转至。之前有写到如何通过自定义指令的方式在。...
2022-07-23 02:30:00
3061
原创 vue3 Echarts自定义组件自适应
在vue项目中实现echarts图表的自适应,F12控制台拖动页面,无需刷新,echarts图表自动适应适配屏幕,封装一个组件,通过props传递不同的数据实现不同样式的图表。
2022-07-22 16:30:00
1768
转载 87个前端必备开发网站
前端必备开发网站一行代码搞定bug监控:https://www.fundebug.com/?tdsourcetag=s_pcqq_aiomsgweb开发人员必备工具包(实现快速敲代码):https://docs.emmet.io/让代码提交的时候先执行一次代码,如果有报错不让提交:www.npmjs.com/package/eslint-config-airbnb阿里巴巴图标库:http......
2019-12-24 11:38:05
3380
原创 微信小程序自定义导航栏(适配所有手机)
最近公司有一个微信小程序的项目,最终决定使用uni-app进行开发,但是遇到了一个问题自定义导航栏高度在不同手机上无法达到视觉上的统一导航栏元素无法对齐胶囊按钮现在存在各种尺寸的全面屏和刘海屏需要适应最终通过wx.getSystemInfoSync().statusBarHeight设置高度得出IOS胶囊按钮与状态栏的距离是4px,安卓大部分都是7px或者8px,也会有其他情况,得出一...
2019-10-09 09:32:09
1374
原创 Mysql数据库操作
增1.使用insert插入单行数据:语法:insert [into] <表名> [列名] values <列值>例:insert into Strdents (姓名,性别,出生日期) values ('王伟华','男','1983/6/15')注意:如果省略表名,将依次插入所有列2.使用insert,select语句将现有表中的 数据添加到已有的新表中语法:in...
2019-09-12 11:33:40
198
原创 node进程 线程
在nodejs中只支持单线程。但是在应用程序中,如果只使用单线程进行操作,从接受请求开始到返回响应为止的这一段时间内可能存在很长的一段等待时间。在这种场合下如果能使用多进程,则可以为每个请求分配一个进程,从而更好的使用服务器端的cpu资源。为了实现多进程处理,nodejs提供了child_process模块于cluster模块.其中child_process模块用于实现在node.js应用程序中开...
2019-09-12 10:35:51
410
原创 带你了解ajax和axios请求
Ajax是用来实现客户与服务器端的异步通信效果,实现页面的局部刷新主要通过XMLHttpRequests(标准浏览器),ActiveXObject(IE浏览器)对象实现异步通信效果分为四步 - var xhr = null; // 创建对象 - xhr.open("方式", "地址", "标志位"); // 初始化请求 - xhr.setRequestHeader("", "");...
2019-09-12 10:21:24
222
原创 Document 对象属性和方法的不兼容问题
.bind不兼容的问题bind()方法主要就是将函数绑定到某个对象,bind()会创建一个函数,函数体内的this对象的值会被绑定到传入bind()第一个参数的值Function.prototype.bind = function () { var fn = this, args = Array.prototype.slice.call(arguments), object = a...
2019-09-10 18:27:07
468
原创 闭包
闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。1、变量作用域要理解闭包,首先要理解javascript的特殊的变量作用域。变量的作用域无非就两种:全局变量和局部变量。javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。注意点:在函数内部声明变量的时候,一定要使用var命令...
2019-09-10 18:11:38
158
原创 Javascript继承
1、 简单原型链继承function Super(){ this.val = 1; this.arr = [1];}function Sub(){ // ...}Sub.prototype = new Super(); // 核心var sub1 = new Sub();var sub2 = new Sub();sub1.val = 2;sub1.arr.push(2...
2019-09-10 18:02:55
141
原创 ES6知识整理
1. 解构赋值```let obj = {off: bar} = {off: 2};console.log(bar) // 2```字符串解构 const [a,b,c,d,e] = 'hello'; 数值和布尔值解构 解构出来的是原型上的方法for in 是ES5的标准 遍历key for of 是ES6的标准 遍历value2. 字符串扩展新增字符串的方法incl...
2019-09-10 17:54:13
175
原创 跨域
****跨域****不同域之间相互请求资源,就算作跨域,产生跨域的主要原因是因为同源策略。同源策略要求源相同才能正常进行通信,也就是协议、域名、端口都完全一致。但是请求跨域了,我们的请求也同样发了出去,只是浏览器拦截了响应,同时也说明跨域并不能完全阻止CSRF,因为请求发出去了。如何跨域常用的跨域方法有JSONP , CORS, webSocket, postmessage等1....
2019-09-10 16:50:03
401
原创 前端面试题(Node)
Node**1. 为什么要用node? **特点:简单强大,轻量可扩展.简单体现在node使用的是javascript,json来进行编码,人人都会;强大体现在非阻塞IO,可以适应分块传输数据,较慢的网络环境,尤其擅长高并发访问;轻量体现在node本身既是代码,又是服务器,前后端使用统一语言;可扩展体现在可以轻松应对多实例,多服务器架构,同时有海量的第三方应用组件2. node的构架是什么...
2019-05-16 15:12:49
3636
1
原创 前端面试题(React)
React1,调用 setState 之后发生了什么?在代码中调用setState函数之后,React 会将传入的参数对象与组件当前的状态合并,然后触发所谓的调和过程(Reconciliation)。经过调和过程,React 会以相对高效的方式根据新的状态构建 React 元素树并且着手重新渲染整个UI界面。在 React 得到元素树之后,React 会自动计算出新的树与老树的节点差异,然...
2019-05-16 14:30:33
3220
原创 前端面试题(Vue)
Vue1,vue的生命周期?vue的生命周期主要分为几个简单,数据初始化,dom挂载,数据更新,组件卸载,在一个就是开启了组件缓存的时候,会有组件启用和组件停用阶段,每个阶段都去前后两个钩子除了缓存的那俩数据初始化阶段beforeCreate:在实例初始化之后,数据观测 (data observer) 和 event/watcher 事件配置之前被调用。created:实例已经创建完成之...
2019-05-16 14:14:35
437
原创 前端面试题(angular)
Angular1,ng-if 跟 ng-show/hide 的区别有哪些?第一点区别是,ng-if 在后面表达式为 true 的时候才创建这个 dom 节点,ng-show 是初始时就创建了,用 display:block 和 display:none 来控制显示和不显示。第二点区别是,ng-if 会(隐式地)产生新作用域,ng-switch 、 ng-include 等会动态创建一块界面的...
2019-05-16 10:56:44
7731
原创 前端面试题(AJAX)
AJAX1,Ajax 是什么? 如何创建一个Ajax?ajax的全称:Asynchronous Javascript And XML。异步传输+js+xml。所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验(1)创建XMLHttpRequest对象...
2019-05-16 10:27:00
2110
原创 前端面试题(JavaScript)
JavaScript1,介绍js的基本数据类型。Undefined、Null、Boolean、Number、String2,介绍js有哪些内置对象?Object 是 JavaScript 中所有对象的父对象数据封装类对象:Object、Array、Boolean、Number 和 String其他对象:Function、Arguments、Math、Date、RegExp、Error...
2019-05-14 15:35:35
312
原创 前端面试题(CSS篇)
CSS篇1、介绍一下标准CSS的盒模型?低版本IE的盒子模型有什么不同的?IE盒子模型、W3C盒子模型盒模型:内容(content)、填充(padding)、边界(margin)、边框(border)区别:IE 的content部分把border和padding计算了进去;在CSS3中引入了box-sizing属性,它可以允许改变默认的CSS盒模型对元素宽高的计算方式,共包括两个选项c...
2019-05-14 14:19:54
582
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅