前端知识回顾

2017前端面试知识点回顾与实战指南 组件指令:是带有@Component装饰器的类,它们可以通过模板来定义视图,是Angular中定义用户界面的主要方式。属性指令:改变DOM元素的外观或行为,不需要创建新元素。例如,ngStyle指令允许动态修改样式。结构指令:改变DOM元素的结构,例如*ngIf和*ngFor指令。它们通过添加和移除DOM元素来控制布局。Vue.js框架中的指令是一些特殊的标记,它们提供了一种声明式地将数据绑定到DOM的方法。Vue指令的前缀为v-,例如v-bind。 阅读详情

总结网址:前端导航

GitHub - sindresorhus/awesome: 😎 Awesome lists about all kinds of interesting topics

1.js是面向对象还是基于对象?

面向对象的三大特点:封装,继承,多态。

面向对象:先有一个抽象的类,然后根据这个类去实例化对象。

eg:java实例化对象

public class A{

    private String name ;

    private int age;

    public void A(String name,int age){
        this.super();

        this.name = name;
        this.age = age

    }
    public String getName(){

        return this.name;
    }
    public void setName(String name){
        this.name = name
    }        

}

//对象实例化
A objA = new A("DaMing",18);

eg:js实例化对象

//点击按钮,改变div的样式--面向对象(高级)
//ChangeStyle是构造函数
function ChangeStyle(btnObj,divObj,json){
    this.btnObj=btnObj;
    this.divObj=divObj;
    this.json = json;
}
ChangeStyle.prototype.init = function() {
    //点击按钮改变div样式
    var that = this;    // 此处必须转存this,因为在function中this表示该点击事件的对象
    this.btnObj.onclick=function() {
        for(var key in that.json){
            that.divObj.style[key]=that.json[key];
        }
    }
}
//实例化对象
var btnObj=document.getElementById("btnId");
var divObj=document.getElementById("divId");
var json = {"width": "500px","height": "500px","backgroundColor": "green","opacity": "0.1",}
var test = new ChangeStyle(btnObj, divObj, json);
test.init();//调用方法

基于对象:现有一个具体的类再去实例化对象。基于对象是没有继承的说法

2.JavaScript 中 ?? 与 || 的区别

??用法:   表达式1  ??  表达式2

如果表达式1为undefin或null时返回表达式2

   || 用法     表达式1  ||  表达式2

如果表达式1为false返回表达式2

??更加适合在不知道变量是否有值时使用。

 3.前端支持图片:

  • png-8、png-24、jpeg、gif、svg
  • Webp:WebP格式,谷歌(google)开发的一种旨在加快图片加载速度的图片格式。图片压缩体积大约只有JPEG的2/3,并能节省大量的服务器带宽资源和数据空间。Facebook Ebay等知名网站已经开始测试并使用WebP格式。
  • 在质量相同的情况下,WebP格式图像的体积要比JPEG格式图像小40%。
  • Apng:全称是“Animated Portable Network Graphics”, 是PNG的位图动画扩展,可以实现png格式的动态图片效果。04年诞生,但一直得不到各大浏览器厂商的支持,直到日前得到 iOS safari 8的支持,有望代替GIF成为下一代动态图标准

4.一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给用户更好的体验。

  • 图片懒加载,在页面上的未可视区域可以添加一个滚动事件,判断图片位置与浏览器顶端的距离与页面的距离,如果前者小于后者,优先加载。
  • 如果为幻灯片、相册等,可以使用图片预加载技术,将当前展示图片的前一张和后一张优先下载。
  • 如果图片为css图片,可以使用CSSsprite,SVGsprite,Iconfont、Base64等技术。
  • 如果图片过大,可以使用特殊编码的图片,加载时会先加载一张压缩的特别厉害的缩略图,以提高用户体验。
  • 如果图片展示区域小于图片的真实大小,则因在服务器端根据业务需要先行进行图片压缩,图片压缩后大小与展示一致。
  • 图片裁剪

5.如何使用CSS实现硬件加速?

硬件加速是指通过创建独立的复合图层,让GPU来渲染这个图层,从而提高性能,

  • 一般触发硬件加速的CSS属性有transform、opacity、filter,为了避免2D动画在 开始和结束的时候的repaint操作,一般使用tranform:translateZ(0)

6. 重绘和回流(重排)是什么,如何避免?

  • 重绘:当渲染树中的元素外观(如:颜色)发生改变,不影响布局时,产生重绘
  • 回流:当渲染树中的元素的布局(如:尺寸、位置、隐藏/状态状态)发生改变时,产生重绘回流
  • 注意:JS获取Layout属性值(如:offsetLeft、scrollTop、getComputedStyle等)也会引起回流。因为浏览器需要通过回流计算最新值
  • 回流必将引起重绘,而重绘不一定会引起回流

7.如何最小化重绘(repaint)和回流(reflow):

  • 需要要对元素进行复杂的操作时,可以先隐藏(display:"none"),操作完成后再显示
  • 需要创建多个DOM节点时,使用DocumentFragment创建完后一次性的加入document
  • 缓存Layout属性值,如:var left = elem.offsetLeft; 这样,多次使用 left 只产生一次回流
  • 尽量避免用table布局(table元素一旦触发回流就会导致table里所有的其它元素回流)
  • 避免使用css表达式(expression),因为每次调用都会重新计算值(包括加载页面)
  • 尽量使用 css 属性简写,如:用 border 代替 border-width, border-style, border-color
  • 批量修改元素样式:elem.className 和 elem.style.cssText 代替 elem.style.xxx

8.如何理解闭包?

1.定义:

官方定义:是指拥有多个变量和绑定了这些变量的环境的 表达式(通常是一个函数),因而这些变量也是该表达式 的一部分。

通俗来说就是在函数内部定义函数,内部的函数可以拿到外部函数的变量。

2.用途:

用于读取函数内部变量,以及一直把变量保持在内存中

变量一直存在在内存中是因为内部函数引用了外部函数的变量,变量得不到释放,就会一直存在在内存中。这也会引起另一个问题就是内存泄漏,所以记得在变量不用时记得设为null。

9.事件句柄和事件源:

事件句柄:发生事件时要执行的操作。

事件源:产生事件的标签或元素。

10.js异步编程

  •  回调函数

         将函数作为参数传递到另一个函数中去执行

        官方定义: A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.

例子:

$("#dom").click(function(){

        alert("事件回调")

});

优点:

        简单、容易理解

        解决了同步的问题(只要有一个任务耗时很长,后面的任务都必须排队等着, 会拖延整个程序的执行。

 缺点:

        易形成回调地狱

        不能用try...catch捕获错误

        不能return

        不利于维护,代码耦合高

  • promise

Promise 对象代表一个异步操作,有三种状态:Pending(进行中)、Resolved(已完成,又称 Fulfilled)和 Rejected(已失败)。

promise是ES6支持的新语法在较低的浏览器版本是不支持的。promise有三个方法then(),

catch(),finally(),其中then方法可多次调用,finally执行与代码位置有关,catch和finally也可多次使用,但是catch无异常时只会调用一次,建议catch和finally只使用一次

用法:

var promise = new Promise(function(resolve,reject){

}).then(function(){

}).catch(function(){

}).finally(function(){

})

promise的两个方法:

Promise.all(arr);接受一个由promise构成的数组,异步执行后将返回结果合成一个数组返回一个promise.race(arr):接受一个由promise构成的数组,哪个promise执行的快以谁的数据执行回调resolve();

promise优点:

      解决了回调地狱的问题,将异步操作以同步操作的流程表达出来。

     Promise 的一个重要优点是它将逐渐被用作浏览器的异步 API ,统一现在各种各样的 API ,以及不兼容的模式和手法。

        链式处理,写法更加清晰

        加入了错误处理方法catch()

promise缺点:

        不能中途取消promise,一旦新建就会立即执行

        当promise未执行完好处于pending状态时,不能知道处于什么状态

手写promise:简单版

        var PENDING = 'pending';
        var FULFILED = "fulfilled";
        var REJECTED = "rejected";
        function MyPromise(fn){
            this.status = PENDING;//初始状态
            this.value= null;//初始化resolved参数
            this.reason = null;//初始化rejected参数

            // 构造函数里面添加两个数组存储成功和失败的回调
            this.onFulfilledCallbacks = [];
            this.onRejectedCallbacks = [];
            var that = this;
            var resolved = function(value){
                if(that.status==PENDING){
                    that.value = value;
                    that.status=FULFILED;
                    that.onFulfilledCallbacks.forEach(callback=>{
                        if(typeof callback  == 'function'){
                            callback(value)
                        }
                        
                    })


                }
            }
            var rejected = function(reason){
                if(that.status==PENDING){
                    that.value = value;
                    that.status=REJECTED;
                    that.onRejectedCallbacks.forEach(callback=>{
                        if(typeof callback  == 'function'){
                            callback(reason);
                        }
                        
                    })

                }
            }
            try {
                fn(resolved, rejected);
            } catch (error) {
                rejected(error);
            }

        }
        
        MyPromise.prototype.then = function(resolve,reject){
            if(this.status == PENDING){
                this.onFulfilledCallbacks.push(resolve);
                this.onRejectedCallbacks.push(reject);
            }else if(this.status == FULFILED){
                resolve(this.value);
            }else{
                reject(this.reason);
            }
            return this;
        }
        const p = new MyPromise((resolve, reject) => {
        setTimeout(() => {
            resolve(1000);
        }, 2000);
        });

        p.then((res) => {
        console.log('结果:', res); // 结果:1000
        }).then(() => {
        console.log('执行完成'); 
        })

  • async/await

async是用来修饰函数的,放在函数前就表示这是一个异步函数,会返回一个promise对象

async function fn(){
    return 1;
}

await 关键字只能放到async 函数里面

面试题1:

// 说出下面代码的输出
        async function async1() {
            console.log('async1 start');
            await async2();
            console.log('async1 end');
        }
        async function async2() {
            console.log('async2');
        }

        console.log('script start');
        setTimeout(() => {
            console.log('setTimeout');
        }, 0);
        async1();
        new Promise(function (resolve) {
            console.log('promise1');
            resolve();
        }).then(function () {
            console.log('promise2');
        });
        console.log('script end');


       答案:
        /**
         * script start
         * async1 start
         * async2
         * promise1
         * script end'
         * async1 end
         * promise2
         * setTimeout
         * 
         * /

面试题变体:

async function async1() {
            console.log('async1 start');
            await async2();                
            console.log('async1 end');//微任务1 2
        }
        async function async2() {
            await async3(); 
            console.log('async2');//微任务1 1
        }

        async function async3() {
            await async4();
            console.log('async3');//微任务1
        }
        async function async4() {
            console.log('async4');
        }

        console.log('script start');
        setTimeout(function() {
            console.log('setTimeout');//宏任务1
        }, 0)
        async1();
        new Promise(function(resolve) {
            console.log('promise1');
            resolve();
        }).then(function() {
            console.log('promise2');//微任务2
        });
        console.log('script end');
         /**
          * script start
            async1 start
            async4
            promise1
            script end
            async3
            promise2
            async2
            async1 end
            setTimeout
          * ***/

改写async/await为promise

async function async1() {
            console.log('async1 start');
            await async2();
            console.log('async1 end');
        }
        async function async2() {
            console.log('async2');
        }

new Promise(function(resolve,reject){
    console.log('async1 start');
    console.log('async2');
    resolve();
    
}).then(function(){
    
    console.log('async1 end');
})
  • jquery的deferred对象

deferred对象是一个延迟对象,意思是函数延迟到某个点才开始执行,改变执行状态的方法有两个(成功:resolve和失败:reject),分别对应两种执行回调(成功回调函数:done和失败回调函数fail)

eg:

var wait=function(){
    var tasks=function(){
        console.log("执行完毕!");
    };
    setTimeout(tasks,5000);
};
$.when(wait())
.done(function(){console.log("success");})
.fail(function(){console.log("error")});

结果:

success

执行完毕!

var dtd=$.Deferred();
var wait=function(dtd){
var tasks=function(){
console.log("执行完毕!");
dtd.resolve();
};
setTimeout(tasks,5000);
return dtd;
};
$.when(wait(dtd))
.done(function(){console.log("success");})
.fail(function(){console.log("error")});

结果:

执行完毕!
 success

11.es6的class

语法:

let MyClass = class{

        constructor(a){

                this.a = a;

         }

}

let MyClass = class MyClass{

        constructor(a){

                this.a = a;

        }

}

es5与es6写法对比

function MyClass(x,y){
            this.x = x;
            this.y = y;
            console.log(this.x,this.y)
        }
        MyClass.prototype.name="MyClass";
        MyClass.prototype.add = function(a,b){
            console.log("a+b=",a+b);
            return a+b;
        }

       var myclass = new MyClass(1,2);
       myclass.add(5,5);
       console.log(MyClass);
       console.log(myclass);

       console.log("=========================这是一条分割线=======================================")  


       class MyClass1{
            constructor(x,y){
                this.x = x;
                this.y = y;
                console.log(x,y)
            }
            add(a,b){
                console.log("a+b=",a+b);
                return a+b;
            }

       }
       var myclass1 = new MyClass1(1,2);
       myclass1.add(5,5);
       console.log(MyClass1);
       console.log(myclass1);

类上新增方法:

Object.assign(MyClass.prototype, { hello(){} });

类的定义不会被提升,类的方法也不需要function关键字,方法间不能加分号,

name属性

类名.name返回类名

constructor方法:默认方法,创建类的实例化对象被调用

this指向:指向该类的实例

静态方法:

class MyClass{

        static add(x,y){

                return (x+y);

         }

}

原型方法:

class MyClass{

         add(x,y){

                return (x+y);

         }

}

实例方法:

class MyClass{

        constructor(){

              add(x,y){

                    return (x+y);

              }

        }

}

类的实例:   new MyClass();

类的getter和setter方法(这里取值和赋值需要前面添加下划线否则会不断递归报错RangeError)

class MyClass1{
            constructor(x,y){
                this.x = x;
                this.y = y;
                console.log(x,y)
            }
            get x(){
                console.log("get");
                return this._x;
            }
            set x(x){
                console.log('set')
                this._x  = x;
            }
            add(a,b){
                console.log("a+b=",a+b);
                return a+b;
            }


       }

类的继承:(extends)

super:子类 constructor 方法中必须有 super ,且必须出现在 this 之前。

调用父类方法, super 作为对象,在普通方法中,指向父类的原型对象,在静态方法中,指向父类

 class MyClass1{
            constructor(x,y){
                this.x = x;
                this.y = y;
                console.log(x,y)
            }
            get x(){
                console.log("get");
                return this._x;
            }
            set x(x){
                console.log('set')
                this._x  = x;
            }
            add(a,b){
                console.log("a+b=",a+b);
                return a+b;
            }
            static hello(){
                return "hello";
            }
       }
       class Son extends MyClass1{
           constructor(x,y){
                super(x,y)
           }
           minus(a,b){
                console.log("a-b=",a-b)
                return a-b;
           }
           static hello(){
               console.log(super.hello()+this.name)
           }
       }
       var myclass1 = new MyClass1(1,2);
       var son = new Son(9,9);
       console.log(son);
       son.add(0,1);
       son.minus(1,1)
       Son.hello();

decorator:装饰器

简单来说就是对目标类进行修改操作,这个操作是在编译时发生的

装饰器只能用于类和类的方法,不能用于函数,因为存在函数提升。

function testable(isTestable) {
  return function(target) {
    target.isTestable = isTestable;
  }
}

@testable(true)
class MyTestableClass {}
MyTestableClass.isTestable // true

@testable(false)
class MyClass {}
MyClass.isTestable // false

【医学影像】超声(UltraSound)影像的增强与目标检测 文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR 阅读详情

相关推荐

163种中草药图像数据集构建与ResNet-50迁移学习实战指南

在计算机视觉领域,高质量标注数据集是模型训练的基石,直接影响图像分类、目标检测等任务的性能。其核心原理在于为算法提供结构化的监督信号,通过深度学习模型学习从像素到语义的映射关系。构建此类数据集的技术价值在于解决了特定垂直领域(如中医药)数据稀缺的痛点,为AI技术落地提供了关键“燃料”。在应用场景上,标准化数据集广泛支撑着教学演示、算法验证和产业应用开发。本文聚焦于中草药识别这一细分领域,详细介绍了一个包含163种常见药材、经过多源聚合与清洗的图像数据集构建全过程,并提供了基于PyTorch和ResNet-5

weixin_33672400的博客 454

style对象的cssText方法

cssText 本质是什么?   cssText 的本质就是设置 HTML 元素的 style 属性值。 cssText 怎么用? domElement.style.cssText = "color:...

weixin_39037804的博客 1553

Star CCM+中衍生零部件下的阈值应用与区域内删除目标网格

同样的在绘制网格结束后,有时出现负体积网格或质量差的网格,为了节约时间成本,可能会选择将负体积的网格或质量差的网格删除。弹出相应的窗口,在窗口中选择相应的区域①,选择标量函数②(此处以网格体积变化为例),选择模型③,设置阈值④,选择No Dispalyer,会根据需求选择显示,最后点击Create⑥完成创建。此处以温度为例,若出现温度异常点,首先在①栏中勾选Function,然后在下面点击⑤Select,在弹出的Function窗口中选择温度场函数,再点击④Identify,查找温度异常网格数量。

2201_75375391的博客 2222

使用 JavaScript 更改 CSS 示例

JavaScript 都是关于动态的东西,处理动态 CSS 更改只是 JavaScript 正是我们需要的场景之一。使用 JavaScript,我们可以为 DOM 中的一个或多个元素设置 CSS 样式,修改它们,删除它们,甚至更改所有页面的整个样式表。让我们来看看我们可以做到这一点的不同方法:直接从 JavaScript 设置单个样式是处理动态 CSS 样式时最常见的场景之一。这种方式允许您更改 DOM 中存在的一个或多个元素的 CSS 样式。你所要做的就是: 如果您像这样执行此代码,您会注意到更改

allway2的博客 5277

告别懵圈!用CANoe手把手解析ISO15765多帧传输(附实战报文分析)

本文详细解析了ISO15765多帧传输协议在汽车电子诊断中的应用,通过CANoe实战演示了从首帧发送到流控协商再到连续帧传输的完整流程。文章包含嵌入式系统诊断协议的深度分析,特别适合UDS和CAN总线开发人员学习多帧传输机制及常见问题解决方案。

weixin_30813225的博客 281

ENVI5.6+SARscape实战:基于哨兵一号的PS与SBAS时序InSAR地表形变监测全流程解析

本文详细解析了使用ENVI5.6和SARscape软件基于哨兵一号数据进行PS与SBAS时序InSAR地表形变监测的全流程。从数据获取、预处理到PS-InSAR和SBAS-InSAR处理,提供了实用技巧和优化建议,帮助用户高效完成地表形变监测任务。

weixin_29245767的博客 1151

CSS详解(Element中style属性,伪元素,StyleSheet对象)

目录 1 HTML元素的style属性 2 Element节点的style属性 2.1 基本用法 2.2 cssText属性 2.3 CSS模块的侦测 2.4 setPropertyValue(),getPropertyValue(),removeProperty() 3 CSS伪元素 4 StyleSheet对象 4.1 获取样式表 4.2 属性 4.2.1 media属性...

上善若泪 1万+

three.js 载入 3D 模型的方法

三维模型的加载器ColladaLoader模型加载器。GLTFLoader模型加载器。OBJLoader模型加载器。FBXLoader模型加载器。

w418856的博客 4361

JS设置CSS样式的几种方式

JS设置CSS样式的几种方式 用JS来动态设置CSS样式,常见的有以下几种   1. 直接设置style的属性  某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign)  如果想保留 - 号,就中括号的形式  element.style['text-align'] = '100px'; element.style.

xx_xiaoxinxiansen的博客 2063

【NIPS 2022】时序精选论文07|Non-stationary Transformers: 引入非平稳性信息的平稳化序列预测模型(代码解读附源码)

整体代码框架基本上与传统 Transformer 类似,基本上只有在内嵌的注意力机制模块有区别,因此这里只对关键部分进行讲解,代码整体框架可参考 Transformer。非平稳时序很难预测,尤其对模型泛化性影响很大,试想下推理阶段的数据分布变了,模型很难适应这种变化。,比如很早以前的差分就是一种平稳化操作。序列平稳化能增强数据的可预测性,但这时也会带来一个问题,叫。,通过MLP层进行定义,使得参数可学习,以便于更好的融合到注意力网络中。代码中整体注意力的计算方式与原生Transformer类似,

ViolenceTemper的博客 1490

【华为OD技术面-手撕算法代码真题】- 最长公共前缀

🌟 强烈推荐:华为OD技术面试手撕算法代码真题 🌟大家好!今天我给大家推荐一份备受赞誉的华为OD技术面试手撕算法代码真题。所有题目均为华为od实际面试过程中出现的算法代码真题。

算法大师! 4883

修改element默认样式_重学前端基础:样式操作的方式,包括内部样式,行内样式...

样式操作通过 JavaScript 动态修改页面样式。CSS 对应 DOM 对象// var element = document.querySelector('link');// 对应于 element.sheet body { margin: 30px }// var element = document.querySelector('style');// 对应于 element.sheet/...

weixin_39657125的博客 314

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1261

前端知识回顾一

类似 localStorage一样的代码。样式都差不多,都是里面套个source。<section> 文档的某个区域。<article> 内容标签。<header> 头部标签。<footer> 底部标签。<aside> 侧边栏。<nav> 导航标签。

qq_73863959的博客 275

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

前端知识回顾-登录界面

【代码】前端知识回顾-登录界面。

xiaolin_ss的博客 562

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【VUE】【基础知识】前端开发基础回顾

在学习VUE之前,了解前端开发的基本知识是至关重要的。HTMLCSS和JavaScript。这三者共同作用,构建了网页的结构、样式和交互功能。本小节介绍了前端开发的三大基础技术:HTML、CSS和JavaScript,并阐述了它们在网页中的作用。我们还讨论了浏览器的工作原理、DOM和BOM的基本概念,以及如何通过它们操作页面结构和与浏览器进行交互。理解这些基础知识对于学习VUE及其后续的深入开发至关重要。

pandaHua的博客 595

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

web前端知识回顾

web知识回顾(HTML,CSS,JavaScript) HTML 什么是 HTML 理解HTML本质是超文本标记语言,能表现如文字、视频、音频、程序等复杂元素。 什么是标签 理解什么是标签,标签对的组成:标签名、属性(名值对)、内容 属性类似是给这个标签的内容加了个装备,让这些标签具有一些特殊的能力 例如:<a href="www.baidu.com">百度</a&gt...

qq_40534108的博客 196

前端知识回顾五

将 reactive 对象转换为普通对象,但属性是 ref。使用Proxy替代Object.defineProperty。静态属性提升(Static Props Hoisting)静态树提升(Static Tree Hoisting)更好的性能,支持Map/Set等集合类型。补丁标记(Patch Flags): 用于对象,返回对象的响应式代理。: 用于基本类型值,通过。

qq_73863959的博客 468

[回顾] 回顾一些前端的小知识

let 函数=function(){function 函数名称(){id选择器:以#开头声明,必须通过id属性引入,只针对一个控件用于页面布局。*option:下拉列表中的一项。*布局,控制内容出现的位置。类选择器:以.开头声明,必须通过class属性引入。标签选择器:以标签名命名,只针对同名的标签起作用。标签库内容,尽情期待...

qichengcc的博客 1034

前端学习(2162):知识回顾

歌谣的博客 128

前端学习(2186):知识回顾

歌谣的博客 111

前端工程化知识要点回顾&思考

前端工程化知识要点回顾&思考原文:https://github.com/kuitos/kuitos.github.io/issues/29 编程技术及生态发展的三个阶段 最初的时候人们忙着补全各种API,代表着他们拥有的东西还很匮乏,需要在语言跟基础设施上继续完善 然后就开始各种模式,标志他们做的东西逐渐变大变复杂,需要更好的组织了 然后就是各类分层MVC,MVP,MVV

shut1k的博客 800

前端知识点回顾——HTML,CSS篇

前端知识点回顾篇——是我当初刚转行为了面试而将自己学过的前端知识整理成的一份笔记,个人目的性很强,仅供参考。 doctype 有什么用 doctype是一种标准通用标记语言的文档类型声明,目的是告诉标准通用标记语言解析器要使用什么样的文档类型定义(DTD)来解析文档。 浏览器本身分为两种模式,一种是标准模式,一种是怪异模式(混杂模式),浏览器通过doctype来区分这两种模式,doctype在h...

weixin_30536513的博客 243

前端框架React知识回顾

比如虚拟DOM、状态管理、性能优化,React 18的新特性,Fiber架构,SSR等。另外,实际应用中的问题,比如组件设计模式、错误处理、测试,状态管理部分要提到Redux、MobX,Context API的优缺点。性能优化方面,memo、useMemo、useCallback,以及代码分割的方法,比如setState的异步性,key的作用,合成事件等。另外,面试题举例可以帮助用户更好地准备,比如diff算法、Hooks的原理。

警警的博客 1184

前端学习(2123):知识回顾

歌谣的博客 145
上一篇: pt,px,屏幕尺寸,分辨率以及ppi关系与换算
下一篇: mac安装nginx
小蒋小蒋快乐成长
博客等级 码龄9年 2109粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值