对HTML5标签的一些思考

还记得在春招的时候,某面试官让我手写代码,其中HTML部分我用了header、section、footer等HTML5标签,写完之后就发问了:为什么要用HTML5标签呀?当时我就回答了一个语义化,然后就没然后了。
现在想起真是羞愧。再看HTML5标签,已经不似当年单纯,就仿佛看山不像山,看水不像水一样。
目前只要是前端团队比较厉害一点的,项目里总是离不开三大框架的身影,不论是V、A还是R,都始终贯穿着一个组件化的思想。而这个组件化的基础,就是HTML5标签。
HTML5标签,是组件,却更像是一种数据结构,它其中的内涵,以及设计思想和规范上来说,真是从众多解决方案里脱胎而得到的。举个例子,如果浏览器不支持HTML5标签,那就只能自己来造了,有一个库html5shiv,短短几百行代码完美诠释了HTML5的魅力。就拿这个创建自定义元素的函数来说,创建了一个相应的节点后,其实就等于创建了一个新的组件,或者说数据结构。

/**
* returns a shived element for the given nodeName and document
* @memberOf html5
* @param {String} nodeName name of the element
* @param {Document} ownerDocument The context document.
* @returns {Object} The shived element.
*/
  function createElement(nodeName, ownerDocument, data){
    if (!ownerDocument) {
        ownerDocument = document;
    }
    if(supportsUnknownElements){
        return ownerDocument.createElement(nodeName);
    }
    data = data || getExpandoData(ownerDocument);
    var node;
                                     
    if (data.cache[nodeName]) {
        node = data.cache[nodeName].cloneNode();
    } else if (saveClones.test(nodeName)) {
        node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
    } else {
        node = data.createElem(nodeName);
    }                          
    // Avoid adding some elements to fragments in IE < 9 because
    // * Attributes like `name` or `type` cannot be set/changed once an element
    // is inserted into a document/fragment
    // * Link elements with `src` attributes that are inaccessible, as with
    // a 403 response, will cause the tab/window to crash
    // * Script elements appended to fragments will execute when their `src`
    // or `text` property is set
    return node.canHaveChildren && !reSkip.test(nodeName) ? data.frag.appendChild(node) : node;
  }

定义完之后,就是在这个新的标签元素里添加一些属性、方法了。和大学时课程上定义一个数据结构简直有异曲同工之妙。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 178,913评论 25 709
  • HTML5 标签comment 注释标签用于在源文档中插入注释。注释内容不会被浏览器显示。为代码编写注释的好处是...
    才気莮孒阅读 4,235评论 1 25
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,534评论 19 139
  • 中国工程院院士、南京军区南京总医院副院长黎介寿在首届全国“临床营养与护理论坛”中指出:我国住院病人营养支持严...
    张晓蓉营养师阅读 556评论 0 2
  • 她以为爱情可以拯救绝望的生命,一起听风看雨沐浴阳光,陪伴是最长情的告白。 他能给的最好的爱情是给她应有的自由,飞向...
    荷风雅颂阅读 241评论 0 0

友情链接更多精彩内容