JavaScript 【MVC 思想】

230 阅读3分钟

1. 闭包【面试题】

1.简单意义的闭包概念

如果一个函数使用它范围外的变量,则把这个变量和函数称为闭包。 闭包例子:

    var a = 1;
    function fn(){
        console.log(a);
    }

2.闭包的作用

  1. 可以读取函数内部变量
  2. 可以让这个变量的值一直保存在内存中

3. 闭包【面试题】意义

    //闭包永远跟立即执行函数一起用
    var accessor = function(){  //声明一个返回一个匿名函数的立即执行函数(accessor访问器)
        var person = {         //声明变量,这个变量只能(全局范围内都可以)通过growUp来操作,但不能直接访问
            name:'qinglin',
            age:18
        }
        return function(){     //闭包,间接地对闭包变量进行操作
            person.age += 1     
            return person.age
        }
    }

    var growUp = accessor.call() //立即执行accessor,结果返回一个函数,把这个返回函数赋给growUp ,gorwUp存储这个全局变量函数地址,在哪都能调用
    growUp.call()  //再执行gorwUp函数

解释

    1. 立即执行函数使得person 不能被外部访问
    2. 闭包使得内部 return函数可以操作person
    3. growUp函数保存了retrun函数的地址
    4. 全局范围内任何地方都能调用growUp操作person
    总结:任何地方都可以使用 growUp函数操作person,但是不能直接访问person 

2. MVC

1. MVC ——

  1. 概念:

MVC 是一种设计模式(或者软件架构),把系统分为三层:Model数据、View视图和Controller控制器。

Model 数据管理,包括数据逻辑、数据请求、数据存储等功能。前端 Model 主要负责 AJAX 请求或者 LocalStorage 存储

View 负责用户界面,前端 View 主要负责 HTML 渲染。Controller 负责处理 View 的事件,并更新 Model;也负责监听 Model 的变化,并更新 View,Controller 控制其他的所有流程。

  1. 流程:

Model 和服务器交互,Model 将得到的数据交给 Controller,Controller 把数据填入 View,并监听 View 用户操作 View,如点击按钮,Controller 就会接受到点击事件,Controller 这时会去调用 Model,Model 会与服务器交互,得到数据后返回给 Controller,Controller 得到数据就去更新 View

2. 代码示例

    var model = {
        data: null,
        init(){}
        fetch(){}
        save(){}
        update(){}
        delete(){}
    }
    view = {
        init() {}
        template: '<h1>hi</h1'>
    }
    controller = {
        view: null,
        model: null,
        init(view, model){
            this.view = view
            this.model = model
            this.bindEvents()
        }
        render(){
            this.view.querySelector('name').innerText = this.model.data.name
        },
        bindEvents(){}
    }

3. 用MVC思想代码分层

1.代码分层理论基础:

. 第一层:Server

. 第二层:Model

. 第三层:Controller

. 第四层:View

2.各层代码之间交互:

。 用户只能点击View,其它分层用户完全不能操作,View一旦被用户点击了,他就会通知监听它的Controller, Controller就会区View里面获取信息,然后Controller就会去调用Model,被调用的Model会向Server发起请求。Server收到请求之后做出响应给Model,MOdel回把数据返回给Controller,Controller会更新View,View会把效果展示给用户。(View和Model之间基本上没有交互,Controller也不会直接去访问Server)

4. js两大功能

1. DOM API —— 各种API,jQuery等

2. AJAX —— XMLHttpRequeest对象(主要的)

  • 前端没有跨设备存储数据功能,我们可以自行在 阿里云购买服务器,或者在 LeanCloud 创建一个数据库。

  • 我介绍以下leanCloud: 它是一个自带数据库和增删改查的(CRUD)的后台系统。

  • leanCloud功能:

    1. 登陆注册,手机验证码等(免费的只有200兆,收费)
    2. 存储任意信息
    3. 读取任意信息
    4. 搜索任意信息
    5. 删除任意信息
    6. 更新任意信息
  • leanCloud用法:

    1. 创建一个应用

    2. cdn引用av.min.js到html文件,得到window.AV

    3. 创建一个js文件

    4. 初始化(代码直接拷)

    5. 验证(测试),新建一条数据

    6. 获取对象(内容)

3. CRM 思想

所谓CRM 就是指Copy + Run + Modify

  • Copy —— 拷贝别人的代码

  • Run —— 运行代码

  • Modify —— 仿照别人的代码(对html/js/css进行操作)

上面的内容使用leanCloud就是个典型的CRM例子。