哈哈哈

哈哈哈 查看完整档案

北京编辑  |  填写毕业院校  |  填写所在公司/组织 www.baidu.com 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

哈哈哈 提出了问题 · 2020-05-08

superMap 的WebGL中绑定点击事件selectedEntityChanged返回值是undefined(vue中)

superMap 的WebGL中给实体S3m的模型(新添加的三维模型小图标)绑定点击事件viewer.selectedEntityChanged.addEventListener点击小图标后返回值是undefined,再点击前做了viewer.selectedEntity=null 且点击非实体图标的其他地方也会触发事件,返回值也是undefined 这是为什么呢?如何解决

关注 1 回答 0

哈哈哈 提出了问题 · 2020-03-14

Echarts柱状图折线图数据为空时会报错

image.png

Echarts数据为空时,会报以上错误,应该如何解决呢?

关注 1 回答 0

哈哈哈 提出了问题 · 2020-03-12

vue route如何获取路由中自己添加的属性?

vue router 如何获取路由中自己添加的属性?

在当前组件中通过this.$route.id获取不到id
要怎么才能获取到呢?

关注 1 回答 1

哈哈哈 收藏了文章 · 2019-08-08

前端硬核面试专题之 HTML 24 问

clipboard.png

1. 前言

本文讲解前端面试的 HTML 的内容。

复习前端面试的知识,是为了巩固前端的基础知识,最重要的还是平时的积累!

注意:文章的题与题之间用下划线分隔开,答案仅供参考。

笔者技术博客首发地址 GitHub,欢迎关注。

2. HTML

为什么利用多个域名来存储网站资源会更有效 ?

确保用户在不同地区能用最快的速度打开网站,其中某个域名崩溃用户也能通过其他域名访问网站。


window 常用属性与方法有哪些 ?

window 对象的常用属性

  • window.self 返回当前窗口的引用
  • window.parent   返回当前窗体的父窗体对象
  • window.top 返回当前窗体最顶层的父窗体的引用
  • window.outerwidth       返回当前窗口的外部宽
  • window.outerheight  返回当前窗口的外部高
  • window.innerwidth       返回当前窗口的可显示区域宽
  • window.innerheight  返回当前窗口的可显示区域高

 
提示:通过直接在 Chrome 控制台中输入 console.log(window) 可以查看到其所有的被当前浏览器支持的属性及值。

window 对象的常用方法

  • window.prompt()   弹出一个输入提示框,若用户点击了“取消”则返回 null
  • window.alert()    弹出一个警告框
  • window.confirm()  弹出一个确认框
  • window.close()  关闭当前浏览器窗口。 有些浏览器对此方法有限制。
  • window.open(uri, [name], [features])  打开一个浏览器窗口,显示指定的网页。name 属性值可以是“_blank”、“_self”、“_parent”、“_top”、任意指定的一个窗口名。
  • window.blur( )    指定当前窗口失去焦点
  • window.focus( ) 指定当前窗口获得焦点
  • window.showModalDialog(uri, [dataFromParent])  打开一个“模态窗口”(打开的子窗口只要不关闭,其父窗口即无法获得焦点;且父子窗口间可以传递数据)

document 常用属性与方法有哪些 ?

document 常见的属性

  • body 提供对 <body> 元素的直接访问。对于定义了框架集的文档,该属性引用最外层的 <frameset>。
  • cookie 设置或返回与当前文档有关的所有 cookie。
  • domain 返回当前文档的域名。
  • lastModified 返回文档被最后修改的日期和时间。
  • referrer 返回载入当前文档的文档的 URL。
  • title 返回当前文档的标题。
  • URL 返回当前文档的 URL。

document常见的方法

  • write():动态向页面写入内容
  • createElement(Tag):创建一个 HTML 标签对象
  • getElementById(ID):获得指定 id 的对象
  • getElementsByName(Name):获得之前 Name 的对象
  • body.appendChild(oTag):向 HTML 中插入元素对象

简述一下 src 与 href 的区别

  • href 是指向网络资源所在位置,建立和当前元素(锚点)或当前文档(链接)之间的链接,用于超链接。
  • src 是指向外部资源的位置,指向的内容将会嵌入到文档中当前标签所在位置;
  • 在请求 src 资源时会将其指向的资源下载并应用到文档内,例如 js 脚本,img 图片和 frame 等元素。

当浏览器解析到该元素时,会暂停其他资源的下载和处理,直到将该资源加载、编译、执行完毕,图片和框架等元素也如此,类似于将所指向资源嵌入当前标签内。这也是为什么将 js 脚本放在底部而不是头部。


写一个 div + css 布局,左边图片,右边文字,文字环绕图片,外面容器固定宽度,文字不固定。

直接就一个 img,它 float:left,加文字加 p 标签就好了。


html 中 title 属性和 alt 属性的区别 ?

  1. alt
<img data-original="#" alt="alt 信息" />

当图片不输出信息的时候,会显示 alt 信息, 鼠标放上去没有信息。
当图片正常读取,不会出现 alt 信息。

  1. title
<img data-original="#" alt="alt 信息" title="title 信息" />

当图片不输出信息的时候,会显示 alt 信息,鼠标放上去会出现 title 信息。
当图片正常输出的时候,不会出现 alt 信息,鼠标放上去会出现 title 信息。---


讲述你对 reflow 和 repaint 的理解。

repaint 就是重绘,reflow 就是回流。

严重性: 在性能优先的前提下,性能消耗 reflow 大于 repaint。

体现:repaint 是某个 DOM 元素进行重绘;reflow 是整个页面进行重排,也就是页面所有 DOM 元素渲染。

如何触发: style 变动造成 repaint 和 reflow。

  1. 不涉及任何 DOM 元素的排版问题的变动为 repaint,例如元素的 color/text-align/text-decoration 等等属性的变动。
  2. 除上面所提到的 DOM 元素 style 的修改基本为 reflow。例如元素的任何涉及 长、宽、行高、边框、display 等 style 的修改。

常见触发场景

触发 repaint:

  • color 的修改,如 color=#ddd;
  • text-align 的修改,如 text-align=center;
  • a:hover 也会造成重绘。
  • :hover 引起的颜色等不导致页面回流的 style 变动。

触发 reflow:

  • width/height/border/margin/padding 的修改,如 width=778px;
  • 动画,:hover 等伪类引起的元素表现改动,display=none 等造成页面回流;
  • appendChild 等 DOM 元素操作;
  • font 类 style 的修改;
  • background 的修改,注意着字面上可能以为是重绘,但是浏览器确实回流了,经过浏览器厂家的优化,部分 background 的修改只触发 repaint,当然 IE 不用考虑;
  • scroll 页面,这个不可避免;
  • resize 页面,桌面版本的进行浏览器大小的缩放,移动端的话,还没玩过能拖动程序,resize 程序窗口大小的多窗口操作系统。
  • 读取元素的属性(这个无法理解,但是技术达人是这么说的,那就把它当做定理吧):读取元素的某些属性(offsetLeft、offsetTop、offsetHeight、offsetWidth、scrollTop/Left/Width/Height、clientTop/Left/Width/Height、getComputedStyle()、currentStyle(in IE));

如何避免: 

  • 尽可能在 DOM 末梢通过改变 class 来修改元素的 style 属性:尽可能的减少受影响的 DOM 元素。
  • 避免设置多项内联样式:使用常用的 class 的方式进行设置样式,以避免设置样式时访问 DOM 的低效率。
  • 设置动画元素 position 属性为 fixed 或者 absolute:由于当前元素从 DOM 流中独立出来,因此受影响的只有当前元素,元素 repaint。
  • 牺牲平滑度满足性能:动画精度太强,会造成更多次的 repaint/reflow,牺牲精度,能满足性能的损耗,获取性能和平滑度的平衡。
  • 避免使用 table 进行布局:table 的每个元素的大小以及内容的改动,都会导致整个 table 进行重新计算,造成大幅度的 repaint 或者 reflow。改用 div 则可以进行针对性的 repaint 和避免不必要的 reflow。
  • 避免在 CSS 中使用运算式:学习 CSS 的时候就知道,这个应该避免,不应该加深到这一层再去了解,因为这个的后果确实非常严重,一旦存在动画性的 repaint/reflow,那么每一帧动画都会进行计算,性能消耗不容小觑。

Doctype 作用 ?标准模式与兼容模式各有什么区别 ?

  • <!DOCTYPE> 声明位于位于 HTML 文档中的第一行,处于 <html> 标签之前。告知浏览器的解析器用什么文档标准解析这个文档。DOCTYPE 不存在或格式不正确会导致文档以兼容模式呈现。
  • 标准模式的排版和 JS 运作模式都是以该浏览器支持的最高标准运行。在兼容模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作。

HTML5 为什么只需要写 < !DOCTYPE HTML> ?

HTML5 不基于 SGML(标准通用标记语言(以下简称“通用标言”),因此不需要对 DTD 进行引用,但是需要 doctype 来规范浏览器的行为(让浏览器按照它们应该的方式来运行);
而 HTML4.01 基于 SGML,所以需要对 DTD 进行引用,才能告知浏览器文档所使用的文档类型。


行内元素有哪些 ?块级元素有哪些 ? 空(void)元素有那些 ?

CSS 规范规定,每个元素都有 display 属性,确定该元素的类型,每个元素都有默认的 display 值。
如 div 的 display 默认值为 “block”,则为“块级”元素;
span 默认 display 属性值为 “inline”,是“行内”元素。

  • 行内元素有:a b span img input select strong(强调的语气)
  • 块级元素有:div ul ol li dl dt dd h1 h2 h3 h4 p
  • 常见的空元素: img input link meta br hr ,鲜为人知的是:area base col command embed keygen param source track wbr

HTML5 有哪些新特性、移除了那些元素 ?如何处理 HTML5 新标签的浏览器兼容问题 ?如何区分 HTML 和 HTML5 ?

HTML5 现在已经不是 SGML(标准通用标记语言)的子集,主要是关于图像,位置,存储,多任务等功能的增加。

新特性

  • 绘画 canvas;
  • 用于媒介回放的 video 和 audio 元素;
  • 本地离线存储 localStorage 长期存储数据,浏览器关闭后数据不丢失;
  • sessionStorage 的数据在浏览器关闭后自动删除;
  • 语意化更好的内容元素,比如 article、footer、header、nav、section;
  • 表单控件:calendar、date、time、email、url、search;
  • 新的技术:webworker, websocket, Geolocation;

移除的元素

  • 纯表现的元素:basefont,big,center,font, s,strike,tt,u;
  • 对可用性产生负面影响的元素:frame,frameset,noframes;

支持 HTML5 新标签

  • IE8/IE7/IE6 支持通过 document.createElement 方法产生的标签,可以利用这一特性让这些浏览器支持 HTML5 新标签,浏览器支持新标签后,还需要添加标签默认的样式。
  • 当然也可以直接使用成熟的框架、比如 html5shim;
<!--[if lt IE 9]>
<script> data-original="http://html5shim.googlecode.com/svn/trunk/html5.js"</script>
<![endif]-->

简述一下你对 HTML 语义化的理解 ?

  • 1、用正确的标签做正确的事情。
  • 2、html 语义化让页面的内容结构化,结构更清晰,
  • 3、便于对浏览器、搜索引擎解析;
  • 4、即使在没有样式 CSS 情况下也以一种文档格式显示,并且是容易阅读的;
  • 5、搜索引擎的爬虫也依赖于 HTML 标记来确定上下文和各个关键字的权重,利于 SEO;
  • 6、使阅读源代码的人对网站更容易将网站分块,便于阅读维护理解。

HTML5 的离线储存怎么使用,工作原理能不能解释一下 ?

在用户没有与因特网连接时,可以正常访问站点或应用,在用户与因特网连接时,更新用户机器上的缓存文件。

原理

HTML5 的离线存储是基于一个新建的 .appcache 文件的缓存机制(不是存储技术),通过这个文件上的解析清单离线存储资源,这些资源就会像 cookie 一样被存储了下来。之后当网络在处于离线状态下时,浏览器会通过被离线存储的数据进行页面展示。

如何使用

  • 1、页面头部像下面一样加入一个 manifest 的属性;
  • 2、在 cache.manifest 文件的编写离线存储的资源;
CACHE MANIFEST
#v0.11
CACHE:
js/app.js
css/style.css
NETWORK:
resourse/logo.png
FALLBACK:
//offline.html
  • 3、在离线状态时,操作 window.applicationCache 进行需求实现。

浏览器是怎么对 HTML5 的离线储存资源进行管理和加载的呢 ?

在线的情况下,浏览器发现 html 头部有 manifest 属性,它会请求 manifest 文件,如果是第一次访问 app,那么浏览器就会根据 manifest 文件的内容下载相应的资源并且进行离线存储。

如果已经访问过 app 并且资源已经离线存储了,那么浏览器就会使用离线的资源加载页面,然后浏览器会对比新的 manifest 文件与旧的 manifest 文件,如果文件没有发生改变,就不做任何操作,如果文件改变了,那么就会重新下载文件中的资源并进行离线存储。

离线的情况下,浏览器就直接使用离线存储的资源。


请描述一下 cookies,sessionStorage 和 localStorage 的区别 ?

  • cookie 是网站为了标示用户身份而储存在用户本地终端(Client Side)上的数据(通常经过加密)。
  • cookie 数据始终在同源的 http 请求中携带(即使不需要),也会在浏览器和服务器间来回传递。
  • sessionStorage 和 localStorage 不会自动把数据发给服务器,仅在本地保存。

存储大小

  • cookie 数据大小不能超过 4k。
  • sessionStorage 和 localStorage 虽然也有存储大小的限制,但比 cookie 大得多,可以达到 5M 或更大。

有期时间

  • localStorage 存储持久数据,浏览器关闭后数据不丢失除非主动删除数据;
  • sessionStorage 数据在当前浏览器窗口关闭后自动删除。
  • cookie  设置的 cookie 过期时间之前一直有效,即使窗口或浏览器关闭。

iframe 内嵌框架有那些缺点 ?

内联框架 iframe一般用来包含别的页面,例如 我们可以在我们自己的网站页面加载别人网站的内容,为了更好的效果,可能需要使 iframe 透明效果;

  • iframe 会阻塞主页面的 onload 事件;
  • 搜索引擎的检索程序无法解读这种页面,不利于 SEO 搜索引擎优化(Search Engine Optimization)
  • iframe 和主页面共享连接池,而浏览器对相同域的连接有限制,所以会影响页面的并行加载。

如果需要使用 iframe,最好是通过 javascript 动态给 iframe 添加 src 属性值,这样可以绕开以上两个问题。


Label 的作用是什么?是怎么用的 ?

label 标签来定义表单控制间的关系,当用户选择该标签时,浏览器会自动将焦点转到和标签相关的表单控件上。

<label for="Name">Number:</label>
<input type=“text“ name="Name"  id="Name"/>

<label>Date:<input type="text" name="B"/></label>

HTML5 的 form 如何关闭自动完成功能 ?

给不想要提示的 form 或某个 input 设置为 autocomplete=off。


如何实现浏览器内多个标签页之间的通信 ? (阿里)

  • WebSocket、SharedWorker;
  • 也可以调用 localstorge、cookies 等本地存储方式;
  • localstorge 在另一个浏览上下文里被添加、修改或删除时,它都会触发一个事件,我们通过监听事件,控制它的值来进行页面信息通信;

注意 quirks:Safari 在无痕模式下设置 localstorge 值时会抛出 QuotaExceededError 的异常;


webSocket 如何兼容低浏览器 ?(阿里)

  • Adobe Flash Socket 、
  • ActiveX HTMLFile (IE) 、
  • 基于 multipart 编码发送 XHR 、
  • 基于长轮询的 XHR。

页面可见性(Page Visibility API) 可以有哪些用途 ?

  • 通过 visibilityState 的值检测页面当前是否可见,以及打开网页的时间等;
  • 在页面被切换到其他后台进程的时候,自动暂停音乐或视频的播放;

网页验证码是干嘛的,是为了解决什么安全问题。

  • 区分用户是计算机还是人的公共全自动程序;
  • 可以防止恶意破解密码、刷票、论坛灌水;
  • 有效防止黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。

title 与 h1 的区别、b 与 strong 的区别、i 与 em 的区别 ?

  • title 属性没有明确意义只表示是个标题,H1 则表示层次明确的标题,对页面信息的抓取也有很大的影响;
  • strong 是标明重点内容,有语气加强的含义,使用阅读设备阅读网络时:strong 会重读,而 b 是展示强调内容
  • i 内容展示为斜体,em 表示强调的文本;
  • Physical Style Elements -- 自然样式标签:b, i, u, s, pre
  • Semantic Style Elements -- 语义样式标签:strong, em, ins, del, code
  • 应该准确使用语义样式标签, 但不能滥用, 如果不能确定时,首选使用自然样式标签。

谈谈以前端的角度出发,做好 SEO ,需要考虑什么 ?

  • 了解搜索引擎如何抓取网页和如何索引网页

你需要知道一些搜索引擎的基本工作原理,各个搜索引擎之间的区别,搜索机器人(SE robot 或叫 web cra何进行工作,搜索引擎如何对搜索结果进行排序等等。

  • Meta 标签优化

主要包括主题(Title),网站描述(Description),和关键词(Keywords)。还有一些其它的隐藏文字比如 Au 者),Category(目录),Language(编码语种)等。

  • 如何选取关键词并在网页中放置关键词

搜索就得用关键词。关键词分析和选择是 SEO 最重要的工作之一。首先要给网站确定主关键词(一般在 5 个上后针对这些关键词进行优化,包括关键词密度(Density),相关度(Relavancy),突出性(Prominency)等等。

  • 了解主要的搜索引擎

虽然搜索引擎有很多,但是对网站流量起决定作用的就那么几个。比如英文的主要有 Google,Yahoo,Bing 等有百度,搜狗,有道等。
不同的搜索引擎对页面的抓取和索引、排序的规则都不一样。
还要了解各搜索门户和搜索的关系,比如 AOL 网页搜索用的是 Google 的搜索技术,MSN 用的是 Bing 的技术。

  • 主要的互联网目录

Open Directory 自身不是搜索引擎,而是一个大型的网站目录,他和搜索引擎的主要区别是网站内容的收集方目录是人工编辑的,主要收录网站主页;搜索引擎是自动收集的,除了主页外还抓取大量的内容页面。

  • 按点击付费的搜索引擎

搜索引擎也需要生存,随着互联网商务的越来越成熟,收费的搜索引擎也开始大行其道。最典型的有 Overture 当然也包括 Google 的广告项目 Google Adwords。越来越多的人通过搜索引擎的点击广告来定位商业网站,这里面化和排名的学问,你得学会用最少的广告投入获得最多的点击。

  • 搜索引擎登录

网站做完了以后,别躺在那里等着客人从天而降。要让别人找到你,最简单的办法就是将网站提交(submit)擎。如果你的是商业网站,主要的搜索引擎和目录都会要求你付费来获得收录(比如 Yahoo 要 299 美元),但是好消少到目前为止)最大的搜索引擎 Google 目前还是免费,而且它主宰着 60% 以上的搜索市场。

  • 链接交换和链接广泛度(Link Popularity)

网页内容都是以超文本(Hypertext)的方式来互相链接的,网站之间也是如此。除了搜索引擎以外,人们也不同网站之间的链接来 Surfing(“冲浪”)。其它网站到你的网站的链接越多,你也就会获得更多的访问量。更重你的网站的外部链接数越多,会被搜索引擎认为它的重要性越大,从而给你更高的排名。

  • 标签的合理使用

前端页面有哪三层构成,分别是什么?作用是什么?

网页分成三个层次,即:结构层、表示层、行为层。

  • 网页的结构层(structurallayer)由 HTML 或 XHTML 之类的标记语言负责创建。

标签,也就是那些出现在尖括号里的单词,对网页内容的语义含义做出这些标签不包含任何关于如何显示有关内容的信息。例如,P 标签表达了这样一种语义:“这是一个文本段。”

  • 网页的表示层(presentationlayer)由 CSS 负责创建。CSS 对“如何显示有关内容”的问题做出了回答。
  • 网页的行为层(behaviorlayer)负责回答 “内容应该如何对事件做出反应” 这一问题。

这是 Javascript 语言和 DOM 主宰的领域。


有这么一段 HTML,请挑毛病

<P> 哥写的不是HTML,是寂寞。< br>< br> 我说:< br>不要迷恋哥,哥只是一个传说

答案:缺少 p 标记的结束标记。


最后

前端硬核面试专题的完整版在此:前端硬核面试专题,包含:HTML + CSS + JS + ES6 + Webpack + Vue + React + Node + HTTPS + 数据结构与算法 + Git 。

如果觉得本文还不错,记得给个 star , 你的 star 是我持续更新的动力!。

clipboard.png

查看原文

哈哈哈 赞了文章 · 2019-07-29

vue项目props传值类型影响:单项数据流及双向数据流

第一:传递string、number等基本数据类型:
在构建vue项目中,props是子组件获取父组件的一种形式;在子组件中不可修改父组件传递的参数,代码如下:
1、父组件代码:

<template>
  <div class="hello">
    <childComponent @touchParentFuc="touchParentFuc" :fatherPassChild="fatherPassChild"></childComponent>
  </div>
</template>

<script>
import childComponent from './childComponent'
export default {
  name: 'HelloWorld',
  components: {
    childComponent
  },
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      fatherPassChild: '父传子'
    }
  },
  methods: {
    touchParentFuc () {
      console.log(this.fatherPassChild)
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

2、子组件代码:

<template>
  <div class="hello">
    <div>这是子组件</div>
    <div>这是父组件的值:{{fatherPassChild}}</div>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: ['fatherPassChild'],
  created () {
    this.touchParentFuc()
  },
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  methods: {
    touchParentFuc () {
      this.fatherPassChild = '888'
      this.$emit('touchParentFuc')
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

注释:
页面展示子组件修改后的值:
“这是子组件
这是父组件的值:888”;
在子组件中,尝试修改父组件传递过来的值,此时chrome控制台会报错:
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop's value. Prop being mutated: "fatherPassChild"
同时,父组件中,打印的字段为修改之前的字段:
父传子 。

第二:传递数组、对象等引用型数据类型:
如果通过props传递引用数据类型,在子组件中改修父组件的属性值,会出现什么情况?撸码如下:
1、父组件代码:

<template>
  <div class="hello">
    <childComponent @touchParentFuc="touchParentFuc" :fatherPassChild="fatherPassChild"></childComponent>
  </div>
</template>

<script>
import childComponent from './childComponent'
export default {
  name: 'HelloWorld',
  components: {
    childComponent
  },
  data () {
    return {
      msg: 'Welcome to Your Vue.js App',
      fatherPassChild: {
        objData: 'my is object'
      }
    }
  },
  methods: {
    touchParentFuc () {
      console.log(this.fatherPassChild)
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

2、子组件代码:

<template>
  <div class="hello">
    <div>这是子组件</div>
    <div>这是父组件的值:{{fatherPassChild.objData}}</div>
  </div>
</template>

<script>
export default {
  name: 'HelloWorld',
  props: ['fatherPassChild'],
  created () {
    this.touchParentFuc()
  },
  data () {
    return {
      msg: 'Welcome to Your Vue.js App'
    }
  },
  methods: {
    touchParentFuc () {
      this.fatherPassChild.objData = 'object is my'
      this.$emit('touchParentFuc')
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
</style>

注释:

此时,页面展示的内容是子组件修改后;同时,控制台并没有报错;why?

按照官网的解释:

注意在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。

简单总结:1、在使用props传递数据的过程中,如果传递的是基本数据类型,则在子组件中不能修改父组件传递过来的值,此时符合vue的单向数据流方式;

2、如果传递的是引用型数据类型,则此时可以在子组件操作父组件传递过来的值,此时数据可以双向通信,违背单向数据流方式。

个人理解:props传递参数不同,导致子组件是否能更改父组件props传递的值;跟const声明变量类似。

查看原文

赞 9 收藏 6 评论 2

哈哈哈 关注了专栏 · 2019-07-25

前端面试每日3+1

前端面试每日 3+1,以面试题来驱动学习,提倡每日学习与思考,每天进步一点!每天早上5点纯手工发布面试题(死磕自己,愉悦大家)

关注 231

哈哈哈 赞了文章 · 2019-07-25

前端面试每日3+1——第100天

今天的面试题 (2019.07.25) —— 第100天

  • [html] HTML5怎么为输入框添加语音输入的功能呢?
  • [css] 如何让大小不同的图片等比缩放不变形显示在固定大小的div里?写出来
  • [js] 分别封装精确运算的加减乘除四个方法
  • [软技能] 你有画过流程图吗?开始和判定分别用什么图形表示?

项目地址: 前端面试每日3+1
【推荐】欢迎跟 jsliang 一起折腾前端,系统整理前端知识,目前正在折腾 LeetCode,打算打通算法与数据结构的任督二脉。GitHub 地址

《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。
前端面试每日3+1题,以面试题来驱动学习,每天进步一点!
让努力成为一种习惯,让奋斗成为一种享受!
相信 坚持 的力量!!!
  • 学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。
  • 希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。
  • 在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)
  • 欢迎大家到Issues交流,鼓励PR,感谢Star,大家有啥好的建议可以加我微信一起交流讨论!
希望大家每日去学习与思考,这才达到来这里的目的!!!(不要为了谁而来,要为自己而来!)

交流讨论

欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎分享!

项目地址: 前端面试每日3+1

查看原文

赞 14 收藏 10 评论 1

哈哈哈 收藏了文章 · 2019-07-25

前端面试每日3+1——第100天

今天的面试题 (2019.07.25) —— 第100天

  • [html] HTML5怎么为输入框添加语音输入的功能呢?
  • [css] 如何让大小不同的图片等比缩放不变形显示在固定大小的div里?写出来
  • [js] 分别封装精确运算的加减乘除四个方法
  • [软技能] 你有画过流程图吗?开始和判定分别用什么图形表示?

项目地址: 前端面试每日3+1
【推荐】欢迎跟 jsliang 一起折腾前端,系统整理前端知识,目前正在折腾 LeetCode,打算打通算法与数据结构的任督二脉。GitHub 地址

《论语》,曾子曰:“吾日三省吾身”(我每天多次反省自己)。
前端面试每日3+1题,以面试题来驱动学习,每天进步一点!
让努力成为一种习惯,让奋斗成为一种享受!
相信 坚持 的力量!!!
  • 学习不打烊,充电加油只为遇到更好的自己,365天无节假日,每天早上5点纯手工发布面试题(死磕自己,愉悦大家)。
  • 希望大家在这浮夸的前端圈里,保持冷静,坚持每天花20分钟来学习与思考。
  • 在这千变万化,类库层出不穷的前端,建议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)
  • 欢迎大家到Issues交流,鼓励PR,感谢Star,大家有啥好的建议可以加我微信一起交流讨论!
希望大家每日去学习与思考,这才达到来这里的目的!!!(不要为了谁而来,要为自己而来!)

交流讨论

欢迎大家前来讨论,如果觉得对你的学习有一定的帮助,欢迎分享!

项目地址: 前端面试每日3+1

查看原文

哈哈哈 收藏了文章 · 2019-07-25

你可能不知道的前端小技巧

这篇文章主要记录一些我在开发工作中踩过的一些坑或者新学到的一些知识。主要分成‘事件’,‘浏览器调试小技巧’,‘其他‘三部分。
==============================一.事件===========================
1.先来看一个有趣的问题。

=======这是html=======

<button onclick="onclick1()">按钮1</button>
<button onclick="onclick()">按钮2</button>
<button onclick="click()">按钮3</button>
========这是js部分=======
function onclick1() {
    console.log('onclick1...');
}
function onclick() {
    console.log('onclick...');
}
function click() {
    console.log('click...');
}

分别点击这三个按钮,猜猜会是什么结果。
答案揭晓:点击按钮1,会正常输出onclick1... 点击按钮2,会报错Uncaught RangeError: Maximum call stack size exceeded。栈溢出了。 点击按钮3,不会报错,也没有任何反应。
所以,如果要给DOM绑定onclick事件,函数名千万别叫click和onclick。当然,如果你用addEventListener来绑定的话就不会存在这个问题了。

2.介绍一组很有用的事件。compositionstart, compositionupdate, compositionend.用来监听中文输入法。顾名思义:一个用来监听开始,一个用来监听更新,一个用来监听结束。如果输入的都是英文不会触发此事件,输入拼音时会触发。
我介绍这个的目的并不是简单的介绍这个事件,而是这里有个小坑。我们都知道,事件监听常用的两种方式,一种是直接给DOM加属性,比如onclick,onblur.另一种是用addEventListener来绑定事件。但是这组事件就很特殊。他们不能使用oncompositionstart,oncompositionupdate,oncompositionend来直接写在DOM中。实测不会生效。只能通过addEventListener来进行绑定。
===========================二.浏览器调试小技巧========================
3.用debugger来代替在文件中打断点的操作。当我们想在某处打断点的时候,往往会去浏览器中先找到这个文件,然后再找到具体哪一行。其实用debugger可以完全替代这个麻烦的操作。只需要在你想让代码停下的地方写一句debugger即可。

4.打条件断点,比如我们想在一个for循环里打断点,我只想看第五次循环时各变量的值,如果我只是在那打个断点的话,每次循环都会停下。那我怎么能解决这个麻烦的问题呢。有两个方法。一:用debugger,只需要在代码中写if (i ==5 ) debugger; 二: 在浏览器中打条件断点。步骤如下图所示:图片描述图片描述图片描述输入完条件之后按回车键。最后会出现一个黄色断点如下图所示。
图片描述

5.用$_来表示上一次的控制台结果。我们经常在控制台写一些简单的测试代码。当需要用到上一次的运行结果时,往往需要再将之前的表达式复制一遍。$_可以完美解决这个问题。
=============================三.其他=====================================
6.0/0结果是NaN。以前学C++时,碰到number/0这样分母为0的情况,都会加try catch来处理。直到有一天我发现,在js中分母为0不会抛出异常,而会得到NaN的结果。

7.行内元素设置rotate无效,需要设置成display:inline-block.有一次我试图给span标签设置旋转角度,发现怎么都不成功。后来查阅资料发现,inline元素设置rotate无效。

8.用data- 给DOM扩展属性。有时候我们需要在节点上存储信息,在js中获取,(我以前干过把信息存为id或title)但是这样违反了id和title本来的作用。H5提供了新的方法,data-XXX。可以供我们自定义,在存储时这样:<div data-name='hison'></div>在js中获取时用div.getAttribute('data-name'),或者用jQuery:$(div).data('name')

9.最快捷的数组求最大值方法:

let arr = [1,2,3,5,5,6,3,4];
let max = Math.max(...arr);

10.如何实现点击任意地方选中某个区域中的文本。通常我们要选中网页中的一段文本,需要双击才可以选中。但有时为了交互体验更好,要做成点击一下即可选中某块区域中的文本。再点击一下即可对所选区域进行编辑。主要用到window.getSelection方法和range的一些方法。

<div id="box">
    <span>这是一段文字</span>
</div>
<button onclick="selectText()">点我选中文字</button>
<script>
if (window.getSelection) {
        //创建一个范围
        var range = document.createRange();
        // 选择一个node放入该范围
        range.selectNode(document.getElementById('box'));
        // 把div变成和input一样可以编辑
        document.getElementById('box').setAttribute('contenteditable',true);
        // 移除掉之前选择好的片段
        window.getSelection().removeAllRanges();
        // 把新建的片段加入到selection中。
        window.getSelection().addRange(range);
    }
</script>

PS:觉得还可以?给点个赞吧!

查看原文

哈哈哈 赞了文章 · 2019-07-25

小程序五星打分组件封装(支持半星)

自定义组件star-score:

star-score.js内容:

Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 是否只读
    disabled: {
      type: Boolean,
      value: false
    },
    // 传入的分值
    val: {
      type: Number,
      value: 0
    },
    // 星星的宽度
    starW: {
      type: Number,
      value: 40
    },
    // 星星的高度
    starH: {
      type: Number,
      value: 40
    }
  },
  /**
   * 组件的初始数据
   */
  data: {
    stars: [0, 1, 2, 3, 4],
    // 图片路径
    starNo: '../../assets/star-no.png',
    starHalf: '../../assets/star-half.png',
    starFull: '../../assets/star-Full.png'
  },
  /**
   * 组件的方法列表
   */
  methods: {
    // 选中半颗星
    _selectHalf(e) {
      let val = e.currentTarget.dataset.val
      if (this.data.val == 0.5 && e.currentTarget.dataset.val == 0.5) {
        // 只有半颗星的时候,再次点击,变为0颗
        val = 0;
      }
      this.setData({
        val: val
      })
      // 向父组件传值
      this.triggerEvent('_selectStar', this.data.val)
    },
    // 选中满星
    _selectFull(e) {
      let val = e.currentTarget.dataset.val
      this.setData({
        val: val
      })
      // 向父组件传值
      this.triggerEvent('_selectStar', this.data.val)
    }
  }
})

star-score.wxml的内容:

<!-- 五星打分组件 -->
<view>
  <block wx:for="{{stars}}" wx:key="{{index}}">
    <image class="star-image" 
           style="width: {{starW}}rpx; height: {{starH}}rpx;"
           data-original="{{val > item ? (val-item < 1 ? starHalf : starFull) : starNo}}">
      <view class="item" 
            style="left: 0rpx; width: {{starW}}rpx; height: {{starH}}rpx;" 
            data-val="{{item+0.5}}" 
            bindtap="{{disabled ? '' : '_selectHalf'}}"></view>
      <view class="item" 
            style="left: {{starW/2}}rpx; width: {{starW}}rpx; height: {{starH}}rpx;" 
            data-val="{{item+1}}" 
            bindtap="{{disabled ? '' : '_selectFull'}}"></view>
    </image>
  </block>
</view>

star-score.wxss的内容:

.star-image{
  position: relative;
}
.item{
  position: absolute;
  top: 0;
}

调用自定义组件star-score:

// 可选配置disabled、 starW、 starH
<star-score val="{{3}}"></star-score>

星星素材图

图片描述

图片描述

图片描述

查看原文

赞 9 收藏 8 评论 0

认证与成就

  • 获得 31 次点赞
  • 获得 8 枚徽章 获得 0 枚金徽章, 获得 1 枚银徽章, 获得 7 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2018-12-05
个人主页被 663 人浏览