
前端技能
文章平均质量分 87
以实战为线索,逐步深入前端开发各个环节,掌握前端常用性能体验优化思路,打造完整的大前端体系,提升工程化和思维能力。 具体内容包括: 1. 最新资讯 2. uni-app 3. 前端框架Vue.js 4.小程序 5. 缓存技术
java、iOS、Vue
华为云云享专家认证|阿里云开发社区博客专家,定期分享Java、iOS资讯(包括基础知识储备)、小程序开发与运营、阅读与写作。只为你呈现有价值的信息,专注于移动端技术研究领域。
展开
-
小程序协同工作和发布: 小程序管理员和运营者拥有整个小程序的发布、回退、下架等敏感操作
需要留意,项目管理者控制整个小程序的发布、回退、下架等敏感操作,不应把敏感操作的权限分配给不相关人员。一个小程序从开发完到上线一般要经过 预览-> 上传代码 -> 提交审核 -> 发布等步骤。原创 2025-03-28 10:27:52 · 185 阅读 · 0 评论 -
web开发jsp之间页面传递参数: 基于表单(form)传递参数+ServletContext(application对象)| 代码触发点击事件
【代码】web开发jsp之间页面传递参数: 基于使用ServletContext(application对象)原创 2025-03-24 11:55:27 · 1126 阅读 · 0 评论 -
axios配置全局接口超时时间
在 Vue 3 中使用 Axios 时,可以通过 响应拦截器 和 请求配置来控制接口的超时时间。如果某些接口需要不同的超时时间,可以在请求配置中单独设置 timeout。原创 2025-03-14 15:53:43 · 220 阅读 · 0 评论 -
在Vue项目中异步使用Fingerprint2库获取用户设备指纹,然后将其用于创建session,以提高Web应用的安全性和个性化体验。
Fingerprint2.js 获取浏览器指纹时,Fingerprint2.js 需要收集浏览器的多种信息(如用户代理、屏幕分辨率、插件列表等),这些操作是异步的。在 Vue 3 的入口文件(如 main.js 或 main.ts)中,可以在应用挂载之前获取浏览器指纹,并将其存储到全局状态(如 Vuex 或 Pinia)或全局变量中。在 Vue 3 组件中,您可以使用 async/await 或 Promise.then 来处理浏览器指纹的获取。安装 Fingerprint2。拦截请求,设置指纹到请求头。原创 2025-03-11 14:55:49 · 261 阅读 · 0 评论 -
Vue 3.2.3 中结合 Element Plus 的 el-input 组件实现账户和验证码绑定功能:失去焦点时判断账户与上次输入不同时重新获取图形验证码 (防抖请求)
在账户与上次输入不同时重新获取图形验证码的功能原创 2025-03-08 17:31:53 · 265 阅读 · 0 评论 -
在 Vue 3 中,封装 `<el-select> `组件,实现字典(枚举)选择框,自定义事件监听、支持动态设置option数据源、 placeholder和style
清空选择框时,选择框传递null ,更有利于Java服务端的枚举类型映射,符号接口签名的计算。需求: 简化选择框代码、统一处理接口的字段传值问题。如果传递“”,则容易导致前后端签名计算不一致。原创 2025-03-03 09:40:56 · 644 阅读 · 0 评论 -
在 Element Plus 的 <el-select> 组件中,如果需要将 <el-option> 的默认值设置为 null。 用于枚举传值
如果请求参数对于枚举值时,Java端希望默认值为null,因为如果传空串“”,则Java枚举也是影射为null对象。如果需要在下拉选项中明确显示一个表示“空值”的选项(如“请选择”),可以手动添加一个值为。背景:接口签名规则要求空串参与,空对象不参与签名计算。值时显示特定的文本(如“未选择”),可以使用。绑定到一个变量,并将该变量的初始值设置为。通过以上方法,可以轻松实现。,并灵活控制其显示行为。原创 2025-03-01 17:00:56 · 274 阅读 · 0 评论 -
vue中使用axios 进行请求和响应拦截:数据正在处理,请勿重复提交 | 请求时携带 token、签名 | 跳转到登录页面、执行完成回调then 或失败回调 catch
I axios 进行请求和响应拦截发送请求请求拦截器中,将 token 添加到请求头中。设置响应拦截器在响应拦截器中,检查响应状态码或自定义逻辑,决定是否跳转到登录页面。II 案例创建axios实例request拦截器get请求映射params参数数据正在处理,请勿重复提交请求时携带 token、签名响应拦截器案例III 知识扩展Promise 基础 是一个表示异步操作最终完成或失败的对象。它有三种状态:原创 2025-02-26 16:58:53 · 53 阅读 · 0 评论 -
Vue3工具方法:部分更新对象,而非完全替换【支持嵌套对象的属性赋值,使用递归实现】(只复制源对象中与目标对象同名属性的值 | 将源对象的属性值复制到目标对象的同名属性中)
应用场景: 表单的修改提交时,只复制详情接口响应对象中与编辑请求对象同名属性的值,避免上传冗余的字段,进而影响接口签名的计算。原创 2025-02-26 11:46:59 · 62 阅读 · 0 评论 -
vue深拷贝:1、使用JSON.parse()和JSON.stringify();2、使用Lodash库;3、使用深拷贝函数(采用递归的方式)
return obj;[] : {};原创 2025-02-26 09:09:03 · 198 阅读 · 0 评论 -
基于Java | javascript实现【经纬度和度分秒转换】
全球经纬度的取值范围为:纬度-90 ~ 90,经度-180 ~ 180。例如: 经度 = 116°20.12’,纬度 = 39°12.34’经度 = 116 + 20.12 / 60 = 116.33533°。度分转换: 将度分单位数据转换为度单位数据,公式:度=度+分/60。纬度 = 39 + 12.34 / 60 = 39.20567°。应用场景: 海图点线图形绘制。原创 2024-05-30 09:06:03 · 1199 阅读 · 0 评论 -
Vue | 透传 Attributes(非 prop 的 attribute )
v-onclassstyleid一个非 prop 的 attribute 是指: Attribute传向一个组件,但是该组件并没有相应 props 或 emits 定义的 attribute。常见的示例包括 class、style 和 id attribute。$attrs。原创 2025-02-07 09:38:10 · 104 阅读 · 0 评论 -
自定义v-model修饰符
v-model有一些,例如.trim.number和.lazy。在某些场景下,你可能想要一个自定义组件的v-model支持自定义的修饰符。例如创建一个自定义的修饰符capitalize,它会自动将v-model。原创 2025-02-07 08:54:41 · 84 阅读 · 0 评论 -
vue组件间的数据传递:自定义输入组件(v-model/defineModel)
/实现方式:通过自定义事件创建支持 v-model 的自定义输入组件子组件通过监听input事件触发自定义的事件父组件使用自定义输入组件时,通过监听自定义事件进行 v-model 的数据绑定父组件使用自定义输入组件时,通过监听自定义事件进行 v-model 的数据绑定原理:添加到组件 v-model 的修饰符将通过 modelModifiers prop 提供给组件,当组件的 created 生命周期钩子触发时,modelModifiers prop 会包含 capitalize。原创 2025-02-07 08:22:55 · 320 阅读 · 0 评论 -
Vue通过触发与监听事件进行数据传递: 子组件调用 $emit 方法来将数据传递给父组件。
的监听,父组件会接收这一事件,从而更新 postFontSize 的值。之中,并且不需要导入,它返回一个等同于。在组件的模板表达式中,可以直接使用。原创 2025-02-06 17:05:10 · 137 阅读 · 0 评论 -
VUE小技能:通过 Prop 向子组件传递数据
在大多数场景下,子组件应该抛出一个事件来通知父组件做出改变。原创 2025-02-06 14:38:16 · 110 阅读 · 0 评论 -
Vue基础: 模板语法
Vue.js 使用了基于 HTML 的模板语法,允许开发者声明式地将 DOM 绑定至底层组件实例的数据。在底层的实现上,Vue 将模板编译成虚拟 DOM 渲染函数。结合响应性系统,Vue 能够智能地计算出最少需要重新渲染多少组件,并把 DOM 操作次数减到最少。原创 2025-02-06 11:48:15 · 63 阅读 · 0 评论 -
Vue注意事项: 配置 Source Maps(源代码映射)方便开发者调试
v-on 事件监听器在 DOM 模板中会被自动转换为全小写 (因为 HTML 是大小写不敏感的),所以 @myEvent 将会变成 @myevent——导致 myEvent 不可能被监听到。attribute,除非所迭代的 DOM 内容非常简单 (例如:不包含组件或有状态的 DOM 元素),或者你想有意采用默认行为来提高性能。而 Vue3 中,v-if 总是优先于 v-for 生效,这意味着 v-if 将没有权限访问 v-for 里的变量。绑定的值期望是一个基础类型的值,例如字符串或 number 类型。原创 2025-02-06 10:29:28 · 79 阅读 · 0 评论 -
Vue基础:侦听器(侦听属性)【watch、watchEffect】
计算属性允许我们声明性地计算衍生值。然而在有些情况下,我们需要在状态变化时执行一些“副作用”:例如更改 DOM,或是根据异步操作的结果去修改另一处的状态。在组合式 API 中,可以使用 watch。原创 2025-02-06 08:20:47 · 122 阅读 · 0 评论 -
Vue基础:计算属性(描述依赖响应式状态的复杂逻辑)
时,setter 会被调用,vm.firstName 和 vm.lastName 也会相应地被更新。计算属性将基于它们的响应依赖关系缓存,计算属性只会在相关响应式依赖发生改变时重新求值。函数:它接受 getter 函数并为 getter 返回的值返回一个不可变的响应式。会在某个响应式 property 或 ref 作为依赖被追踪时调用。onTrack 和 onTrigger 仅在开发模式下生效。推荐使用计算属性来描述依赖响应式状态的复杂逻辑。会在侦听回调被某个依赖的修改触发时调用。原创 2025-02-06 07:58:28 · 75 阅读 · 0 评论 -
Vue“组合式函数”(Composables)规约:通过抽取组合式函数改善代码结构
组合式函数约定用驼峰命名法命名,并以“use”作为开头。原创 2025-02-05 17:13:34 · 30 阅读 · 0 评论 -
Vue“组合式函数”(Composables) :利用 Vue 的组合式 API 来封装和复用有状态逻辑的函数。(核心逻辑移到外部函数并返回状态)
有状态逻辑负责管理会随时间而变化的状态。原创 2025-02-05 16:40:54 · 43 阅读 · 0 评论 -
Vue自定义指令:指令钩子
只有当所需功能只能通过直接的 DOM 操作来实现时,才应该使用自定义指令。原创 2025-02-05 16:07:30 · 65 阅读 · 0 评论 -
Vue的状态管理:用响应式 API 做简单状态管理、状态管理库(Pinia )
简单直接的解决方案是抽取出组件间的共享状态,放在一个全局单例中来管理。这样我们的组件树就变成了一个大的“视图”,而任何位置上的组件都可以访问其中的状态或触发动作。每一个 Vue 组件实例都在“管理”它自己的响应式状态了。原创 2025-02-05 14:57:10 · 156 阅读 · 0 评论 -
Vue Router 客户端路由解决方案:axios 响应拦截(跳转到登录页面)
客户端路由的作用是在单页应用 (SPA) 中将浏览器的 URL 和用户看到的内容绑定起来。使用组件 RouterLink 来创建链接,使得 Vue Router 能够在不重新加载页面的情况下改变 URL,处理 URL 的生成、编码和其他功能。Vue Router 基于 Vue 的组件系统构建,你可以通过配置路由来告诉 Vue Router 为每个 URL 路径显示哪些组件。在这类单页应用中,“路由”是在客户端执行的。Vue Router 是 Vue 官方的客户端路由解决方案。或是 hashchange。原创 2025-02-05 13:47:42 · 1063 阅读 · 0 评论 -
VUE响应性系统和信号 (signal) 的联系
Vue 的响应式系统基本是基于运行时的。这里单元格 A2 中的值是通过公式 = A0 + A1 来定义的 (你可以在 A2 上点击来查看或编辑该公式),因此最终得到的值为 3,正如所料。不需要考虑调用顺序,只需要知道考虑结果,类似于蝴蝶效应,产生一个事件,会影响很多东西,这些事件像流一样的传播出去,然后影响结果,借用面向对象的一句话,万物皆是流。响应性是一种允许我们以声明式的方式去适应变化的编程范例,Vue 会自动跟踪 JavaScript 状态变化并在改变发生时响应式地更新 DOM。原创 2025-02-05 11:18:31 · 102 阅读 · 0 评论 -
VUE的响应性调试:组件调试钩子、计算属性调试、侦听器调试【仅会在开发模式下工作】
VUE的响应性调试的使用场景:确切地知道Vue 的响应性系统正在跟踪什么,或者是什么导致了组件重新渲染。组件调试钩子仅会在开发模式下工作钩子onRenderTracked 生命周期钩子来调试查看哪些依赖正在被使用onRenderTriggered 来确定哪个依赖正在触发更新。这些钩子都会收到一个调试事件,其中包含了触发相关事件的依赖的信息。推荐在回调中放置一个 debugger 语句,使你可以在开发者工具中交互式地查看依赖:原创 2025-02-05 11:01:17 · 89 阅读 · 0 评论 -
VUE响应性原理:作用(依赖的订阅者)、作用的依赖、JavaScript 劫持 property 访问、响应式副作用(创建了一个能自动跟踪其依赖的副作用,它会在任意依赖被改动时重新运行。)
它被包裹在一个副作用中,允许 Vue 在运行时跟踪被“触达”的 property。使用解构的两个 property 的响应性都会丢失,对于这种情况,我们需要将我们的响应式对象转换为一组 ref。我们可以自己直接调用这个函数,允许我们在不需要使用组件的情况下将一个对象包裹在一个响应式代理中。响应性是一种允许我们以声明式的方式去适应变化的编程范例,Vue 会自动跟踪 JavaScript 状态变化并在改变发生时响应式地更新 DOM。Proxy 是一个对象,它包装了另一个对象,并允许你拦截对该对象的任何交互。原创 2025-02-05 09:51:53 · 56 阅读 · 0 评论 -
web项目配置指引:启动一个本地的 HTTP 服务器,通过 http:// 协议来提供 index.html。【基于NGINX、node.js、Tomcat、http-server启动本地服务】
协议工作,也即是浏览器在打开网页时使用的协议。为了使 ES 模块在我们的本地机器上工作,我们需要使用本地的。可以基于正确的 MIME 类型服务静态文件的 HTTP 服务器。协议工作,也即是当你打开一个本地文件时浏览器使用的协议。然后通过命令行在 HTML 文件所在文件夹下运行。用于本地测试和开发,部署打包之后的dist目录。协议来提供 index.html。由于安全原因,ES 模块只能通过。原创 2025-01-24 08:42:02 · 59 阅读 · 0 评论 -
javascript格式化对象数组:ES6的模板字符串、map
使用数组的map方法可以遍历对象数组并返回一个新的格式化后的数组。表格展示,例如船舶轨迹的速度格式化、经纬度格式化、时间格式化。通过遍历对象数组并对每个对象进行格式化操作来实现。使用对象的属性和方法来访问和修改对象的值。原创 2025-01-22 16:26:36 · 346 阅读 · 0 评论 -
字符编码通过字节数组向16进制的互转【终端设备通讯案例篇】:微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。(接收蓝牙设备的信息,发送北斗终端消息)
【代码】字符编码通过字节数组向16进制的互转【案例篇】:微信小程序 JavaScript字符串转gb2312 字符编码,以16进制字符串传输。原创 2025-01-17 08:22:09 · 256 阅读 · 0 评论 -
字符编码通过字节数组向16进制的互转【原理篇】:(UTF8|GBK|unicode 字符编码<=>字节序列(数组)<=>16进制字符串):以Java、JS语言为例子
(例:测试(B2E2CAD4)(0x42 0x32 0x45 0x32 0x43 0x41 0x44 0x34)java中编码的转换API。信息内容(gb2312)原创 2025-01-11 08:32:56 · 120 阅读 · 0 评论 -
服务端错误的处理和web安全检测
如果你需要更复杂的PHP处理,可能需要考虑更完整的解决方案,如Apache或Nginx。编辑 micro_httpd 的配置文件(通常是 micro_httpd.conf),设置正确的文档根目录(DocumentRoot)到你的PHP文件夹。在没有登录的情况下,直接访问路由到登录之后的路径,前端需要判断是否存在会话,如果会话失效,需要直接返回首页。home /var/www 指定了文档根目录为 /var/www,你需要将它改成你的PHP文件目录的路径。解压并安装到你的Windows系统。原创 2025-01-02 11:05:09 · 537 阅读 · 0 评论 -
前端页面上传文件:解决 ERR_UPLOAD_FILE_CHANGED
在上传前检查文件内容是否改变:使用文件对象的arrayBuffer方法检查文件内容变化,如果发现文件内容变更,提示用户删除旧文件并上传最新版本。beforeUpload 将 file 转成base64(bese64与本地的文件状态已经无关了),再转成file。element上传文件,文件添加至上传列表后变更文件内容,net::ERR_UPLOAD_FILE_CHANGED。文件添加至上传列表后变更文件内容,由于浏览器没有新文件的访问权限,需要重新选择文件。文件添加至上传列表后变更文件内容。原创 2024-12-31 16:28:30 · 386 阅读 · 0 评论 -
前端安全措施:反调试之屏蔽粘贴/复制/剪切/选中
Clipboard.writeText()方法用于将文本内容写入剪贴板。内容还可以选中,右键也有粘贴、复制、剪贴功能,只是没有效果而已。Clipboard.write()方法用于将任意数据写入剪贴板。Clipboard是异步,返回 Promise 对象。/* WebKit内核 *//* IE10及以后 *//* CSS3属性 *//* 早期浏览器 */原创 2024-12-31 14:31:16 · 113 阅读 · 0 评论 -
前端安全措施:接口签名、RSA加密、反调试、反反调试、CAPTCHA验证
禁止用户修改或者调试我们HTML页面的代码,这个时候需要阻止用户打开调试窗口,下面介绍一些能够阻止用户在浏览器中打开调试窗口的方法,这些方法只能一定程度的提高打开调试的门槛。/* WebKit内核 *//* IE10及以后 *//* CSS3属性 *//* 早期浏览器 */原创 2024-12-31 09:10:53 · 735 阅读 · 0 评论 -
Vue开发环境搭建上篇:安装NVM和NPM(cpnm、pnpm)
pnpm 全称 performant npm,意思为 高性能的 npm。pnpm 由 npm/yarn 衍生而来,解决了 npm/yarn 内部潜在的 bug,极大的优化了性能,扩展了使用场景。npm 全称 Node Package Manager,是 node.js 的模块依赖管理工具。npm 的背后,是基于 couchdb 的一个数据库,详细记录了每个包的信息,包括作者、版本、依赖、授权信息等。它的一个很重要的作用就是:将开发者从繁琐的包管理工作(版本、依赖等)中解放出来,更加专注于功能的开发。原创 2024-12-25 17:01:03 · 681 阅读 · 0 评论 -
设计规规范:【App 配色】
色彩的间接心理效应是由色彩的直观感受反映到大脑所产生的联想效果,在设计中常常利用色彩间接心理效应来传达信息。设计规范,保持设计一致性,提高设计效率。宏观上对内统一,管理与合作变得容易。按类型管理颜色、文本样式、图标、组件(symbol)。Sketch 软件无 Windows 版本。原创 2024-12-16 11:35:10 · 161 阅读 · 0 评论 -
Vue + Websocket播放PCM(base64转ArrayBuffer、 字符串转ArrayBuffer)
解决办法:将源码拷贝出来,然后添加一个sum计数器,每次audioBuffer.createBuffer的时候+1,在原本的onended事件中-1,然后判断sum是否为0,为0触发self.option.onended事件(暴露出来的onended事件)。此开源库的问题:它内部没有考虑分片播放的处理逻辑,onended事件在分片播放中会触发多次(按照设计来说只会在结束的时候触发一次)。10个数据包播放一次,基于原生api AudioContext 播放操作。java ArrayBuffer转字符串。原创 2024-11-23 09:50:12 · 590 阅读 · 0 评论 -
微信授权登录:接口和数据库设计
请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户账号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众账号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众账号),unionid是相同的。原创 2024-11-21 14:58:41 · 233 阅读 · 0 评论