什么是设计模式
为什么要有设计模式
- Don't Repeat Yourself - DRY 原则
怎么算重复
代码级别的重复
页面级别
MVC 就是一个万金油
MVC 是什么
- M - Model(数据模型)负责操作所有数据
- V - View(视图)负责所有 UI 界面
- C - Controller(控制器)负责其他
学习中遇到的知识
JS 引入 CSS
- import '名称.css'
- vscode 拼写检测插件:Code Spell Checker
- 引入 jQuery:
yarn init
yarn add jquery
npm i jquery
- 接上面 JS 引入 jQuery:
import $ from 'jquery
- 存入 localStorage:localStorage.setItem('存入的名称', 存入的变量)
- 初始化要存入 localStorage 的数据:localStorage.getItem('存入的名称')
- 初始化列表:ol, ul {list-style: none;}
- 滚动条像素:14-19px
- 模块化:把相关代码放到文件里,然后引用进来
- 监听父元素,操控子元素:
const $tabBar = $('#app2 .tab-bar')
$tabBar.on('click', 'li', (e)=>{
const $li = $(e.currentTarget)
const index = $li.index()
console.log(index)
})
- toggleClass() 切换效果。如果不存在则添加类,如果已设置则删除之。
- 标记数据: data-index= "0"
- js 的代码不能以 ' [ ' 开头
抽象思维1
最小知识原则
- 引入一个模块需要引入 html、css、js
- 引入一个模块需要引入 html、js
- 引入一个模块需要引入 js
- 你需要知道的知识越少越好
- 模块化为这一点奠定基础
代价
- 这样做会使得页面一开始是空白的,没内容和样式
- 解决方法:加菊花、骨架、占位内容等
抽象思维2
view = render(data)
- 比起操作 DOM 对象,直接 render 简单多了
- 只要改变 data,就可以得到对应的 view
代价
- render 粗犷的渲染肯定比 DOM 操作浪费性能
- 可以用虚拟DOM,只更新该更新的地方
抽象思维3
以不变应万变
代价
- 有时候会有多余的用不到的代码
- 有时候特殊情况不知道怎么变通,比如没有 html 的模块怎么做 MVC
eventBus 对象间通信
const eventBus = $(window)
eventBus.on('xxx')
eventBus.trigger('xxx')
抽象思维4
表驱动编程
- 当你看到大批类似但不重复的代码
- 看看哪些数据才是重要的
- 把重要的数据做成哈希表
events: {
'click #add1': 'add',
'click #minus1': 'minus',
'click #mul2': 'mul',
'click #divide2': 'div'
}