金沙国际官网_金沙国际平台登录

因为这个金沙国际官网_金沙国际平台登录网站与很多的大型澳门赌场都有合作,金沙国际官网_金沙国际平台登录尽职尽责,高效执行,保持好奇心,不断学习,追求卓越,点击进入金沙国际官网_金沙国际平台登录马上体验吧,所以现在也正式地开始了营业。

您的位置:金沙国际官网 > web前端 > 历史演变与Normalize,不同Node版本导致的Date构造函

历史演变与Normalize,不同Node版本导致的Date构造函

发布时间:2019-10-31 17:44编辑:web前端浏览(179)

    关于CSS Reset那些事(1):历史演变与Normalize.css

    2015/08/01 · CSS · CSS Reset, Normalize.css

    原文出处: Alsiso   

    不同Node版本导致的Date构造函数问题及解决方法

    2018/07/06 · JavaScript · Date

    原文出处: 康建云   

    近期在封装时间选择组件的单元测试时,为了构造出Date对象,直接使用了默认Date构造函数。自己本地开发,测试均无问题,push远程后,某个小伙伴在本地跑测试用例时,却无法通过,具体报错如下:

    图片 1

    通过截图信息,可以初步判断由于Date构造函数返回了不同日期导致,抱着好奇的态度查阅个各种资料后,竟然发现一个小小的日期构造函数里面大有文章,平时自己写起来都是浅尝辄止,没有深入了解过。下面将详细介绍这个破案过程,以免各位看客后续重蹈覆辙。

    塑造2010年的网页设计行业的那些事

    2011/01/13 · HTML5 · HTML5

    导读:原文由王五翻译,已修正原译文中的一些误译之处。以下是全文。

    在2009年末,我曾坐下来考虑网页设计会向何处发展,当时发生的一切又将走向何方。我提起笔来(确切地说,我是坐在键盘前)写下了《2010年塑造Web的五项科技》,力图总结正在推动我们这个行业发展的科技趋势和行业发展的方向。为了真实的反映过去一年所发生的事,我在本文会讨论一些塑造了2010年网页设计行业的科技和趋势。

    新的标记标准:CSS3 和HTML5

    毫无疑问,在2010年中标记标准有巨大的发展。W3C理事会曾建议在几年之后最终确定CSS3和HTML5语言的地位(原本预计HTML5的地位最终会在2022年确立),可它们却已迅速成为新的标准。

    图片 2

    幸运的是。和IE9一样,当今的浏览器如Safari、Chrome、 Opera、 Firefox,都意识到了CSS3和HTML5对于移动平台和传统电脑桌面的的价值。它们都进了一步,将CSS3和HTML5投入应用,而不再只是做为样本。

    对我而言,当看到2010出版的相关书籍,不少关于CSS3和HTML5的文章标题,如《无情的网页设计业》, 《网页设计者的CSS3》和 《网页设计者的HTML5 》时,我能总能感觉到一些更为切实和权威的意味——这只是冰山的一角。

    图片 3

    伴随对新语言的性能进行的无数实验和概念验证,网站设计者和浏览器供应商有了新的觉悟,这也把他们引入了主流。

    也许开始赢得众多怀疑论者的是这些新规范在IE9中的应用——在最常用的浏览器中的重新运用——结果很受欢迎。微软浏览器的标准基于(大部分)其它浏览器供应商正在使用的标准,这意味着CSS3和HTML5在现今的项目中还是可以用的。

    图片 4

    IE9或许还不能支持CSS3和HTML5的所有特性,如你在谷歌浏览器和火狐浏览器中所看到的那样,但微软的工程师的确已经做出了很大转变,朝正确方向的转变。

    即使在得到各种浏览器的全面支持之前,JavaScript助手资源库也扮演了很重要的角色,使得我们可以使用新CSS和HTML的特性。开放源代码项目如:Modernizr,HTML5 shiv, 和 HTML5 Boilerplate继续帮助网页设计者和网络开发者通过这些新的标记语言标准日益提升其产品的性能,同时又能迎合那些已经过时的浏览器。

    网页排版

    图片 5

    使用CSS @font-face规则排版对网页设计也有很大的帮助。新的网络服务如Google Font API 和Font Deck,以及原有的TypeKit使得设计者可以跳出原来少量的网络安全字体的限制而有了更多的选择。

    移动互联网

    图片 6

    2010年1月17日,苹果公司发布了iPad。iPad、笔记本电脑、MacBook Air和Android smartphones之类的超级便携电脑,使浏览器脱离了传统的静态桌面,转向沙发、机场休息室、火车及公园长凳上,实际上可以说是所有能接收无线网络信号的地方。

    另一方面,去年有许多关于CSS3设计网页的讨论(和更多的应用)方面的媒体调查和反馈,使设计的网站可以在多种不同的平台展示。

    通过设计iPad应用程序、设计现有网站的易用的移动版本、使用平果软件开发工具包设计iPhoner应用程序或利用开放的技术即设计HTML5 语言的iPhone程序, 很多设计者已经进入移动网络领域。

    社交网络

    2010年网络社交继续发展,甚至还有一部关于网络社交的电影!毋庸置疑现在网络社交比任何时候都要流行。对很多人而言,Facebook就是因特网。

    我们已经看到了网络社交的文化效应,如某人网上的推特,还有Gap,这个国际大公司在Twitter和Facebook用户公开批评其选择后改换了公司标志。

    有人说,并不是所有的网络社交理念都实现了, Google Wave做到了,谁不同意?

    JavaScript

    如果我问你在去年JavaScript做为一种标记语言发生了哪些变化,你或许发现并没有多少。新的JavaScript在开发方面的进展有些让人失望,尽管ECMAScript 5让人看到了JS引擎在现代浏览器中局部地应用(如FireFox)。

    无论怎样,在去年通过做为CSS3和HTML5的业务引擎,JavaScript已为网页设计者和网络开发者所熟悉。JavaScript是HTML5中许多令人兴奋的功能的驱动程序, 如canvas的APIs, 音频, 视频, 网络存储等。我们可以看到服务器端面脚本语言在项目中的应用(如node, JS)使客户端和服务器端和服务器端面实现无缝对接。

    简而言之,JavaScrip比以往更流行了。Promote JS之类的项目对做到更好的文件编制有所助益并且激发了对JavaScript的讨论。

    2010年下半年涌现出大量的新的JavaScript的博客,同时原有的博客的关注度也大为提高。JavaScript周刊等通讯刊物高调报道了关于JavaScript的相关新闻。

    图片 7

    JavaScript在新闻报道中被提及的次数较之2010年以前大为增加(通过Google Trends 的统计可以看出),这一数据证明了JavaScript在主流设计领域中正日益流行。

    原文:sixrevisions  译文:王五

     

    赞 收藏 评论

    图片 8

    前言

    近期在翻阅陈旧的历史资料,整理之前饱受争议的CSS Reset问题,不过好像十多年过去,现在大家统一了口径,纷纷推荐使用Normalize.css,包括Bootstrap都进行了内置使用,可见它的认可程度之高。

    由于文章涉及内容较多,会分为系列文章

    第一章
    整理CSS Reset历史的演变痕迹,从第一份CSS Reset的诞生,到提出No CSS Reset的思想,再到国产CSS Reset 1.0骄傲的诞生;最终时过境迁,CSS Reset被Normalize.css所替代;
    随后开始认识Normalize.css,了解它都做了那些事情,诉说与CSS Reset的区别,突出优势,告诉你为什么要使用它。

    第二章
    由于Normalize.css只提供了英文文档,没有提供对应的中文版本,所以从这章开始对其源码进行翻译整理与解读,本章包含 html与body,HTML5元素,链接,语义化文本标签,内嵌元素,群组元素等内容解读。

    第三章,
    继续来介绍源码中的表单和表格部分,并且整理一份normalize-zh.css中文注释的版本上传至Github,供大家参考使用,敬请期待

    问题排查

    按照一贯做法,出问题后先自己本地跑了一次测试用例,没有任何问题,初步就可以定位是开发环境问题。于是乎就看了下小伙伴nodejs版本号,版本号为6.10.0,而自己本地node版本号为10.3.0,于是在不同nodejs命令行下直接执行如下测试用例。

    JavaScript

    const defaultDate = new Date('1995-12-17T03:24:00'); console.log(defaultDate.toString());

    1
    2
    3
    const defaultDate = new Date('1995-12-17T03:24:00');
     
    console.log(defaultDate.toString());

    执行结果,

    Node 6.10.0:

    JavaScript

    > const defaultDate = new Date('1995-12-17T03:24:00') > console.log(defaultDate.toString()) Sun Dec 17 1995 11:24:00 GMT +0800(中国标准时间)

    1
    2
    3
    4
    > const defaultDate = new Date('1995-12-17T03:24:00')
    > console.log(defaultDate.toString())
     
    Sun Dec 17 1995 11:24:00 GMT +0800(中国标准时间)

    Node 10.3.0:

    JavaScript

    const defaultDate = new Date('1995-12-17T03:24:00') undefined console.log(defaultDatae.toString()) Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间)

    1
    2
    3
    4
    const defaultDate = new Date('1995-12-17T03:24:00')
    undefined
    console.log(defaultDatae.toString())
    Sun Dec 17 1995 03:24:00 GMT+0800 (中国标准时间)

    到此基本确认了该问题是由Nodejs环境导致的问题。但是为什么会有这样的问题呢,跟着我继续深入探秘下Date构造函数。

    CSS Reset 历史回顾

    深入分析

    结合问题,提炼出以下小示例,以供深入分析Date构造函数:

    JavaScript

    var d1 = new Date("1995/12/17 00:00:00"); var d2 = new Date("1995-12-17T00:00:00"); var d3 = new Date("1995-12-17T00:00:00Z"); console.log(d1.toString()); console.log(d2.toString()); console.log(d3.toString());

    1
    2
    3
    4
    5
    6
    var d1 = new Date("1995/12/17 00:00:00");  
    var d2 = new Date("1995-12-17T00:00:00");
    var d3 = new Date("1995-12-17T00:00:00Z");
    console.log(d1.toString());
    console.log(d2.toString());
    console.log(d3.toString());

    nodejs 10.3.0执行结果:

    JavaScript

    > console.log(d1.toString()); Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间) > console.log(d2.toString()); Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间) > console.log(d3.toString()); Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

    1
    2
    3
    4
    5
    6
    > console.log(d1.toString());
    Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
    > console.log(d2.toString());
    Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
    > console.log(d3.toString());
    Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

    nodejs 6.10.0执行结果:

    JavaScript

    > console.log(d1.toString()); Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间) > console.log(d2.toString()); Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间) > console.log(d3.toString()); Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

    1
    2
    3
    4
    5
    6
    > console.log(d1.toString());
    Sun Dec 17 1995 00:00:00 GMT+0800 (中国标准时间)
    > console.log(d2.toString());
    Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)
    > console.log(d3.toString());
    Sun Dec 17 1995 08:00:00 GMT+0800 (中国标准时间)

    为什么在不同环境下Nodejs的解析行为不一样呢?这就要提下JS中涉及到时间的相关规范了。

    第一份 CSS Reset

    为什么会有CSS Reset的存在呢?那是因为早期的浏览器支持和理解的CSS规范不同,导致浏览器在渲染页面时效果不一致,出现很多兼容性问题。 关于 浏览器的默认样式 请点击查阅!

    根据玉伯的文章中透漏,最早的一份CSS Reset来自Tantek 的undohtml.css,从URL中的日期可以看出时间是2004年,Tantek根据自身需要对于一些标签进行了简单的重置,源码如下:

    CSS

    /* undohtml.css */ /* (CC) 2004 Tantek Celik. Some Rights Reserved. */ :link,:visited { text-decoration:none } ul,ol { list-style:none } h1,h2,h3,h4,h5,h6,pre,code { font-size:1em; } ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote, fieldset,input{ margin:0; padding:0 } a img,:link img,:visited img { border:none } address { font-style:normal }

    1
    2
    3
    4
    5
    6
    7
    8
    9
    /* undohtml.css */
    /* (CC) 2004 Tantek Celik. Some Rights Reserved.             */
    :link,:visited { text-decoration:none }
    ul,ol { list-style:none }
    h1,h2,h3,h4,h5,h6,pre,code { font-size:1em; }
    ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,
    fieldset,input{ margin:0; padding:0 }
    a img,:link img,:visited img { border:none }
    address { font-style:normal }

    相关规范

    ISO8601标准[参考5]

    该标准指定了如果为指定偏移时间就默认为当前时间。

    图片 9

    [ES5 规范][参考6]

    指出了如果没有指定偏移量,默认偏移量为Z。

    图片 10

    [ES6 规范][参考7]

    为了和ISO8601标准一致,又对该规范做了更改,如果时区偏移量不存在,日期时间将被解释为本地时间。

    图片 11

    CSS Reset 核心代码与作用

    随后加入到CSS RESET的行列的大牛越来越多,比如业界领袖 YUI团队 以及Eric Meyer把这份CSS Reset变的更加充实,但是大家不难发现代码的核心部分还是重置,从此可以结论出早期的CSS Reset的作用就是清除所有浏览器默认样式,让它一切归零!

    CSS

    * { margin:0; padding:0 }

    1
    * { margin:0; padding:0 }

    不过在此之后一段时间,有人开始批判这种暴力清零的CSS Reset方式,随后部分前端开发者们也传来一些争议声音,比如:

    1. *{ margin:0; padding:0; }会带来性能问题
    2. 使用通配符存在隐性问题
    3. 过渡的标签重置等于画蛇添足
    4. 过渡的标签重置导致语言元素失效

    注:由于都是一些陈旧的老问题,就不提供出处了,再此不过多讨论,感兴趣Google~

    源码分析

    为了确认该问题是由于不同规范导致的,我们就需要看下V8源码里面的实现了。 获取不同node版本对应的v8版本号,如下图所示:

    JavaScript

    //node 10.3.0 > process.versions.v8 '6.6.346.32-node.9' //node 6.10.0 > process.versions.v8 '5.1.281.93'

    1
    2
    3
    4
    5
    6
    7
    //node 10.3.0
    > process.versions.v8
    '6.6.346.32-node.9'
     
    //node 6.10.0
    > process.versions.v8
    '5.1.281.93'

    查看 v8 的不同版本下git提交记录可看到在6.6版本上已经增加了对ES6规范的支持 ,实现了如果时区偏移量不存在,日期时间将被解释为本地时间的效果。

    图片 12

    本文由金沙国际官网发布于web前端,转载请注明出处:历史演变与Normalize,不同Node版本导致的Date构造函

    关键词: