Node Js

定义

Node Js 是一个运行在服务器端的JavaScript。基于一个Chrome JavaScipt 运行时建立的一个平台

特点

  • 事件驱动I/O服务端
  • 基于V8引擎
  • 速度快,性能好
  • node -v 查看node js 版本号
  • 使用common js 规范

Node使用方式

  • REPL 交互模式 在当前目录的cmd当中输入node
  • 退出交互模式 .exit
  • 或者node 直接打开文件
  • 采用require() 方法引入要使用的模块
  • 采用 module.exports 导出文件
  • 声明全局变量时,使用全局对象 global

Tip: 使用导出文件的注意事项

  • exports 默认指向 module.exports 导出作用只有module.exports才拥有。但是如果exports指向了新对象,那么就没有导出作用
// 第一种
module.exports = {
a:a,
b:b
} //第二种 不推荐使用
module.exports.a=a
module.exports.b=b //第三种
exports.a = a
exports.b = b
  • 我们可以使用解构赋值来读取变量
  • 引用传递 深浅拷贝
let obj = {
a:1,
b:2
} let obj2 = obj
obj2.a = "lisi" //该表obj2 会影响到obj
console.log(obj2) // {a:lisi,b:2}
console.log(obj) // {a:lisi,b:2} //利用解构赋值来进行浅拷贝 let obj3 = { ...obj } let obj4 = Object.assign({}, obj)
  • node js 采用 common js 规范
  • 包管理的配置文件 npm init -y 或者 yarn 根据package.json重新下载依赖
  • 下载新的配置文件yarn add 或者 npm i

Node 内置模块

http 模块

定义

服务器模块

使用方法

  1. 引入内置对象 http
  2. 创建一个服务器
  3. 解决中文乱码 响应头
  4. 响应结束 end () end里面只能传字符串类型的数据且只能有一个
  5. 安排监听接口
const http = require("http");
const chalk = require("chalk") //改变在服务器中输出的颜色 let ser = http.createServer((req,res)=> {
res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})
res.end("hello,world")
}) ser.listen(3000, ()=> {
console.log(123)
})

fs 模块

定义

读写文件

使用方法

  1. 引入fs模块
  2. 读取写入文件时候 ./ 必须写 路径必须写全

读取文件方式

同步读取
let str = fs.readFileSync("./a.txt","uft-8")
异步读取
//异步读取的回调函数错误优先
fs.readFile("./a.txt","uft-8",(err,data)=> {
if(!err){
console.log(data)
}
})

写入文件方式

同步写入
// 写入文件
fs.writeFileSync("./a.txt","rush b ","utf-8")
// 追加内容
fs.appendFileSync("./a.txt","今夜","utf-8") // 可以创建一个文件
fs.writeFileSync("./b.txt","cccc","utf-8")
异步写入
 fs.writeFile("./b.txt","这是异步","utf-8",(err,data)=> {
if(!err){
console.log(data)
}
})

流方式

读取流
//读取流
let ws = fs.createReadStream("./a.txt")
let str = '' //监听数据事件
ws.on("data",(thunk)=> {
str += thunk
})
//数据传输完成
ws.on("end",()=> {
console.log(str)
})
写入流
let ws = fs.createWriteStream("./a.txt");
//写入内容
ws.write("xiaolaji","utf-8")
复制一个文件
const fs = require("fs");

var rs = fs.createReadStream("./a.txt");

var ws = fs.createWriteStream("./acopy.txt");

//把rs的内容赋值到ws当中

rs.pipe(ws);

创建一个服务器

  • 先引入内置对象http

  • 然后创建一个服务器,req是请求,res是响应

  • 响应头

  • 响应结束 end

  • 安排监听接口

  • 注意:res.end() 里面只能传字符串类型的数据,且只能有一个

const http = require("http");

const chalk = require("chalk")

let ser = http.createServer((req,res)=> {

  res.writeHead(200,{"Content-type":"text/html;charset=utf-8"})

  res.end("hello,world")

})

ser.listen(3000, ()=> {

  console.log(123)

})

path内置模块

path.join 与 path.resolve 的区别

  • path.join() 将多个参数字符串拼接起来合成一个路径字符串

  • path.resolve() 以程序为根目录作为起点,根据参数解析出来一个绝对路径

  • __dirname 当前目录的绝对路径

  • __filename 当前文件的绝对路径

  • path.extname 获取当前文件的扩展名

url内置模块

url.parse()方法 用于将url地址转换为一个对象

url.format() 将一个url对象转换为字符串

使用方法

const express = require("express")
const url = require("url")
const router = express.Router() router.get("/hello",(req,res,next)=>{
//第二个参数可以将query我们请求的?后面的参数转换为一个对象 在这个例子当中我们是这样访问的 /hello?n=1
let obj = url.parse(req.url,true)
if(obj.query.n ==1){
next()
}else{
res.send("hello world") }
})

express框架

简介

一个基于node js 的极简web框架 同种类的有 koa2 eggs adonis js

快速入门

下载express

yarn add express

核心概念:中间件(middlware)

可以拦截我们的请求,是一些先存在的函数,可以替我们完成很多工作。

存在于请求和响应中间

手写路由
  • 路由有级中间件,应用级中间件 两种
//第一步 引入express模块
const express = require("express") //第二步 实例化
let app = express() //使用 static中间件 读取静态资源 默认读取public目录下的index.html文件
app.use(express.static(path.join(__dirname,'public')))
//第三步 模拟请求
app.get("/hello",(req,res)=> {
res.send("hello world")
}) //如果请求不存在的接口我们可以使用通配符来读取这个请求
app.get("*",(res,req)=>{
res.send("404 NotFound! 该页面不存在")
}) //第四步 启动端口
app.listen(3000,()=>{
console.log("listen 3000....")
})
把我们的请求放在一个文件当中就形成了路由
  • 新建一个
const express = require("express")
let router = express.Router() router.get("/hello",(req,res,next)=> {
res.send("hello world1")
//如果存在请求路径相同的情况 会被第一个拦截 如果写next就可以访问第二个
next()
})
router.get("/hello",(req,res)=> {
res.send("hello world2")
})
router.get("*",(res,req)=>{
res.send("404 NotFound! 该页面不存在")
})
module.exports = router

实际结构

文件结构

应用级中间件 根目录当中的index.js

路由级中间件

APIDOC

可以根据注释 生成一个接口文档

Node js 入门指南(1)的更多相关文章

  1. 学习Nodejs:《Node.js开发指南》微博项目express2迁移至express4过程中填的坑

    <Node.js开发指南>项目地址https://github.com/BYVoid/microblog好不容易找到的基础版教程,但书中是基于express2的,而现在用的是express ...

  2. node.js 入门实例【转】

    第1章 一个简单的博客 nswbmw edited this page 14 days ago · 38 revisions Pages 29 Home FAQ 番外篇之——使用 _id 查询 番外篇 ...

  3. Node.js 入门手册:那些最流行的 Web 开发框架

    这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...

  4. 【特别推荐】Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  5. 让我们一起学习《Node.js入门》一书吧!

    Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...

  6. Node.js入门实例程序

    在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...

  7. Node.js 入门教程和学习资源汇总

    这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...

  8. Node.js开发指南中的例子(mysql版)

    工作原因需要用到nodejs,于是找到了<node.js开发指南>这本书来看看,作者BYVoid 为清华大学计算机系的高材生,年纪竟比我还小一两岁,中华地广物博真是人才辈出,佩服. 言归正 ...

  9. Node.js入门-Node.js 介绍

    Node.js 是什么 Node.js 不是一种独立的语言,与 PHP,Python 等"既是语言优势平台"不同,它也不是一个 JavaScrip 框架,不同于 CakePHP,D ...

随机推荐

  1. Python中map和reduce函数

    ①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...

  2. 120行代码打造.netcore生产力工具-小而美的后台异步组件

    相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: pub ...

  3. 「JOISC 2020 Day4」首都城市

    题目   点这里看题目. 分析   做法比较容易看出来.我们对于每个城市,找出那些 " 如果这个城市在首都内,则必须在首都内的其它城市 " ,也就是为了让这个城市的小镇连通而必须选 ...

  4. MDK未添加相应芯片的安装包

    问题: No Algorithm found for: 00000000H - 00000567HErase skipped!Error: Flash Download failed - " ...

  5. 【JMeter_07】JMeter逻辑控制器__循环控制器<Loop Controller>

    循环控制器<Loop Controller> 业务逻辑: 根据所填写的循环次数,对当前节点下的取样器进行响应次数的循环请求,这里可以填写变量.整数.小数.字母.负数.各种符号等: 当填写整 ...

  6. cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech

    //32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...

  7. PHP丨PHP基础知识之流程控制WHILE循环「理论篇」

    昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...

  8. HTTP参数污染学习

    HTTP参数污染 --- HPP 参考: 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 视频内容 HPP,简而言之,就是给参数赋上多个值. 比如: https://www.baidu.com/s?w ...

  9. 代码规范与计划(Beta阶段)

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 团队名称 WeChair 这个作业要求在哪里 Beta冲刺 这个作业的目标 代码规范与计划 作业正文 如下 其他参考文献 代码规 ...

  10. Office2019 相关激活秘钥

    零售版 W8W6K-3N7KK-PXB9H-8TD8W-BWTH9 批量板 N9J9Q-Q7MMP-XDDM6-63KKP-76FPM