序:
为什么取名叫每日精进?
缘由:公司里每天的日报有一项叫做“每日精进”,当时没什么好写的,平时工作中遇到的问题解决后,也不觉得是太大的问题,没必要记录下来。
疫情来后,社会充斥着“娱乐至上,视频为王”的态势,娱乐至死,学习无用论。
玩乐终有无聊的时候,正是这个契机,决定了我开始重新写博客了,把自己的所学所见呈现出来。
一: javascript发展史:
诞生于2005年,第一版的名称叫LiveScript,起初它的主要目的是处理以前由服务器端负责处理的一些表单验证。Netscape公司为了搭上“媒体热炒Java”的顺风车,临时将LiveScript更名为Javascript,所以从本质上说,Javascript和Java并没有什么关系。
解读:早期前端调试最钟爱的浏览器是火狐,fireFox,Netscape公司出品,最近几年才换成Google浏览器。
1997年,以JavaScript1.1为蓝本的建议被提交给了欧洲计算机制造商协会(European Computer Manufactures Association, ECMA),该协会制定39号技术委员会(TC39)负责将其标准化,第二年,国际标准化组织和国际电工委员会(ISO/IEC)也采用了ECMAScript作为标准,即ISO/IEC-16262。直到2009年ECMAScript5语言标准发布,该标准才逐渐被大家熟知。
解读:以前学习原生Javascript的途径,其中一个就是多浏览在线MDN(ECMAScript),里面有详细的api和示例。
2009年,Node.js横空出世,开启Javascript用于后端领域编程的新时代!2015年ECMAScript6(简称ES6)语言标准发布,目前Nodejs6.x以上的版本几乎可以支持ES6中90%以上的特性。
解读:有了ES6,使Nodejs开发如虎添翼,可以编写更加复杂,适用度更高的产品。
二:
什么是Node.js:
1. Node.js是Javascript的运行时环境。
2. Node.js构建在ChromeV8的Javascript引擎之上,ChromeV8引擎是通过C或C++编写的,相当于要将JavaScript转换成底层的C或C++代码后再执行,通过Javascript这层包装,大大降低了偏底层的编程语言的学习成本。
3. Node.js是轻量且高效的,每个函数都是同步的,而I/O操作是异步的。所有由JavaScript编写的函数的I/O操作最终都将由libuv(由C或C++编写)事件循环处理库来处理,隐藏了非堵塞I/O的具体细节,简化了并发编程模型,可以轻松编写高性能的Web应用。
4. Node.js使用npm作为包管理器。
三:
Node.js原理:
在解决并发问题方面,异步是最好的方案。我们可以类比排队和叫号机制来理解。在排队的时候,除了等待我们什么都做不了。但如果有叫号机制,我们就能先取好吗,等轮到自己的时候,系统会发出通知。这中间,我们可以做其他事。
Node.js其实就是帮我吗构建了类似的机制。写代码的过程实际上就是取号过程,有事件循环来接受处理,而真正执行操作的事具体的线程池中的I/O任务。之所以说Node.js是单线程的,是因为它在接受任务的时候是单线程的,无需切换进程/线程,非常高效,但它在执行具体任务的时候是多线程的。
四:
应用场景:
1. 静态API:
以往的传统软件工程模式,后端不给API结构,前端人员址鞥呢切切图,什么都做不了。
流程改进后,在需求讨论阶段,在给出UE原型图之后,依照静态API,前端就可以开发了。
2. 现代Web开发:
2.1 预处理器:
1. 模版引擎: Mustache、EJS、Jade
2. css预处理器: Less、Sass、Scss、Rework、PostCss
3. Javascript方言: CoffeeScript、Typescript
2.2 跨平台: H5端、PC端、移动端、物联网
3. 构建工具: Jake、Grunt、Gulp、WebPack + npm scripts
今天先讲这么多,每日精进,为了成为更好的自我。