优化代码
为什么要设计模式
Don’t Repeat Yourself - DRY原则
不要重复自己
代码级别重复
有相同的三行代码写了2遍
页面级别重复
类似页面做了很多次
MVC是什么
- M - Model (数据模型)负责数据相关的任务
m = {data: { 程序需要操作的数据或信息 },create: { 增数据 },delete: { 删数据 },update: { 改数据},get:{ 获取数据 }}
- V - View (视图) 负责所有用户界面
v = {el: 需要刷新的元素,html: `<h1>M V C</h1>....显示在页面上的内容`init(){初始化元素},render(){ 刷新页面 }}
- C - Controller (控制器)负责其他,负责监听用户事件,然后调用 M 和 V 更新数据和视图
c = {init(){v.init() // View初始化v.render() // 第一次渲染c.autoBindEvents() // 自动的事件绑定},events:{ 事件以哈希表方式记录 },method() {data = 改变后的新数据m.update(data)},autoBindEvents() { 自动绑定事件 }}
最小知识原则
引入一个模块需要引入html、Css、 js
引入一个模块需要引入html、js
引入一个模块需要引入js
你需要知道的知识越少越好
模块化为这一-点奠定了基础
代价
这样做会使得页面一开始是空白的,没内容没样式。解决方法很多,比如加菊花、加骨架、加占位内容等。
EventBus 有哪些 API
EventBus就是利用发布订阅者模式,达到任意之间的通信,让我们的代码书写变得简单。
引入Jquery后 执行下面代码
const eventBus = $(window)
就能打印出EventBus 在原型上就有一些API,已经学到的API有 on(监听事件)、trigger(触发事件)、off(取消监听函数)
触发事件
eventBus.trigger('m:updated')
监听事件
eventBus.on('m:updated',()=>{v.render(m.data.n)})
取消监听
eventBus.off('m:updated');
在网上搜的其他API
_self.subscribeEvent方法:subscribeEvent:function(event,fn,pointcut){}描述:注册事件,并指定实现方法和插入点参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾fn:实现方法插入点类型:after、overwrite、before
_self.unSubscribeEvent方法:unSubscribeEvent:function(event){}描述:取消注册事件参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾
_self.fireEvent方法:fireEvent:function(event){}描述:触发某个具体事件,执行这个事件对于的实现方法队列参数:event:字符串形式事件名,命名规则为Event或ActionEvent结尾其他参数:可以增加一些后续参数
表驱动编程
当你看到大批类似但不重复的代码;把重要的数据做成哈希表,你的代码就简单了。
下面的代码输入一个小数返回大写,如果写入更多的数字,就会有更多的else if来操作,这样就显得麻烦。会有更简单的方法呀。
function numbers(item) {if (item === 1) {return '一'} else if (item === 2) {return '二'}}console.log(numbers(2));
这里就用了表驱动编程。将所有的数字制作成一个hash表来。增加数字,就在items里面添加就是了。
function numbers2(item) {let items = {1: '一',2: '二'}return items[item]}console.log(numbers2(1));
我是如何理解模块化的
一个网页有很多相似的功能或者多个网页有相似的功能,模块化就是将功能分离,然后再每个模块里面,又把数据,视图,控制分离。来做到,不用重复代码和在未来更好的阅读和维护代码。
