背景:因为appium是基于Node.js的,所以想看一下Node.js。但是发现很多资料的顺序看起来有点颠倒。然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用。
本文不包含node.js的基本语法。node.js的基本语法和JavaScript基本一样,可以以后再单独整理一份基本语法的。
 
Node.js是一个基于chrome V8的JavaScript运行时的环境
Node.js是事件驱动,非阻塞式I/O模型
Node.js使用npm包管理器
使用Node.js不仅实现了一个应用,也实现了整个HTTP服务器,所以不需要单独搭建Apache或nginx
 
 
Node.js安装
mac下安装方法
brew install node
 
查看node.js的版本
node -v
 
查看包管理工具npm版本
npm -v
 
进入node.js的交互式解释器
node
交互式解释器和python的类似。可以输入命令实时查看输入结果
 
npm的使用
npm随着node一起被安装
npm允许用户从NPM服务器下载并安装第三方包,也允许将自己编写的包上传到第三方服务器,类似python的pip
 
npm安装命令
npm install 【包名】
安装的包放在工程目录的node_modeles目录下,例如mac上是在/usr/local/lib/node_modules文件夹下
安装好的包在代码中通过require("包名")来引用
 
安装的包模块的目录下有package.json,文件包含了包名、依赖包列表(npm安装时会将依赖表中的包自动安装)
 

Package.json 属性说明

  • name - 包名。

  • version - 包的版本号。

  • description - 包的描述。

  • homepage - 包的官网 url 。

  • author - 包的作者姓名。

  • contributors - 包的其他贡献者姓名。

  • dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。

  • repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。

  • main - main 字段是一个模块ID,它是一个指向你程序的主要项目。就是说,如果你包的名字叫 express,然后用户安装它,然后require("express")。

  • keywords - 关键字
(属性转自菜鸟教程)
 
npm卸载命令
npm uninstall 【包名】
 
更新模块
npm update 【包名】
 
搜索模块
npm search【包名】
(从包管理中心搜索包含该关键词的包)
 
更改npm下载的地址为国内的仓库
有些包下载较慢,可以切换到国内的仓库
npm config list(查看npm的一些配置项)
npm config set registry cnpmjs.org(更改仓库为cnpmjs.org)
 
首次更改仓库后,会创建一个~/.npmrc文件,里面内容为“registry="https://registry.npm.taobao.org "”
如果想切回到原来的下载中心,可以将~/.npmrc中的registry注释掉或删掉。
 
Node.js引入其他模块
通过require()引入其他模块
引入npm下载的第三方模块
require("模块名")
 
引入本地某一路径下的模块(实际就是.js文件,引用时不需要后缀)
require("路径/模块名")
例如引入当前目录的hello.js模块:require("./hello")
 
Node.js的函数
Node.js中一个函数可以作为另一个函数接收参数,通过关键字function定义函数
定义方式:function 函数名(参数){要执行的内容}
 
function say(word){console.log(word)} \\定义一个名字为say的函数,参数为word
say("hi") \\调用函数say,并传递参数word为hi
 
在函数做为参数传递时,也可以定义一个匿名函数(不取函数名,直接function(参数){要执行的内容})直接传递给函数
function exe(name,value){name(value)} \\定义一个函数exe
exe(function(value){console.log(value)},"wow,see it!")  \\执行exe()时,传递的第一个参数是一个匿名函数
 
Node.js的事件
Node.js是单进程单线程应用程序,通过事件和回调来支持并发(Node.js所有的API都通过回调实现了异步)
Node.js中所有事件都是用观察者模式实现的
Node.js中大部分的模块都继承自Event模块(Event模块是一个简单的事件监听器模式的实现)
 
Node.js可以通过引入events模块,并通过实例化EventEmitter类来绑定和监听事件。
绑定事件及事件的处理函数:eventEmitter.on("事件名字",函数)   \\实际就是绑定给时间eventEmitter一个监听器
触发事件:eventEmitter.emit(“事件名字”)
 
例子如下:
var events=require("events")//导入events模块
var eventemitter=new events.EventEmitter()//实例化events的EventEmitter类
eventemitter.on("start",function(){console.log("hello world")})//注册一个事件,绑定打印hello world的事件,名字为start,实际start就是一个监听器
eventemitter.emit("start")//触发事件start
 
实际上on调用的是addListener(event,listener)。一个事件可以on多个监听器,emit执行时依次执行。
可以通过removerListener来移除一个监听器,监听器还有很多其他的方法。
类方法
 
Node.js的回调函数
Node的所有API都支持回调函数(也可以选择不使用回调函数),Node.js的异步是通过回调来实现的,非阻塞的I/O,大大提高了Node.js的性能
阻塞是按顺序执行的,必须执行完当前的代码才会进行下一个执行。而非阻塞是不需要按照顺序的,所以如果需要处理回调函数的参数,就需要写在回调函数内。
 
例如fs的读取函数readFile:
var fs=require("fs")
fs.readFile("test.txt",function(err,data){
     if (err) return console.log(err)
     console.log(data.toString())
})
 
Node的API回调函数的第一个参数都是捕获错误,第二个参数一般是正确的返回值
 
Node.js全局对象
全局对象:它及它的所有属性可以在程序的任何地方访问,不需要require导入
process:与当前进程互动,可以查看当前目录、进程等
console:用于输出
setTimeout :定时,用法【setTimeout(函数,毫秒单位的时间)】
 
还有很多其他的全局对象
 
 
Node.js的工具模块
Node.js模块库有很多很好用的模块,下面列举几个
os:返回当前系统的一些数据
path:对路径做的一些操作
http:可以创建web服务器对象等
fs:针对文件进行读写等操作
 
 
 

Node.js的知识点框架整理的更多相关文章

  1. node.js学习的资源整理

    node中文社区 Node.js专业中文社区:https://cnodejs.org/ node文档 node.js 中文api :http://nodeapi.ucdok.com/ node.js入 ...

  2. node.js Web应用框架Express.js(一)

    什么是Express.js Express 是一个简洁而灵活的 node.js Web应用框架, 提供一系列强大特性帮助你创建各种Web应用,提供丰富的HTTP工具以及来自Connect框架的中间件随 ...

  3. 转 10 个最佳的 Node.js 的 MVC 框架

    10 个最佳的 Node.js 的 MVC 框架 oschina 发布于: 2014年02月24日 (33评) 分享到:    收藏 +322 Node.js 是一个基于Chrome JavaScri ...

  4. Hexo - 快速,轻量,强大的 Node.js 博客框架

    Hexo 是一个快速,轻量,强大的 Node.js 博客框架.带给你难以置信的编译速度,瞬间生成静态文件:支持 Markdown,甚至可以在 Hexo 中集合 Octopress 插件:只需要一个命令 ...

  5. node.js使用express框架进行文件上传

    关于node.js使用express框架进行文件上传,主要来自于最近对Settings-Sync插件做的研究.目前的研究算是取得的比较好的进展.Settings-Sync中通过快捷键上传文件,其实主要 ...

  6. node.js之express框架

    之前学习过node.js接触过express框架,最近为了编写一个mock server正好用到了express.下面正好就跟大家介绍一下关于express.今天的内容主要围绕这么几个方面? expr ...

  7. node.js中的框架

    node.js中的框架 载自: http://nodeframework.com/ MVC frameworks Sinatra-like These frameworks offer rich co ...

  8. koa : Express出品的下一代基于Node.js的web框架

    https://www.liaoxuefeng.com/wiki/001434446689867b27157e896e74d51a89c25cc8b43bdb3000/001434501579966a ...

  9. 【node.js】Express 框架

    Express 是一个简洁而灵活的 node.js Web应用框架, 提供了一系列强大特性帮助你创建各种 Web 应用,和丰富的 HTTP 工具. 使用 Express 可以快速地搭建一个完整功能的网 ...

随机推荐

  1. 源码|ThreadLocal的实现原理

    ThreadLocal也叫"线程本地变量"."线程局部变量": 其作用域覆盖线程,而不是某个具体任务: 其"自然"的生命周期与线程的生命周期 ...

  2. JsonCpp使用方法详解

    JSON全称为JavaScript ObjectNotation,它是一种轻量级的数据交换格式,易于阅读.编写.解析.jsoncpp是c++解析JSON串常用的解析库之一. jsoncpp中主要的类: ...

  3. JavaScript之图片操作1

    在网页中,经常需要对图片经常各种操作,包括切换,轮播等等,接下来将总结一些常见的图片操作,首先是最简单前后切换. 如上面所示,通过点击右边的按钮切换左边的图片,为了实现想要的效果,首先,我们需要在ht ...

  4. [转]SendKeys.Send 方法

    SendKeys.Send 方法 向活动应用程序发送击键. 转载自: https://msdn.microsoft.com/zh-cn/library/system.windows.forms.sen ...

  5. webservice框架jersey 文章

    webservice框架jersey简单总结 Jersey系列文章: Jersey框架一:Jersey RESTful WebService框架简介 Jersey框架二:Jersey对JSON的支持 ...

  6. 快速开发jQuery插件的10大技巧

    原文链接:http://wiki.itivy.com/?p=36 在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式.这样我就可以 copy & ...

  7. 每秒查询率QPS

    每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,在因特网上,作为域名系统服务器的机器的性能经常用每秒查询率来衡量. 原理:每天80%的访问集中在20%的时间里,这20%时 ...

  8. Linux常见英文报错中文翻译(菜鸟必知)

    Linux常见英文报错中文翻译(菜鸟必知) 1.command not found 命令没有找到 2.No such file or directory 没有这个文件或目录 3.Permission ...

  9. Javascript框架

    网易开源框架http://www.oschina.net/p/nej http://www.linuxeden.com/html/develop/20120716/127404.html 16 款最流 ...

  10. C# implement java like CountDownLatch

    CountDownLatch是在java1.5被引入的,跟它一起被引入的并发工具类还有CyclicBarrier.Semaphore.ConcurrentHashMap和BlockingQueue,它 ...