背景:因为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. idea远程调试jar包

    1 服务器启动jar包 (监听端口5005) java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -j ...

  2. spring boot学习(7) SpringBoot 之表单验证

    第一节:SpringBoot 之表单验证@Valid 是spring-data-jpa的功能:   下面是添加学生的信息例子,要求姓名不能为空,年龄大于18岁.   贴下代码吧: Student实体: ...

  3. java web 程序---javabean代码,出现错误。奇怪,无法解释的运行问题

    深夜吧.这个点11点半了 写了一个简单的javabean实例,发现没有任何代码书写的错误,但是问题就是程序运行会有问题,然后换一个包,重写一个,问题没了? 请问问题出现在哪里了?巧合?还是操作有误?这 ...

  4. js在html文件中的解析顺序

    我们可以将JavaScript代码放在html文件中任何位置,但是我们一般放在网页的head或者body部分. 放在<head>部分 最常用的方式是在页面中head部分放置<scri ...

  5. [转][C#]验证

    文件下载 本文仅做备份,参考自:http://www.cnblogs.com/LoveJenny/p/opensource_software_license_tool__easyhelper_easy ...

  6. 1061 Dating (20 分)

    1061 Dating (20 分) Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh ...

  7. 在win7/WINDOWS SERVER 2008 R2上安装 vmware POWERcli 6.5

    安装.NET Framework 4.6.2下载NDP462-KB3151800-x86-x64-AllOS-ENU.exe,安装安装PowerShell 4.0(5.0依赖4.0)下载Windows ...

  8. 扫盲贴,802.11AD

    早在去年,大家已经开始关注新的802.11ad规范,其高频高带宽低延迟的特性也让大家对将来的无线网络应用形态充满了期待,而今年的CES2016展会上,已经有不少的802.11ad产品出现,看来2016 ...

  9. 【基础知识六】支持向量机SVM

    开发库: libsvm, liblinear      GitHub地址 SVM难点:核函数选择 一.基本问题 找到约束参数ω和b,支持向量到(分隔)超平面的距离最大:此时的分隔超平面称为“最优超平面 ...

  10. Hive基础之Hive的复杂类型

    ARRAY 一组有序字段,字段的类型必须相同.Array(1,2) create table hive_array(ip string, uid array<string>) row fo ...