node.js(全局对象、全局函数、模块化编程、内置模块、异步编程、监听事件、包管理、web服务器开发、文件读写、数据库)

全局对象

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

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){});
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

善良的王小宁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值