vue 源码分析注:来自 GitHubvue 源码逐行注释分析),仅仅用来学习使用 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818 ...
微信小程序页面实现分享功能 微信小程序实现页面的分享功能有两种实现方式:: 监听用户点击页面内转发按钮(button 组件 open-type="share"),并自定义转发内容。 使用onShareAppMessage实现页面的分享功能,完整的文档可前往小程序文档中心查看onShareAppMessage 一.使用自定义的分享方式(用户点击页面内的按钮进行分享):在需要分享的页面中添加一个按钮button: 属性为 open-type="share" 在微信小程序的页面的js文件中添加一个函数:onShareAppMessage(Object object) 二.使用默认的分享方式在微信小程序的页面的js文件中添加一个函数:onShareAppMessage(Object object) 相较于上面的少了添加button按钮 代码展示: 12345678910111213141516171819202122232425262728293031323334353637Page({ data: { activity ...
实现可过期的 localstorage 数据 localStorage 默认不会过期,数据会一直保留,除非用户手动清除。因此要实现 具有过期机制的 localStorage 缓存 主要有两种解决办法: 惰性删除 定时删除 1.惰性删除1.含义:只有在读取某个键值时才判断其是否过期,若过期则删除该项并返回空值 2.实现思路 存储数据时,将数据和过期时间一起存入(如使用一个对象 { value, expire })。 获取数据时,检查 expire 是否早于当前时间,若过期则删除该项。 3.优缺点优点:实现较为简单,不需要额外的定时器 缺点:如果莫一条数据一直没有被读取到,那么可能就不会被删除,会占用内存 4.代码实现123456789101112131415161718192021// 传入的experies是秒数function setItem(key, value, expires) { const data = { value: value, // 注意:这里的Date.now()返回的是毫秒数, 所以乘以1000转换为 ...
playwright 测试一.准备工作1.项目安装相应的包1npm init playwright@latest 2.进行可视化操作1npx playwright test --ui 二.知识准备Locator | Playwright 中文网 上面这个网站记录很多的 api 方法 行动 描述 locator.check() 检查输入复选框 locator.click() 单击该元素 locator.uncheck() 取消选中输入复选框 locator.hover() 将鼠标悬停在元素上 locator.fill() 填写表单字段,输入文本 locator.focus() 聚焦元素 locator.press() 按单个键 locator.setInputFiles() 选择要上传的文件 locator.selectOption() 在下拉菜单中选择选项
three.js一.认识three.js 未使用框架开发 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import * as THREE from "three";import "./style.css";// 创建一个场景const scene = new THREE.Scene();// 创建一个相机const camera = new THREE.PerspectiveCamera( // 视野角度 75, // 视口宽高比 window.innerWidth / window.innerHeight, // 近裁剪面 0.1, // 远裁剪面 1000);// 创建一个渲染器const render = new THREE.WebGLRenderer();// 设置渲染器的大小render.setSize(window.innerWidth, window. ...
HTML-CSS-补充学习一. HTML 语义化标签 标签 语义/用途 示例 适用场景 页面结构 <header> 定义页面或区域的头部(如网站标题、导航栏) <header><h1>网站标题</h1><nav>...</nav></header> 页面顶部、文章/章节标题区域 <nav> 定义导航链接区域 <nav><ul><li><a href="#">首页</a></li></ul></nav> 网站主导航、侧边栏导航 <main> 定义页面主要内容(一个页面只能有一个) <main><article>...</article></main> 页面核心内容区域 <article> 定义独立的内容块(如博客文章、新闻) <article>& ...
JavaScriptPromise 一.数据结构1.JavaScript 有哪些数据类型共有八个数据类型,分别是undefined,Null,Boolean,String,Number,Object,Symbol,Bigint 这些数据类型可以分为原始数据类型与引用数据类型(复杂数据类型),他们在内存中的存储方式不同 其中 **Symbol** 和 **BigInt\*\* 是 ES6 中新增的数据类型: **Symbol**代表创建后独一无二且不可变的数据类型,它主要是为了解决可能出现的全局变量冲突的问题。 **BigInt** 是一种数字类型的数据,它可以表示任意精度格式的整数,使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了 Number 能够表示的安全整数范围。 堆: 存放引用数据类型,引用数据类型占据空间大、大小不固定。如果存储在栈中,将会影响程序运行的性能;引用数据类型在栈中存储了指针,该指针指向堆中该实体的起始地址,如Object、Array、Function。栈: 存放原始数据类型,栈中的简单数据段,占据空间小,属于被频繁使用的数据,如Str ...
项目复盘
未读cst-exam一.项目基本架构:1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889src/├── routes/ # 页面级路由│ ├── login/ # 学生登录页 -> /login│ │ └── +page.svelte│ ││ ├── teacher/ # 教师模块 -> /teacher│ │ ├── login/ # 教师登录页│ │ ├── 其他页面/ # 教师子页面(例如试卷、成绩等)│ │ ├── +page.svelte│ │ ...
react安装react项目: 1npx create-react-app your-project-name 启动项目: 1npm start jsx: JSX(JavaScript XML)是一种在 React 中使用的语法扩展,它看起来很像 HTML,但实际上是 JavaScript 的一种语法糖。JSX 使得编写和读取组件的结构更加直观,就是 JavaScript 和 html 的缩写. 可以在 js 代码中编写 html 代码 jsx 不能在浏览器中进行运行,而是需要一个解析工具进行解析之后才能够进行运行 语法通过{}的形式来展示数据 12345678910111213141516const username = "admin";const numbwe = 123function App() { return ( <div className="App"> {username} {numbwe} {' ...