中复习-----jQuery的深浅拷贝、钩子函数、多库并存、闭包、nodejs的安装和清除

jQuery的简述
    1,深浅拷贝
        浅拷贝: 直接拷贝复制,引用数据类型的地址
                两个变量之间,直接指向的是同一个内存地址
                两个变量之间,存在相互存在关联

        深拷贝: 直接拷贝复制,引用数据类型的数据   $.extend(true , newObj , obj);
                两个变量之间,直接指向的是不同的内存地址
                两个变量之间,存在相互没有关联

    2,多库共存
        jQuery,交出控制权的问题
            语法1:  $.noConflict()    jQuery.noConflict()
                    交出 $ 关键词的控制权

            语法2:  $.noConflict(true)    jQuery.noConflict(true)
                    交出 $ jQuery 关键词的控制权

            语法3:  const 变量 = $.noConflict(true)   const 变量 = jQuery.noConflict(true)
                    将控制权,交给变量,通过 变量.() 来调用 jQuery的函数方法

    3,钩子函数
        jQuery中,与jQuery封装的ajax相互绑定的函数
        本质上是观察者者模式
        是当 jQuery 封装的 ajax 状态发生改变时,触发的函数
        在3阶段的框架中,还要继续学习钩子函数,执行原理相同,只是语法形式不同

        $(window).ajaxStart()      当第一个请求准备发送时,触发的函数,多个请求只会触发一次
        $(window).ajaxSend()       当每一个请求已经发送时,触发的函数,每个请求都会触发
        $(window).ajaxSuccess()    当每一个请求请求成功时,触发的函数,每个请求都会触发
        $(window).ajaxError()      当每一个请求发送失败时,触发的函数,每个请求都会触发
        $(window).ajaxComplete()   当每一个请求执行结束时,触发的函数,每个请求都会触发
        $(window).ajaxStop()       当所有请求执行结束时,触发的函数,多个请求只会触发一次

闭包
    闭包是js中函数的高级应用
        1,本质 为了调用执行函数中的数据
        2,条件 函数A必须要有一个不被销毁执行空间
                函数A的返回值是另一个函数B
                在函数B中调用使用函数A的变量数据
                在函数A之外,有变量存储调用函数B
        3,函数的执行空间
            在内存中开辟一个存储空间,来存储函数
            执行函数时,在存储空间中,再开辟执行空间
            来存储,执行函数的代码,变量等
            当函数执行结束,默认会销毁执行空间
        4,特点:既是优点也是缺点
            1,生成一个不被销毁的存储空间
                变量永远存在
                容易占用内存空间,降低执行效率
            2,使用私有作用域保护变量
                不会造成全局变量污染
                调用不方便
            3,生成不被销毁的执行空间,确保私有变量存在,可以调用
                可以调用使用私有变量
                容易造成数据泄露

        实际项目中,不在使用闭包,使用框架方式来解决调用函数中的变量
            
继承

    是构造函数的一种高级应用语法
    从一个构造函数中,继承属性和方法
    为了优化代码,减少冗余内容

    ES5语法继承
        原型继承
            在子级构造函数的prototype中添加父级构造函数生成的实例化对象
            本质原理:通过父级构造函数,生成的实例化对象,与子级构造函数,建立原型链的关联
                    子级构造函数,就可以通过实例化对象,关联到父级构造函数,再通过原型链,获取属性和调用函数方法
            就是 原型链 的一种应用方式
            Son.prototype = obj;
    
        借用构造函数继承
            在子级构造函数中,修改父级构造函数的this指向,继承父级构造函数的函数方法
            function Son(){
                Father.call(this,父级形参...)
            }

        组合继承

            将两个继承方法一起使用


    ES6语法继承
        通过两个关键词来完成
            关键词1: class 子级 extends 父级
                    指定从哪个父级构造函数来继承属性和方法

            关键词2: supper(属性)
                    在 constructor 构造器 中 定义哪个属性是从父级继承的
        会完全继承父级的函数方法

    实际项目中极少自己手写继承,都是使用框架封装好的程序


设计模式

    在js语法中,为了解决特定的问题,制定的简洁而优化的代码语法形式

    单例
        作用: 确保,通过同一个构造函数,生成的实例化对象,指向的都是同一个对象
                不要重复生成的冗余的对象,造成占用内存空间

        核心: 创建构造函数
                定义变量
                判断: 如果变量是原始值,执行 构造函数 返回变量
                    如果变量不是原始值,不执行任何操作 直接返回变量

    组合 
        作用: 通过一个构造函数,生成的实例化对象,一次调用程序中所有的入口函数init
                不同单独每次都调用,一键启动所有的init

        核心: 创建一个构造函数
                定义一个对象或者数组存储要执行init的实例化对象
                add()方法 : 向定义的数组或对象中,存储实例化对象
                execute()方法 : 循环遍历对象或者数组,执行其中存储的实例化对象的init方法

    观察者
        作用: 当监听主体,状态发生改变时,对相关联的个体对象,进行制定的操作

        说明:3阶段中,要配合框架,双向数据绑定等,做数据更新等操作

        核心: 定义一个构造寒素
                定义一个消息盒子,来存储要执行的事件类型和事件函数
                on方法 : 向消息盒子中,添加事件类型和事件函数
                off方法: 向消息盒子中,删除事件类型和事件函数
                emit方法: 向消息盒子中,发布执行事件类型和事件函数

node.js
    1,简介
        本质是一种运行执行js程序代码的方式方法/环境
        之前,我们只能在浏览器环境中运行js程序
        现在我们可以在node环境汇总,运行js程序
        node.js环境 是 基于 Chrome V8 引擎的环境,也就是以谷歌浏览器内核为环境,来运行js程序

        js程序,在不同的环境下,有不同的功能
            在浏览器环境下,受到浏览器的限制
                能操作 ECMAScript  DOM  BOM
                不能操作 I/O 数据库等

            在node.js环境下
                可以操作 ECMAScript I/O 数据库等
                不能操作 DOM   BOM
        
        举例 : 有一款 特别牛的发动机 
            安装在汽车上 : 可以让汽车跑起来
            安装在飞机上 : 可以让飞机飞起来
            安装在潜艇上 : 可以让潜艇沉下去
            安装在火箭上 : 可以让火箭去太空
            不同环境有不同功能和作用

    2, 运行方式***************************
        (1), cmd运行
            有两种方式
                win + r 运行(不推荐 容易出问题,原因在上一篇解释过)
                搜索 cmd 运行 

        (2), 在 powershall 窗口打开 
            是 window 操作系统,提供的,模拟 cmd 的运行方式

        (3), 在 编辑器的终端里,运行程序
            不同版本的编辑器,要执行相应的配置
            设置默认的 cmd 方式运行

    3, 第三方依赖包的安装
        (1) , 使用 npm 来进行安装
                npm 是 node.js 默认给我们安装好的工具,我们可以直接使用

        (2) , 设定 npm 的下载路径(镜像源/镜像文件)*************************
            这一步操作一定要有,否则容易下载失败

            直接设定 推荐的方法

                npm config set registry https://registry.npm.taobao.org

            使用 nrm 来设定  执行时,有可能会有问题, nrm test 无法测速
            有可能是因为网络问题引起的,我们不用管,是要能设定镜像源,就可以了
                nrm use taobao

        (3) , 清除 npm 的下载缓存************************
            如果上一次下载失败,会在node.js中有上一次下载的缓存文件
            如果要执行新的下载,node.js默认会从上一次下载的程序中,继续下载
            就容易造成下载失败

            如果出现下载失败的情况,一定要执行清除操作之后,再来进行第二次下载

            一般推荐使用软清除就可以了
            如果软清除有问题,再使用硬清除
            千万注意,硬清除之后,要再执行一次软清除

            清除 npm 的缓存有两种方法

            (1) , 通过 命令 来清除缓存  --- 软清除
                npm cache clear -f
                清除缓存文件

            (2) , 直接清除缓存文件 --- 硬清除
        
                C:\Users\你的用户名\AppData\Roaming\npm-cache
                这个 npm-cache 文件夹中存储的就是 缓存文件

                直接删除这个文件夹,然后再次执行 软清除
                npm cache clear -f

                注意: appData 是一个隐藏文件 , 必须要显示隐藏文件,才可以看到


        (4) , 依赖包的安装,分为两种形式**********************
            (1), 全局安装 
                npm i -g 依赖包
                npm install --global 依赖包

                全局安装的依赖包,在任意路径下,都可以调用使用

            (2), 项目/局部 安装
                npm i 依赖包
                npm install 依赖包

                项目/局部安装的依赖包,只能在安装路径下,执行调用

                还有一种安装语法
                nmp i -D 依赖包

                两种语法,在使用上没有任何区别
                只是安装依赖包信息,package.json 中的存储位置不同
                npm i 依赖包    ---- 存储在  dependencies 中
                nmp i -D 依赖包 ---- 存储在  devDependencies 中

            有些 依赖包 必须要 安装全局的同时,也安装项目依赖包

项目依赖包的安装方式
在这里插入图片描述

        (5) , 复习gulp的基本使用**********************
            
            a,建立项目文件夹目录

            b,格式化依赖包信息
                npm init -y

            c,安装相应的依赖包
                gulp 的全局依赖包
                    npm i -g gulp

                gulp 的项目依赖包
                    npm i gulp


                gulp-cssmin        css自动打包
                    npm i gulp-cssmin

                gulp-autoprefixer  css自动添加兼容前缀

                    npm i gulp-autoprefixer

                    要在 package.json 中添加配置信息
                    在实际项目中,根据项目手册内容来执行
                    目前就设定简单的规范,意思意思就可以了

                        "browserslist": [
                            "last 2 versions",
                            "IOS > 7",
                            "FireFox > 20"
                        ]
                    注意,新增的内容,要与之前的内容,以逗号间隔

                del   删除文件依赖包
                    npm i del


            d, 创建 gulpfile.js 文件, 文件名称,必须是这个名称,一个字母都不能错,大小写也不能错
                gulp运行时,只执行 gulpfile.js 文件 , 必须必须必须是这个名称

                在 gulpfile.js 文件中来定义 你要执行的 程序内容


                特别说明:
                    
                    gulpfile.js        我们程序员自动手动定义的文件
                                    gulp执行打包压缩时,会只执行 这个文件名中的打包压缩程序

                    package.json       执行 npm init -y 自动生成的文件
                                    其中会存储 下载使用 依赖包的相关信息
                                    是一个非常重要的文件

                    package-lock.json  执行 npm 下载安装依赖包之后 自动生成的文件
                                    没啥大用,但是也要留着,别删除,之后会用上
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值