全局对象可以在程序的任何地方进行访问,可以为程序提供经常使用的特定功能
可以提供控制台的标准输出
process对象一般用来描述当前程序的状态
function Xxx(){};module.exports=Xxx
const url=require('url')
方法名称 | 说明 |
parse() | url字符串转换成url对象 |
format(urlObj |
const querystringl=require('querystring')
var crypto=require('crypto');var shasum=crypto.createHash('sha256')shasum.updata('crypto_hash');var output=shasum.digest('hex');console.log('crypto_hash:',output);
代码作用:输出字符串的Hash密码
异步编程的含义是指在执行异步操作的时候,不会影响其他语句的执行
回调函数类似于C++中的递归,但是不同的是,node.js中的递归实在使用函数的时候,嵌套调用
c=fB(fA());
fB()和fA()都是一个函数
在javascript中监听:
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title> <script language="javascript"> window.addEventListener('load',function(){}); </script> </head><body></body></html>
on(eventName,eventHandler)
handler一般指的是一个对象
removeListener(eventName,handler)删除指定事件名称的监听事件removeAllListens([eventName])删除所有监听事件
当对象满足事件发生的条件时,Node.js就会自动触发监听事件,执行监听事件中事件监听器的函数内容。但是,我们也需要主动触发监听事件,此时,使用方法emit()
on(eventName,eventHandler)
在第一部分中,我们介绍了process对象,这是一个全局对象。这个对象主要是用来描述程序的状态的。我们前面都是在process对象上进行添加监听事件,删除监听事件等操作的。之所以有这些操作,是因为process对象已经继承了EventEmitter这个类,所以我们可以直接用EventEmitter的方法。我们也可以自己定义一个EventEmitter对象,来实现事件监听
方法名称 | 用处 |
addListener(eventName,eventHandler) | 添加监听事件 |
on(eventName,eventHandler) | 添加监听事件 |
setMaxListeners(limit) | 设置监听事件的数量 |
removeListeners(eventName,handler) | 删除指定事件名称的监听事件 |
removeAllListeners([eventName]) | 删除全部监听事件 |
once(eventName,eventHandler) | 仅执行一次监听事件 |
包和模块的区别:包实在模块的基础上更进一步组织javascript代码的目录
包结构 | 说明 |
package.json | 在顶层目录的包描述文件,说明文件 |
bin | 存放可执行二进制文件的目录 |
lib | 存放javascript文件的目录 |
doc | 存放文档的目录 |
test | 存放单元测试用例代码的目录 |
package.json相当于说明书,可以让项目开发者对包的信息一目了然,其中有各种描述信息
属性 | 说明 |
name | 包的名称 |
description | 包的简介 |
version | 包的版本号 |
keywords | 关键词数组,用于在NPM中搜索 |
author | 包的作者 |
main | 配置包的入口,默认是模块根目录 下的index.js |
dependencies | 包的依赖项,NPM会根据该属性自动加载依赖包 |
scripts | 执行运行脚本命令的NPM命令行缩写 |
NPM(node package manager),同Node.js一起安装的包管理和分发工具,能够很方便的让JavaScript开发者下载、安装、上传、管理已经安装的包。
npm安装包后,会自动在项目的当前目录下创建一个目录,目录的名称叫做node_modules,然后把第三方包自动放在该目录下
有了http模块,就可以给该项目创建服务器了,就不再需要apache来创建了
createServer()可以创建server对象
server.listen(port)启动服务器
server.close()关闭服务器
var server=require('http').createServer();server.listen(12345);
response.writeHead(statusCode,statusMessage,headers)
response.end(data,encoding,callback)
end就可以输出内容返回给客服端
require('http').createServer(function(request,response){response.writeHead(200,{'content-Type':'text/html'});response.end('<h1>hello</h1>);}).listen(12345)
var http=require('http');var fs=require('fs);http.createServer(function(request,response){if(request.method=='GET'){fs.readfile(login.html',function(error,data){response.writeHead(200,{'content-Type':'text/html'});response.end(data);});}else if(request.method=='POST'){request.on('data',function(data){response.writeHead(200,{'content-Type':'text/html'});response.end('<h1>'+data+'</h1>');});}}).listen(12345);
简单说一下对于这段代码的理解:当我们输入该地址后,此时是一个get请求,服务器,也就是这里创建的服务器,会根据if条件判断,把login.html这个文件都进来,并且展示在客服端(浏览器)中
当我们提交了表单以后,也就是发送了post请求了,此时,触发第二个if,会返回一个data数据
只需要用别人已经开发好的web开发模块就可以
暂未明白如何使用
var fs=require('fs');var text=fs.readFile(file,encoding,callback);//异步读取,数据以callback回调函数的参数的形式返回
var fs=require('fs');fs.writeFile(file,data,encoding,callback)
回调函数callback参数error可以得到异常,直接判断error是否存在即可
fs.readdir(path,function(err,files){})
err得到异常,files得到目录
需要npm安装mysql模块
var mysql=require('mysql');建立连接var client=mysql.createConnection({host:'localhost',port:"",user:'',password:'';database:''});client.query('ues database')client.query(SQL,function(error,result,fields){});