抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

浏览器缓存策略

介绍 为什么需要浏览器缓存 当你第一次访问页面的时候,浏览器会自动下载所有与这个页面有关的资源,例如 CSS、网页字体、JavaScript脚本。 但是,在很短一段时间内,当你第二次访问网页时,这些资源往往是不变的。如果这个时候仍然再加载这些 CSS、网页字体、JavaScript脚本,那么,不但增加了服务器的负担,也增加了请求的时间,这对双方都是十分不利的。 如果这个时候能够把一些很少...

语义化的HTML

为什么要语义化 在 uni-app 等移动开发框架上,如果做过项目,就可以发现一个很常见的问题:整个页面几乎全是 <view>`` 这样的标签。 同样的,在网页端开发上,也会有光使用 div 来构建整个页面的功能: 12345678910`<div class="html">` ...`</div>``<div class=&...

Vue2源码阅读-响应性系统

开始 在继续阅读源码之前,可以先阅读 Vue2 官网的 深入响应式原理一节,了解一下Vue2响应性的一些基本内容和规则。 后面,我们透过源码,可以更好的理解这些官方文档所说的内容。 什么是响应性 Vue 其中的特点,就是它的数据是响应性的,所谓响应性,说简单点,就是修改数据后,UI可以自动刷新。 例如执行下面的代码,Vue会自动触发UI的更新。 1user.id = 1 要想实现响应性,...

Vue2源码阅读-介绍

从拷源码开始 首先,想搞清楚 Vue2 的源码,至少要把源码拷下来吧: 1git clone --branch v2.6.14 https://github.com/vuejs/vue.git 我们这里选用的是最新版本 2.6.14 的源代码。 目录结构简介 1234567891011121314151617181920212223242526vue├── dist ...

Vue2计算属性的实现原理

Vue2仓库链接:https://github.com/vuejs/vue 本文使用的是 2.6.14 版本的源代码 问题引入 我们来看一个具体的例子: 你可以 点击这里 来在线运行这个例子。 1234<div id="app"> <p>{{sum}}</p> <button @c...

Vue3基础-组合式API

介绍 在Vue2,中我们定义一个组件通常是这样的: 12345678910111213141516171819export default { data() { return { userInfo: { firstName: "a", lastName: "b" }, pos...

Vue3商城架构搭建

创建项目 使用 vite 创建Vue3项目 如果你使用过Webpack,你会发现,在启动开发服务器的时候,会将整个项目编译一遍。当项目的规模越来越大时,这样的编译过程往往十分耗时,光启动开发服务器就要几分钟。如果你修改了文件,可能修改在几秒后才会显示出来。 这极大的影响了开发体验。而且目前,主流的浏览器都已经支持 ES6 模块了。因此,在开发环境下,我们可以直接把模块编译成浏览器支持的E...

React(4-2):上下文对象

介绍 在应用开发中,通常会存在一些全局性的内容,例如用户 id、主题、语言、以及各种 token。 要保证这些数据的传递,以传统的方式,通常有两种办法: 如果直接使用普通的对象,那么 React 就不会帮你自动更新 UI; 通过 props 的层层注入,需要修改大量的组件,且容易使得代码难以维护。 通过 上下文(Context) 就可以解决这些问题。 定义上下文 使用 React.c...

React(4-3):钩子

钩子是什么 在类组件中,我们可以定义 state 来管理组件的状态,使用生命周期函数来管理组件的生命周期。 但函数组件就没有这些功能。因此 React 16.8 推出了 钩子 (Hook),让函数组件也拥有了类似的功能。 函数组件默认情况下,是无法使用 state 和生命周期函数的。但 钩子 让用户有能力通过间接的方式,将 state 和 生命周期函数勾入函数组件中,让函数组件拥有了类似的...

React(3-2):组件进阶

组件进阶 高阶组件 前面提到的组件,都是将组件变成 UI, 而这里将会提到令一种类型的组件:高阶组件(HOC)。 高阶组件就是传入组件,返回组件的函数: 1const EnhancedComponent = higherOrderComponent(WrappedComponent); 高阶组件可以做很多事情: 抽取重复代码 条件渲染 捕获拦截生命周期 例如,我们可以使用高阶组件来监...