node学习笔记(连载)

这段时间玩了小程序、浏览器插件、koa建站,原本想写几篇文章总结一下的。迫于工做上有新需求要跟进,因此先写写读书笔记吧。公司九点上班,不过弹性工做时间,你们基本上九点半以前到。而我做为渣渣,八点半就到公司。来干什么呢?看一下子书,多学学准没错。css

最近在看一本名为《Node.js 开发指南》。下面是个人我的读书笔记,仅做为之后温故的时候用。下面以时间为节点进行记录。html

 

2017-09-27:node

  异步式 I/O 与 事件驱动:Node.js最大的特色就是采用异步式I/O与事件驱动的架构设计。传统的架构是多线程模型,也就是为每一个业务逻辑提供一个系统线程,经过系统线程切换来弥补同步式 I/O 调用时的时间开销。Node使用的是单线程模型,对于全部的I/O都采用异步式的请求方式,避免繁琐的上下文切换。Node在执行过程当中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每一个异步式I/O请求完成后会被推送到事件队列,等待程序进程进行处理。mongodb

  举个🌰:数据库

  一个简单的数据库查询操做,按照传统的方式:小程序

  res = db.query('SELECT * from some_table');浏览器

  res.output();网络

  Node方式:多线程

  db.query('SELECT * from some_table', function(res) {res.output();});架构

  分析: 传统的方式确定会形成线程的阻塞,等待数据库返回查询结果以后才会继续执行下面的代码。数据库的查询可能涉及磁盘读写、网络通讯等。延时可能会有几百毫秒,高并发的状况下,线程长期阻塞等待,为了应付新请求要不断的增长线程,会浪费大量的系统资源,线程的增多会占用大量的CPU时间来处理内存上下文的切换。

     Node会在第二个参数放入回调函数。进程在执行到db.query的时候,不会等待结果返回,继续往下执行,直到进入事件循环。当数据库查询结果返回的时候,会将事件发送到队列,等到线程进入事件循环之后,才会调用以前的回调函数。

2017-09-28:

  今天我发现了一件事情,就是这本node书特么是2012年写的,惊了宝贝。。。我就是在公司书架上看到的一本,随手一拿。不经感慨node这几年发展的速度之快,2012年的时候跟如今2017年变化仍是很大的,里面说到了node解决异步的问题能够用async这个包,如今node更新至8.6.0,早已将async await更新进去了。在我开发的项目中已经用上了这个方法,抛弃了以前的 * yeild形式。

  最近在作公司的官网,主要是切图为主,别看简单的切图。。。设计师想出的动效却是一套一套的。。。一个一个给他作了,发现css有不少有趣的东西是我以前没有触及的,有机会的话,仍是要把css系统的再过一遍,张鑫旭慕课网的教程仍是不错的。你们有兴趣能够去慕课网搜一下。溜溜球~~~

2017-10-09: 

  国庆回家八天没敲代码,手感都生疏了。。。。

  今天试着用koa搭建个网站,试着连一下mongo(都是跑在本地的)。记录一下步骤和心得,以避免以后忘记了。

  首先固然是要去mongo的官网下载数据库https://www.mongodb.com/,我是折腾了半天才搞出来,网上不少教说是用brew装,我嫌麻烦就直接去官网下了。下载过来以后进入安装目录,找到mongod.exe对应的文件夹,在控制行输入 ./mongod,数据库就在本地跑起来了,跑起来以后能够去下载一个数据库可视化工具studio 3t(之前叫mongochef),非商业版免费。而后打开这个软件建立链接,端口默认是27017,本身给数据库取个名字。

  在程序例面经过mongoose这个包去操做数据库,如图:链接数据库

      

  链接成功以后,能够去看看mongoose建立表结构和模型的文档。http://mongoosejs.com/docs/guide.html

  表结构就是数据库表字段的字段类型,以下

  

  模型其实就是定义数据表的意思,建立模型的时候要引入表结构(Schema)做为参数,以下

  

  模型被某个模块引入的时候,它其实就是一个构造函数,new出来的实例都拥有构造函数里的方法,以下

  

  当你运行这段代码的时候,数据库写入了相应的字段,以下

  

相关文章
相关标签/搜索