最典型的场景就是插件,比如 A 模块是 B 模块的插件。用户安装的 B 模块是 1.0 版本,但是 A 插件只能和 2.0 版本的 B 模块一起使用。这时,用户要是将 1.0 版本的 B 的实例传给 A,就会出现问题。因此,需要一种机制,在模板安装的时候提醒用户,如果 A 和 B 一起安装,那么 B 必须是 2.0 模块。
// 没对应上 if (isUndef(idxInOld)) { // New element api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm!); newStartVnode = newCh[++newStartIdx];
// sel 是否相等(sameVnode 的条件) if (elmToMove.sel !== newStartVnode.sel) { // New element api.insertBefore(parentElm, createElm(newStartVnode, insertedVnodeQueue), oldStartVnode.elm!);
Web 标准是由各大标准组织制定,由浏览器和其他 Web 底层框架或工具来实现,再提供给开发者能以最小成本开发适用于多平台的 Web 应用,这些标准是我们能访问无数网站的前提。
Web 标准计划
在 Web 发展的早期,浏览器各自为政,技术无一致实现,这直接损害了设计师、开发者、用户和行业的利益。为了解决这些问题,Web 标准计划 (Web Standards Project, WaSP) 于 1998 年成立,目标便是促进核心的 Web 标准的推广,鼓励浏览器对标准的支持,为大家寻求一条简单而便利之路。 得益于前人努力,如今的现代浏览器表现已经越来越一致,进而催生出更多标准,有了这些标准我们可以开发出体验更好的 Web 应用。 这个是所有浏览器相关的技术标准: The Web platform: Browser technologies,从中能了解到健全发展的 Web 技术生态。
Web 标准组织
W3C
W3C 组织为 Web 开发领域提出了很多建议,比如为 XHTML、XML、DOM、CSS 和 Web API 等技术实现提出了建议。你可能会注意到为什么说是提出建议,而不是标准呢?那是因为 W3C 自认为不是标准组织,他们只是组织了 Web 相关领域的专家,这些专家组成一支工作小组,工作小组就如何实现 Web 技术提出建议。尽管 W3C 对其建议的实现方案没有任何强制权力,但他们大多数的建议都被视为事实上的标准。 W3C 组织关注 DOM、CSS、HTTP、媒体、性能、安全、图形学、可访问性和用户隐私等方方面面的技术,在这里可以搜索相关技术: All Standards and Drafts。 从 W3C 组织成员的工作手册可以看到,一项技术从提出到成为标准,需要经过 4 个阶段。
随着互联网的高速发展,信息安全问题已经成为企业最为关注的焦点之一,而前端又是引发企业安全问题的高危据点。 在移动互联网时代,前端人员除了传统的 XSS、CSRF 等安全问题之外,又时常遭遇网络劫持、非法调用 Hybrid API 等新型安全问题。当然,浏览器自身也在不断在进化和发展,不断引入 CSP、Same-Site Cookies 等新技术来增强安全性,但是仍存在很多潜在的威胁,这需要前端技术人员不断进行“查漏补缺”。
常见的攻击方式
XSS(跨站脚本攻击 Cross-Site Scripting)
反射型
漏洞原理
应用程序或API包括未经验证和未转义的用户输入,直接作为HTML输出的一部分。
一个成功的攻击可以让攻击者在受害者额的浏览器中执行任意的HTML和javascript
特点
非持久化,必须用户点击带有特定参数的链接才能引起
影响范围是仅执行脚本的用户
攻击步骤
攻击者构造出特殊的 URL,其中包含恶意代码。
用户打开带有恶意代码的 URL 时,网站服务端将恶意代码从 URL 中取出,拼接在 HTML 中返回给浏览器。