iOS开源库
node-schedule可是实现强大的定时任务功能
很多时候我们的输入不需要emoji表情,TextFilld输入时先判断不反回给编辑框,即可拦截
express是Node.js上最流行的Web开发框架,使用它可以快速的开发一个 Web 应用。
1 | var express = require('express'); |
1 | app.set('title','My Site'); |
1 | app.get('title'); // 'My Site' |
app.configure([env],callback)
1 | // 所有环境 |
更高效且直接的代码如下(历史遗留问题):
1 | // 所有环境 |
app.use([path],function) path默认为”/“
1 | var express = require('express') |
使用内建的方式改变Express行为的设置
命名过的参数会以键值对的形式存放,默认是{}
1 | // GET /user/zoe 路由设置为/user/:name |
打开设置选择Node.js and NPM,选择node命令行路径(已安装会自动检测),再选择下载或导入node的源码
之后可以在下面的Packages中管理模块,可以选择安装各个模块,包括express
之后在Libraies中选择Node.js的支撑
运行Express项目
由于Express 4.0采用了scripts的启动方式,所以node app.js不能启动应用
采用npm start可以启动应用
在WebStorm上可以这么设置
Node.js中的全局对象是global,所有全局变量都是global的属性
process是一个全局变量,用于描述当前Node.js进程状态,提供了一个与操作系统的简单接口
1 | process.stdin.resume() |
1 | function doSomething(args,callback) { |
假设上面的代码中somthingComplicated()和compute()函数都是较为耗时的函数,上面的代码会先执行somthingComplicated()立即执行compute()
1 | function doSometing(args,callback) { |
console用于控制台的标准输出
util是Node.js核心模块,提供了常用函数的集合,用于弥补核心JavaScript的功能过于精简的不足
实现对象原型继承的函数
1 | var util = require('util'); |
注;Sub仅仅继承了Base在原型中定义的函数,内部创造的base和sayHeloo都没有被继承
util.inspect(object,[showHidden],[depth],[colors])是将任意对象转换成字符串的方法
可选参数showHideen控制是否输出更多隐藏信息
depth表示最大递归层数,默认递归2层,指定为null表示不限层数完整递归
color控制是否用ANSI颜色编码输出
events是Node.js最终要的模块,原因是Node.js本身的架构就是事件式的
events模块只提供一个对象events.EventEmitter。EventEmitter对事件发射和事件监听功能进行了封装,每个事件由事件名和若干个参数组成,事件名是一个字符串。对于每个事件,EventEmitter支持若干个事件监听器,当事件发送时注册的事件监听器被依次调用,事件参数作为回调函数参数传递
1 | var events = require('events'); |
event时间,可传递若干参数EventEmitter定义了一个特殊的时间error,在遇到异常时会发射error,如果没有响应的监听器,Node.js会把它当做异常,退出程序打印调用栈。
1 | var events = require('events'); |
很多时候,我们不会直接使用EventEmitter,而是在对象中继承它,包括fs,net,http在内的基于事件响应的核心模块都是EventEmitter的子类
fs模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等文件系统操作,fs还提供了异步和同步两个版本
fs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取文件的函数,它接受一个必选参数filename表示要读取的文件名,第二个参数encoding表示文件的字符编码,callback是回调函数,err表示是否有错误,data是文件内容,如果没有指定encoding,data会是Buffer形式表示的二进制数据
1 | var fs = require('fs') |
fs.readFileSync是fs.readFile同步版本,读取到的数据会以返回值的形式返回,需要使用try和catch捕捉处理异常
fs.open(path,flags,[mode],[callback(err,fd)]),path为文件路径,flags可以使以下值
读取模式打开文件读写模式打开文件写入模式打开文件,如果文件不存在则创建读写模式打开文件,如果文件不存在则创建追加模式打开文件,如果不存在则创建读取追加模式打开文件,如果不存在则创建fs.read(fd,buffer,offset,length,postion,[callback(err,bytesRead,buffer)])从制定的文件描述符fd中读取数据并写入buffer指向的缓冲区对象,offset是buffer的写入偏移量,length是要从文件中读取的字节数,position是文件读取的起始位置,如果position的值为null,则会从当前文件指针的位置读取,回调函数传递bytesRead和buffer分别表示读取的字节数和缓冲区对象
1 |
Node.js标准库提供了http模块,其中封装了一个高效的HTTP服务器和简易的HTTP客户端。http.Server是一个基于事件的HTTP服务器,核心由C++部分实现,接口由JavaScripte封装,兼顾了高性能和简易性
http.request则是一个HTTP客户端工具,用于HTTP服务器发起请求
复杂的模块往往由多个子模块组成,为了便于管理和使用,多个子模块组成的大模块称为包,并将所有子模块放在同一个目录里