继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

面试初级前端被问的一些问题

AI人工智能视频入门
关注TA
已关注
手记 330
粉丝 93
获赞 398

图片懒加载问题

原理:  先将img标签中的src链接设为同一张图片(空白图片),将其真正的图片地址存储再img标签的自定义属性中(比如data-src)。当js监听到该图片元素进入可视窗口时,即将自定义属性中的地址存储到src属性中,达到懒加载的效果。

优点:  解决页面一次性向服务器响应大量请求导致服务器响应慢,页面卡顿或崩溃等问题.

预加载的插件--echo.js

Demo (网上找到的一个demo代码)


JS中Dom 0级和DOM 2级有什么不同

0级DOM

            分为2个:一是在标签内写onclick事件

                  二是在JS写onlicke=function(){}函数


2级DOM

            只有一个:监听方法,原生有两个方法用来添加和移除事件处理程序:addEventListener()和removeEventListener()。

                          它们都有三个参数:第一个参数是事件名(如click);

         第二个参数是事件处理程序函数;

           第三个参数如果是true则表示在捕获阶段调用,为false表示在冒泡阶段调用


  • addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用。

  • removeEventListener():不能移除匿名添加的函数。


区别:


        如果定义了两个dom0级事件,dom0级事件会覆盖

        dom2不会覆盖,会依次执行

        dom0和dom2可以共存,不互相覆盖,但是dom0之间依然会覆盖


原生Ajax

GET方法:

POST方法:

两个盒子左固宽右自适应

第一种方法:

第二种方法:

Vue组件之间传值

父向子:  

        子组件Child.vue中props一个['tag'] 在template中{{tag}} 

         父组件data{msg:'hello'} template中 <Child :tag='msg'></Child> , 

子组件内容---

父组件内容---



子向父:

        子组件中点击触发函数send,send方法中使用$emit('sendMsg', this.data)第一个参数是自定义一个事件名字,第二个参数是要发送的内容

        父组件中在子组件的标签内调用这个自定义的事件,@sendMsg='show',在show(data)这个方法中将子组件传来的值接受使用

子组件内容--


父组件内容--



如何实现修改url地址但是不刷新网页


        由于ajax异步请求数据,不能在浏览器的历史中保留记录,也无法改变页面在浏览器中Url地址,不能点击浏览器的前进、后退按钮 ; 如果用户刷新了页面,或者用户改变了会话状态(浏览器的前进、后退、刷新),那么ajax就会丢失相关的数据。所以在h5中引入了history.pushState和history.replaceState很好的解决掉了Ajax存在的这个缺陷

       工作原理 : 当使用ajax请求数据,使用window.history.pushState()将指定的URL添加到浏览器历史里,如果想要替换历史记录中的url可以用replaceState是将指定的URL替换当前的URL.这样就可以实现修改url而不刷新页面;通过监听popstate事件,可以监听到用户触发的前进和后退功能

原文出处

打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP