The Bitcoin Network
1.application layer(工作层):Bitcoin Block chain
2.networck layer(网络层):P2P Overlay Network
注意:没有super node 和master node,每个节点平等
可以通过预先写入的seed node(叶子节点)得知其他节点
特点:simple robust but not efficient(简单,坚固但不高效)
消息传播采用flooding方式——节点第一次听到消息传给所有的邻居节点,下次收到不在发送给邻居节点,邻居节点选取完全随机
3.best effort(尽力而为):比特币网络中的内容传播存在延迟,有些节点可能收不到
- 从小元素开始组建
- ![[Pasted image 20240530175253.png]]
- 组建成一个组件
- ![[Pasted image 20240530175328.png]]
- 把组件组成布局
- 把布局结合成网站
常见元素
- 文本(text)
- 标题,副标题,文本
- 按钮(button)
- 图像(image)
- 输入元素(input elements)
- 标签(tags)
常用组件
![[Pasted image 20240530175854.png]]
1.导航页![[Pasted image 20240530180428.png]]
2.分页符
![[Pasted image 20240530180505.png]]
3.状态栏
![[Pasted image 20240530180539.png]]
4.画廊
![[Pasted image 20240530180756.png]]
5.功能盒
![[Pasted image 20240530180908.png]]
6.资料卡
![[Pasted image 20240530181153.png]]
7.预览栏
![[Pasted image 20240530181323.png]]
8.折叠标签
![[Pasted image 20240530181418.png]]
9.选项卡
![[Pasted image 20240530181458.png]]
10.轮播图(滑块)
![[Pasted image 20240530181644.png]]
11.客户推荐
![[Pasted image 20240530181739.png]]
12.客户logo
![[Pasted image 20240530181932.png]]
13.来源证明
![[Pasted image 20240530182041.png]]
14.步骤组件
![[Pasted image 20240530182110.png]]
15.表单![[Pasted image 20240530182215.png]]
![[Pasted image 20240530182251.png]]
16.表格
![[Pasted image 20240530182342.png]]
17.定价表
![[Pasted image 20240530182434.png]]
18.功能窗口
![[Pasted image 20240530182534.png]]
![[Pasted image 20240530182543.png]]
基础模块
动态数据放在数据库
==不要写太复杂的选择器 ==
- html
- 网页基础
- 选择器优先级
- 内联>ID>类和伪类>标签>通用
- 一般复杂的优先级大于简单的
- css:网页样式
- RGB表示法
- rgb(0,255,255,0.3)——最后的数表示透明度
- 通过红蓝绿三种颜色表示所有颜色
- ![[Pasted image 20240516123405.png]]
- 16进制表示法
- 0到FF的表示
- #00ffff
- 每两位数表示255,和rgb类似
- 盒子模型
- ![[Pasted image 20240518093002.png]]
- 内联框(inline)
- 仅占据自己所需的空间
- 盒子模型只影响本行内,不受width和height影响,只影响left,right
- 块状元素(block)
- 尽可能占据所有空间,不能并排
- 内联块框(inline—block)
- 内部像内联,外部像块
- 只占据自己所需的空间
- 但受width等所需影响
- 定位模式
- 正常定位
- 根据源代码定位
- 绝对定位
- 自己定位,可能重叠
- 绝对定位的位置受自己第一个属性为相对定位的父元素决定
- 布局
- 文本图像和其他所有元素在网页上排序放置
- 页面布局
- 组件布局
- 布局类型:
- 浮动布局
- flexbox布局
- 适合一维布局
- 允许浏览器自动创建空间
- 弹性容器(flex container)
- gap
- justfy-content
- align-items
- ![[Pasted image 20240521151906.png]]
- 弹性容器(flex items)
- 布局方向叫主轴(main axis)和(cross axis)
- ![[Pasted image 20240521152004.png]]
- ![[Pasted image 20240521151608.png]]
- CSS grid布局
- 网格容器(grid container)
- grid-template-rows
- grid-template-columns
- row-gap:0
- colmun-gap:0
- justigy-items:stretch(水平对齐)
- align-items:stretch(垂直对齐)
- justify-content:start
- item-content:start
- 网格线(grid lines)
- ![[Pasted image 20240525121439.png]]
- 网格项目(grid items)
- grid-column:
- grid-row:
- justify-self:
- align-self:
- js
- 响应用户输出
数组就是对象
- DOM
- 文档对象模型
- html和js之间的连接点
- js特点
- 高级语言
- 不需要向系统请求内存
- 低级语言(C)
- 垃圾收集
- 自动删除旧的,未被使用的数据
- 即时编译
- 编译发生在js引擎内部
- 多范式
- 范式分类
- 程序式编程
- 面向对象编程(OOP)
- 在js中的所有值基本都是对象,除了原始值(数字,字符)
- 函数式编程(FP)
- 头对象函数
- 函数被视为常规变量
- 动态语言
- 变量类型可以随意改变
- 单线程和非阻塞事件循环并发模型
- js引擎可能同时处理多个事件
- js引擎
- 执行js代码的计算机程序
- 谷歌的V8
- nodejs
- 调用栈
- 代码实际运行的地方
- 堆
- 储存对象的地方
- 编译过程
- 机器码编译,生成可执行性文件
- 在CPU中执行
- 解释过程
- 代码同时翻译和执行
- js混合使用编译和解释(即时编译)
- 不会生成可执行性文件
- ![[Pasted image 20240601104555.png]]
-
- 执行上下文
- 环境
- 范围界定
- 作用域链——与执行环境无关
- 声明变量的地方
- 全局作用域
- 函数作用域
- 块作用域‘
- ES-6之后;
- if等语句中定义的变量也是局部变量
- 但只有let和const变量
- 变量提升(hoisting)
- 函数声明 被提升 值为真实的函数
- var 被提升 值为undefined
- let和const 不被提升
- 函数表达式和箭头函数 根据定义方式
- ==不要让箭头函数作为方法,因为窗口函数==
## 工具
- 包管理器
- 包:软件片段
- npm
- 自动构建工具
- gulp webpack parcel
- 版本控制
- git
## scss响应式设计
- css的扩展
## js框架
- react
- angular
- vue
服务器
服务器编程语言
数据库
数据来源
- 源代码
- UI
- 用户自行输入,或者被写入DOM
- 来源于外部
- 通常是一个Web API:允许我们从另一个web程序中获取数据
API
- 通常是一个Web API:允许我们从另一个web程序中获取数据
- 应用程序编程接口
js中的数据结构
- 数组(array)
- 集合(Set)
- 映射(Map)
- 对象(Object)
- …..(WeakMap,WeakSet)等等
排版
- serif字体
- ![[Pasted image 20240526152349.png]]
- ![[Pasted image 20240526153341.png]]
- non-serif字体
- ![[Pasted image 20240526152402.png]]
- ![[Pasted image 20240526153325.png]]
- 字体大小
- 普通文本:16px-32px
- 长文本:20px或者更大一点
- 标题:可以超过50px并且加粗(600+)
- font-weight不要低于400
- 每行字体要少于75个字母(17个字左右)
- 常规文本行高在1.5到2.0之间
- 标题或大字体低于1.5
- 可以适当减小字体间距
- 对短标题全部大写(英文)
- 不要对齐文本
- 不要居中长标题
色彩
- 颜色与主题相符
- 红色:吸引注意力
- 橙色:快乐,创造力
- 黄色:高兴
- 绿色:自然
- 蓝色:平静,专业
- 紫色:财富,魔法
- 粉色:浪漫,亲情,有吸引力
- 棕色:自然,耐用性
- 纯黑:优雅,极简主义,悲伤
- 工具:open color,tailwind color,flat ui color,palleton.com
- 需要两个颜色:
- 主要颜色(亮色)
- 衬托颜色(暗色)
- 强调色(选用)
- 对比度
- 常规文本:4.5:1
- 大文本:3:1
图像
- 产品照片
- 讲故事的照片
- 插图
- 2D
- 3D
- 图案
- 只使用和你的主题有关的图片
- 永远不要使用廉价的,过度生产的图片
- 工具:unsplash pexels drawkit undraw
- 在你的图片中使用真正的人,而不是过度生产的图片
- 可以简单的修剪图片,组合图片
- 在图片上处理文本
- 让整个图像变暗(变亮)
- 仅将部分变暗(渐变)
- 将文本定位到图像的中性元素的位置
- 将文本简单的放在框里
- 实际技术
- 在高分辨率设备中,原图片的大小要是原来的2—3倍
- 压缩图像,让文件大小变小(squoosh)
- 并排使用图像时,确保他们具有同样的尺寸
图标
- 图标包——在一个项目里只用一个图标包
- phosphor icons
- 阿里巴巴矢量图标库
- ionicons
- icons
- 格式为.svg或者icon fonts而不是,jpg和.png
- 用图标给文本提供视觉体验
- 构建功能块
- 和“action”一起
- 用作要点
- 用法:
- 使用和文本一样的颜色
- 图标风格要和字体适配
- 如果想要吸引注意,可以在不同的图标使用不同的颜色
- 图标不应该使用太大和线条太粗的
阴影
- 严肃的主题阴影少
- 趣味的主题阴影多
- 阴影原则
- 小剂量的使用阴影
- 让阴影亮一些
- 小心的运用阴影
- 使用小阴影在小元素(按钮,链接,’action’,讲故事的图片)
- 使用中等阴影在更大的区域 ,让购物车脱颖而出
- 大阴影
- 导航,弹出的提示
- 在点击和悬停事件是使用阴影
- 阴影不一定是黑的
边界半径
- 一般越小越严肃,越大越趣味
- 可以先选一个比较圆的字体
- 按钮,小的边界半径
- 图像,围绕图标
留白
- 垂直空白
- 在每个部分之间流出空白(大概192px-根据实际情况)
- 在各个元素组之间(小一些)
- 临近原则
- 根据元素关系的远近控制空白的大小‘
- 根据元素的大小决定空白的大小
- 新手提示
- 只使用16px的倍数
视觉层次
使用前面的总和来建立视觉层次
- 定位重要的元素
- 从上到下
- 图像会吸引很多注意力
- 战略性的使用空白
- 在重要和不重要位置分别使用字体大小,宽度,颜色、
用户体验
- 确定用户需求
- 不要使用过于复杂的布局
- ![[Pasted image 20240530141306.png]]
- 没必要原创,使用模板
- 让按钮始终能轻易被看到
- 蓝色字体和下划线只用于链接
- 设计表格时,对齐
- 为每种操作都做好说明
- 最好把按钮放在他会影响的位置
- 去掉所有无效的信息
- 有很长的文本时,使用快引用,图片等方式将它们分开
组件
- 重要需要突出展示的组件
- 注册页面
- 内容中间的宣传
- 预览牌
- 定价牌
- ![[Pasted image 20240530122418.png]]
- 需要突出展示的一个列
- ![[Pasted image 20240530122501.png]]
网站框架
- 严肃主题
- 衬线字体,较细的字体
- 金色,黑色,灰色等
- 使用大,质量高的图像
- 基本不使用图标
- 基本无阴影和边界半径
- 极简主题
- 排版方正,无衬线字体
- 一般只有一种颜色
- 图片很少,通常无图表
- 基本无阴影和边界半径
- 平凡主题
- 无衬线字体
- 蓝色和黑色很常见
- 基本无阴影和边界半径
- 大量方块和行
- 自信主题
- 大而粗的字体
- 大色块,鲜艳背景
- 基本无边界半径
- 沉静主题
- 柔和的衬线字体
- 蓝色,浅黄色等柔和颜色
- 一般会有很多人
- 会有一些边界半径
- 乐观,现代主题
- 中等大小的标体
- 浅色颜色的无衬线字体
- 使用渐变
- 很多插图
- 常用阴影和边界半径
- FUN主题
- 色彩丰富
- 图片丰富
- 大量的边界半径和阴影
- 很多大色块
- 确保你真正了解了该实现什么
- 将问题分成小问题,各个解决,尽可能多的先解决小问题
- 做尽可能多的尝试来实现哪些功能
- 实在不行在查
- 在编码前,结合前面的步骤写一些伪代码
1 | const secureBooking = functiong(){ |
![[Pasted image 20241114111853.png]]代码执行时
- 首先在全局范围下有secureBooking变量,他的执行上下文(Execution Context)进入堆栈
- 在seB函数范围下会有passengerCount的局部变量
- 执行上下文也进入堆栈
- 然后在```的调用下,seB函数会返回一个函数,booker在全局范围内,所以它属于全局变量,而在调用完成后,seB的执行上下文会被弹出堆栈
1
const booker = secureBooking();
- 在调用时产生一个执行上下文,他范围内的变量为空,又因为他是在全区范围内
1
booker();
![[Pasted image 20241114113630.png]]
但是他可以访问seB函数内的passerger是因为闭包
***一个函数总是可以访问创建他的执行上下文中的变量,即便他不存在于堆栈中
闭包基本优先于作用域链
闭包定义
- 一个函数总是可以访问创建他的执行上下文中的变量,即便该上下文不存在于堆栈中
- 闭包使函数能访问所有在他的父函数中的变量
- 闭包是值传递,而不是引用
例子
1 | let f |
- 全局的执行上下文加入堆栈,里面有f
- 在函数执行时,函数的执行上下文加入堆栈,里面有header
- 又因为闭包,导致f能访问到上面函数的header