avatar
Articles
59
Tags
41
Categories
8
首页
文章
生活
项目
关于
我做开发那些年
Search
首页
文章
生活
项目
关于

我做开发那些年

Vue进阶系列第3篇:什么是SPA(单页面应用)? 如何实现一个简单的SPA?
Created2025-12-08|Vue
大家好,我是jvxiao。 这是Vue从入门到精通系列文章的第3篇,今天我们来谈谈和Vue紧密相关的一个东西–SPA。此SPA非各位日常生活中的养生SPA, 而是单页面应用(Single Page Application)。 在现代前端开发中,单页面应用(SPA)已成为主流架构之一,Vue、React、Angular 等框架均以 SPA 为核心设计理念。它凭借流畅的交互体验、高效的资源利用,广泛应用于后台管理系统、移动端应用等场景。 本文将从基础概念出发,对比 SPA 与传统多页面应用(MPA)的核心差异,并通过极简代码实现 hash 模式 SPA,帮助大家快速掌握其工作原理。 一、什么是 SPA(单页面应用)SPA(Single Page Application)即单页面应用,是一种仅加载一个核心 HTML 文件的 Web 应用架构。其核心特征是:页面内容的更新不依赖浏览器的整页刷新,而是通过 JavaScript 动态操作 DOM 节点、异步请求数据,实现视图的局部更新。 可以通俗地理解为:SPA 就像一个 “固定外壳” 的房子,首次加载时会完整加载房屋的基础结构(核心 HT...
Vue中双向绑定是什么?它工作原理是什么?万字长文,一次讲透彻!
Created2025-12-06|ES6进阶
大家好,我是jvxiao。 这是Vue从入门到精通系列文章的第2篇,今天我们来讲一讲Vue中一个非常核心的概念–双向绑定 本文将从概念本质、底层原理出发,结合完整实现逻辑,带大家全面拆解Vue双向绑定的核心机制。 一、核心概念:从单向绑定到双向联动要理解双向绑定,首先要明确其与单向绑定的关联与区别——双向绑定是单向绑定的延伸与闭环,而MVVM架构则为这种闭环提供了理论支撑。 单向绑定的基础逻辑单向绑定指数据模型(Model)到视图(View)的单向同步:当开发者通过代码修改Model中的数据时,框架会自动更新对应的View展示,无需手动操作DOM。这种模式的核心价值是“数据驱动视图”,让开发者专注于数据逻辑而非DOM操作,但它存在一个明显局限:用户对View的交互(如表单输入、按钮点击)无法自动同步回Model,需要手动编写事件处理函数来完成数据更新。 2. 双向绑定的本质闭环双向绑定在单向绑定的基础上,补充了“View到Model的反向同步”: 数据→视图:Model数据变化时,View自动更新; 视图→数据:用户操作View(如输入框输入、下拉框选择)时,Model数据自动...
Vue进阶系列第1篇:说说对Vue的理解,Vue是什么,有什么作用
Created2025-12-06|ES6进阶
大家好,我是jvxiao。 在上一个JavaScript ES6进阶系列文章从简单的let, const一路讲到了日常开发较少使用的Decorator,很多文章也收到了很多各位读者喜欢和推荐,在这里感谢各位读者朋友的支持。 在过去一周中,没有更新新的文章,这是因为我在准备一个新的文章系列–Vue从入门到精通。这一系列文章大概在30篇左右,将涵盖Vue框架中众多核心知识,并会进行适当的源码解读,希望大家喜欢并持续关注。 今天是该系列的第1篇文章,我们来讲讲Vue是什么? 在前端开发日新月异的浪潮中,Vue.js(简称Vue)凭借其简洁的语法、灵活的架构和友好的学习曲线,成为无数开发者构建Web应用的首选框架。要真正掌握Vue,我们需要从Web开发的历史脉络出发,逐步剖析其本质、核心特性,并通过与传统开发及React的对比,明确其定位与优势。 一、Web开发的历史演进:框架为何应运而生?前端技术的发展始终围绕“提升开发效率”与“应对复杂场景”两大核心,Vue的出现是历史演进的必然结果,我们可将其分为三个关键阶段: 1. 静态Web时代(1990s-2000s初)早期Web以“信息展示...
JavaScript ES6中的装饰器(Decorator)是什么?有哪些应用场景?万字长文,谨慎阅读!
Created2025-12-06|ES6进阶
这是JavaScript进阶系列文章的第11篇文章, 今天我们来讲讲装饰器(Decorator),内容有点长,代码有些多,坐稳发车了。 在前端开发中,我们常面临这样的困境:如何在不修改原有代码的前提下,为类、方法或属性添加日志、权限校验、缓存等通用功能? 如果直接在业务逻辑中嵌入这些辅助代码,会导致核心逻辑与通用逻辑耦合,代码可读性和可维护性大幅下降。而 ES6 提案中Decorator(装饰器),正是为解决这一问题而生的优雅方案。 本文将从 Decorator 的核心本质出发,详解其语法特性、使用场景,并结合实战案例说明其在项目中的价值,帮助开发者真正掌握这一“非侵入式扩展”的利器。 Decorator 是什么?核心定义Decorator 是基于 “包装模式”(Wrapper Pattern) 的语法糖,其核心目标是:在不侵入原有代码结构的前提下,为类、类成员(方法/属性)动态扩展功能。 它的本质是一个特殊函数:接收被装饰的“目标对象”作为参数,通过修改或包装目标对象,返回增强后的新对象。简单来说,Decorator 就像给礼物包装——礼物本身(核心业务逻辑)不变,...
说说JavaScript中ES6 module(模块化)的诞生背景、核心语法及应用场景
Created2025-12-06|ES6进阶
这是JavaScript进阶系列文章的第10篇文章, 今天我们要讲的是 JavaScript ES6中一个非常核心的概念,它的出现可以说是统一了JavaScript中模块化规范的三国时代,那么它是什么呢–ES6 Module 诞生背景:终结混乱的模块化革命在ES6 Module出现之前,JavaScript长期缺乏官方模块化标准,前端开发深陷”全局变量污染-命名冲突-依赖混乱”的恶性循环。2010年前后崛起的三大方案各有局限: CommonJS:为Node.js设计的同步加载方案,无法适配浏览器异步环境,require('./module' + num)的动态加载特性也埋下了依赖分析的隐患 AMD:以RequireJS为代表的异步方案,虽解决了浏览器加载问题,但define函数嵌套层级深,语法冗余度高 UMD:兼容多环境的妥协方案,通过大量条件判断实现跨平台,导致代码体积膨胀且维护困难 2015年ES6正式引入Module规范,标志着JavaScript首次在语言层面确立模块化标准。其核心使命是:打通前后端模块化壁垒,提供兼顾语法简洁性、加载高效性与工程可扩...
一文说透ES6 Proxy--从本质到应用场景
Created2025-12-06|ES6进阶
今天是JavaScript进阶系列文章的第9篇文章了,世界就是一个巨大的草台班子,而每个班子里总是少不了诸如“黄牛”、“中间商”这样的角色,今天我们来讲讲ES6中JavaScript中的“中间商”–代理(Proxy)。 一、Proxy的本质定义:对象操作的“拦截器”Proxy是ES6引入的元编程工具,译为“代理”,其核心功能是在目标对象与外界操作之间架设拦截层,所有对目标对象的访问必须经过该层筛选与改写。这种机制打破了对象操作的默认行为,让开发者能以极低侵入性的方式实现逻辑增强。 与传统的Object.defineProperty相比,Proxy的核心优势体现在三方面: 拦截粒度更全面:可监听对象的13种基本操作(如get/set/delete/in等),而非单一属性的读写; 动态性更强:无需提前声明拦截属性,新增属性自动纳入监听范围; 支持更多对象类型:可代理数组、函数甚至类构造器。 所以,不难理解Vue3为什么使用Proxy来重写响应式系统,毕竟,是真的香啊。 二、 Proxy的核心写法:构造器与拦截陷阱1. 基础语法结构Proxy通过构造函...
JavaScript ES6中的生成器(Generator)是什么?有哪些应用场景?一文全说透
Created2025-12-06|ES6进阶
今天是JavaScript进阶系列文章的第8篇文章了,今天我们来讲讲ES6中的生成器(Generator)。 Generator 是 ES6 新加的一种特殊函数,简单说就是能暂停、能继续、能分批次给结果的函数。普通函数一旦调用就从头跑到尾,而它像带了暂停键,想停就停,想继续就继续。核心特点就三个: 怎么写?So easy! 函数名前加 function*(星号跟着 function 写最清楚) 用 yield 当“暂停标记”,碰到它就停,还能把后面的值抛出来 调用后不会立马执行,会返回一个“操作手柄”(生成器对象),按手柄上的 next() 按钮才会启动/继续 12345678910111213// 举个例子:分三次给数字function* numberGenerator() { yield 1; // 第一次暂停,返回1 yield 2; // 第二次暂停,返回2 return 3; // 结束了,返回3}// 拿个操作手柄const gen = numberGenerator();console.log(gen.next()); // &...
聊聊ES6里的Promise:简单理解和实际用法
Created2025-12-06|ES6进阶
在JavaScript里,经常会遇到“异步操作”——就是那些不会马上完成的事情,比如从服务器拿数据、读取文件、设置一个定时器等。 以前处理这些事,全靠“回调函数”,但写多了就容易乱。Promise就是ES6里出来的一个工具,专门帮我们把这些异步操作理清楚。 为啥需要Promise?假设我们要做三件事,而且得按顺序来:先烧水,水开了再泡茶叶,茶泡好了再倒出来喝。用以前的回调函数写法,大概是这样: 1234567烧开水(function(水) { 泡茶叶(水, function(茶) { 倒出来喝(茶, function(结果) { console.log(结果); }); });}); 这看起来还好,但如果步骤再多一点呢?比如烧水前要先洗水壶,泡茶叶前要选茶叶,代码就会一层套一层,像叠罗汉一样,越叠越高。这就是常说的“回调地狱”——看着头晕,改起来也麻烦,哪一步出错了都得一层层找。 Promise的作用,就是把这种“叠罗汉”的写法,变成“排队走”的样子,步骤清楚,出错了也能一起处理。 Promi...
为什么 ES6 要新增 Set 和 Map?看完这篇就懂了
Created2025-12-06|ES6进阶
在ES6(ECMAScript 2015)的众多特性中,Set和Map两种新数据结构的引入,为JavaScript开发者提供了更灵活、高效的数据存储与处理方式。它们弥补了传统数组与对象的局限性,在处理唯一值、复杂键值对场景时展现出独特优势。 今天我将从概念、特性、用法到实际应用,全面解析一下Set与Map。 Set:无重复值的集合Set是一种无序的集合,其核心特性是成员唯一——不会存储重复的值。这一特性使其在需要去重、判断存在性等场景中大放异彩。 基本特性与创建方式 创建Set:通过new Set()构造函数创建,可接收一个可迭代对象(如数组、字符串)作为初始数据。 核心属性:size用于获取集合中成员的数量(类似数组的length)。 12345678910// 空Setconst emptySet = new Set();// 从数组创建(自动去重)const numSet = new Set([1, 2, 2, 3]); console.log(numSet.size); // 输出:3(重复的2被移除)// 从字符串创建(字符串是可迭代对象)const strSet =...
JavaScript进化论:ES6如何让函数编写更加简洁、高效?
Created2025-12-06|ES6进阶
以前写 JavaScript 函数,真的有不少麻烦事:参数默认值得手动判断、处理多个参数要靠 arguments 瞎折腾、this 指向还老让人晕头转向。ES6 算是把这些痛点都补上了,给函数加了好多实用扩展,写代码又快又不容易踩坑。下面用大白话+简单例子,把这些功能讲明白,新手也能一看就会~ 参数默认值:不用再写 “a || 1” 啦以前想给函数参数设默认值,得在函数里写一堆判断,又麻烦又容易出问题。ES6 直接允许在参数列表里写默认值,省事多了。 核心特点:要是没传参数,或者传了个 undefined,就自动用默认值。 对比示例:123456789101112131415// ES5 写法:得手动判断参数在不在function fn1(a, b) { a = a || 1; // 这里有个坑啊——要是你传个 a=0,它也会被改成 1 b = b === undefined ? 2 : b; return a + b;}// ES6 写法:直接在参数里设默认值,多直观function fn2(a = 1, b = 2) { return ...
1234…6
avatar
jvxiao
全栈前端开发者 | Vue & Node.js
Articles
59
Tags
41
Categories
8
Follow Me
Recent Posts
张雪峰离世的背后:当“人生导师”输给身体,我们该反思什么2026-03-26
虚拟 DOM 要凉了?Vue 3.6 Vapor Mode 凭什么颠覆前端性能?2026-02-02
Cursor 封神,Trae 免费,Claude Code 扫地2026-01-29
面试被问HTTP请求头?别慌,这篇“大白话”带你稳过!2026-01-27
HTTP 与 HTTPS:一字之差,安全性有何天壤之别?2026-01-24
Categories
  • ES6进阶11
  • Vue11
  • Vue源码阅读1
  • Web开发9
    • 网络安全1
  • life1
  • 小程序开发1
  • 搭建博客4
Tags
Web开发,JQuery 组件 Web开发 微信小程序 闭包,作用域 Vuex Javascript Node安装 Session JavaScript进阶 Map 博客搭建 Array 对象存储 随笔 小程序 前端开发 Vue JavaScript Set React MVVM 微信云 Vite Vue, JavaScript进阶 Pinia Proxy 源码阅读 程序人生 生活 Token error 依赖收集 packages 个人IP 前端进阶 守护进程 JavaScript进阶, ES6进阶 npm Node
Archives
  • March 2026 1
  • February 2026 1
  • January 2026 11
  • December 2025 19
  • October 2025 3
  • September 2025 2
  • August 2025 4
  • July 2025 5
Website Info
Article Count :
59
Total Word Count :
96.4k
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By jvxiaoFramework Hexo 7.3.0|Theme Butterfly 5.5.4
Search
Loading Database