余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

node.js语法

xiyangw 2022-11-26 16:35 22 浏览 0 评论

全局对象

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

console对象

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

node.js语法

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

相关推荐

spring利用spring.handlers解析自定义配置(spring validation 自定义)

一、问题我们在spring的xml配置文件里经常定义各种各样的配置(tx、bean、mvc、bean等等)。以及集成第三方框架时,也会看到一些spring之外的配置,例如dubbo的配置、securi...

「Spring源码分析」AOP源码解析(上篇)(spring源码深度解析(第2版))

前言前面写了六篇文章详细地分析了SpringBean加载流程,这部分完了之后就要进入一个比较困难的部分了,就是AOP的实现原理分析。为了探究AOP实现原理,首先定义几个类,一个Dao接口:1&nbs...

Spring 解析注册BeanDefinition这一篇就Over
Spring 解析注册BeanDefinition这一篇就Over

一、简介:学习过Spring框架的人一定都会听过Spring的IoC(控制反转)、DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC、...

2023-03-20 14:53 xiyangw

域、模块、空间、闭包,你真的懂了吗?(模块控制域与作用域的关系)

Javascript有一个特性叫做域。尽管对于初学者来说理解域是有难度的,但我会尽力用最简单的方式让你理解域。理解域能让你的代码更优秀,减少错误,及有助于你做出更强大的模式设计。什么是域域是在运行时,...

这一次搞懂Spring自定义标签以及注解解析原理
这一次搞懂Spring自定义标签以及注解解析原理

前言在上一篇文章中分析了Spring是如何解析默认标签的,并封装为BeanDefinition注册到缓存中,这一篇就来看看对于像context这种自定义标签是如...

2023-03-20 14:53 xiyangw

前端基础进阶(七)-前端工程师最容易出错的问题-this关键字
前端基础进阶(七)-前端工程师最容易出错的问题-this关键字

我们在学习JavaScript的时候,因为对一些概念不是很清楚,但是又会通过一些简洁的方式把它给记下来,那么这样自己记下来的概念和真正的概念产生了很强的偏差.当...

2023-03-20 14:52 xiyangw

深入K8s:守护进程DaemonSet及其源码分析(k8s 进程)
深入K8s:守护进程DaemonSet及其源码分析(k8s 进程)

建议学习:膜拜!阿里内部都在强推的K8S(kubernetes)学习指南,不能再详细了最近也一直在加班,处理项目中的事情,发现问题越多越是感觉自己的能力不足,...

2023-03-20 14:52 xiyangw

Spring 是如何解析 bean 标签的?(spring beans标签)
Spring 是如何解析 bean 标签的?(spring beans标签)

前情回顾上回「SpringIoC容器初始化(2)」说到了Spring如何解析我们定义的<bean>标签,代码跟进了一层又一层,跋山涉水,...

2023-03-20 14:52 xiyangw

快速了解JavaScript文本框操作(javascript文本框代码)
快速了解JavaScript文本框操作(javascript文本框代码)

HTML中使用<input>元素表示单行输入框和<textarea>元素表示多行文本框。HTML中使用的<input&...

2023-03-20 14:51 xiyangw

荐读|30道JavaOOP面试题,可以和面试官扯皮了
荐读|30道JavaOOP面试题,可以和面试官扯皮了

面试是我们每个人都要经历的事情,大部分人且不止一次,今天给大家准备了30道JavaOOP面试题,希望能够帮助到对Java感兴趣的同学,让大家在找工作的时候能够...

2023-03-20 14:51 xiyangw

源码系列——mybatis源码刨析总结,下(mybatis源码分析)
源码系列——mybatis源码刨析总结,下(mybatis源码分析)

接上文简答题一.1.Mybatis动态sql是做什么的?1.动态sql就是根据条件标签动态的拼接sql,包括判空,循环,拼接等2.哪些动态sql?动态sql大...

2023-03-20 14:50 xiyangw

Java面试题(第二弹)(java面试题及答案整理)
Java面试题(第二弹)(java面试题及答案整理)

1.抽象类和接口的区别?接口可以被多重implements,抽象类只能被单一extends接口只有定义,抽象类可以有定义和实现接口的字段定义默认为:public...

2023-03-20 14:50 xiyangw

mybatis3 源码深度解析-动态 sql 实现原理(sql数据库基础知识)
mybatis3 源码深度解析-动态 sql 实现原理(sql数据库基础知识)

大纲动态sql使用示例SqlSource和BoundSql以及实现类LanguageDriver以及实现类SqlNode以及实现类动态sql解...

2023-03-20 14:50 xiyangw

第43节 Text、Comment及CDATASection(第43节 Text、Comment及CDATASection)
第43节 Text、Comment及CDATASection(第43节 Text、Comment及CDATASection)

本内容是《Web前端开发之Javascript视频》的课件,请配合大师哥《Javascript》视频课程学习。文本节点用Text类型表示,包含的是可以按字面解释...

2023-03-20 14:49 xiyangw

Qt读写三种文件(qt读取文件数据并赋值给变量)

第一种INI配置文件.ini文件是InitializationFile的缩写,即初始化文件。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要...

取消回复欢迎 发表评论: