Node.js编程基础

发表时间: 2021-10-28 16:10

全局对象

全局对象可以在程序的任何地方进行访问,可以为程序提供经常使用的特定功能

console对象

可以提供控制台的标准输出

  • console.log():打印字符,并以换行符结束。该方法接收若干个参数,如果只有一个参数,则输出这个参数的字符串形式
    这个与C语言的输出方式相同:console.log('变量的值:%d,10)
  • console.time():输出时间,表示计时开始
  • console.timeEnd():结束时间,表示计时结束

process对象

process对象一般用来描述当前程序的状态

  • argv:返回一个数组,由命令行执行脚本时的各个参数组成
  • env: 返回当前系统的环境变量
  • version: 返回当前node.js的版本

全局函数

  • setTimeout:(cb,ms)在指定的毫秒数后执行指定函数(cb)。指定时间后,只执行一次
  • clearTimeoout(t):停止一个之前调用setTimeout()创建的定时器
  • setInterval(cb,ms):(cb,ms)在指定的毫秒数后执行指定函数(cb)。指定时间后,周期循环

模块化编程

  • exports对象:创建一个js文件,可以通过require()函数引用该js文件
    exports.xxx=function(){}
    var module=require('./module.js')
  • module对象:
function Xxx(){};module.exports=Xxx

内置模块

os模块

  • const os=require('os')

url模块

const url=require('url')

方法名称

说明

parse()

url字符串转换成url对象

format(urlObj


Query String模块

const querystringl=require('querystring')

crypto模块——createHash()

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)

EventEmitter对象

在第一部分中,我们介绍了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

NPM(node package manager),同Node.js一起安装的包管理和分发工具,能够很方便的让JavaScript开发者下载、安装、上传、管理已经安装的包。
npm安装包后,会自动在项目的当前目录下创建一个目录,目录的名称叫做node_modules,然后把第三方包自动放在该目录下

web服务器开发——http模块

有了http模块,就可以给该项目创建服务器了,就不再需要apache来创建了

server对象

创建server对象

createServer()可以创建server对象

使用server对象

server.listen(port)启动服务器
server.close()关闭服务器

创建服务器

var server=require('http').createServer();server.listen(12345);

response对象

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)

request对象

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数据

创建服务器——express模块

模板引擎

只需要用别人已经开发好的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得到目录

MySQL数据库

需要npm安装mysql模块

连接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){});