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. MySQL进阶篇(02):索引体系划分,B-Tree结构说明

    本文源码:GitHub·点这里 || GitEE·点这里 一.索引简介 1.基本概念 首先要明确索引是什么:索引是一种数据结构,数据结构是计算机存储.组织数据的方式,是指相互之间存在一种或多种特定关系 ...

  2. 智能家居巨头 Aqara 基于 KubeSphere 打造物联网微服务平台

    背景 从传统运维到容器化的 Docker Swarm 编排,从 Docker Swarm 转向 Kubernetes,然后在 Kubernetes 运行 SpringCloud 微服务全家桶,到最终拥 ...

  3. Python--循环--for && while

    for循环示例:猜数字游戏 winning_number = 38 for i in range(3): guess_num = int(input("guess num:") ) ...

  4. 【Spring Boot 】1、Spring Boot 开始

    0.写在最前面: 开始了新的征程,Spring Boot作为下一代的t开发框架,日渐流行.它作为spring mvc  的继承者,虽然二者之间没有多大联系,但是Spring Boot 的出现,大大简化 ...

  5. v-bind 缩写

    Vue.js 为两个最为常用的指令提供了特别的缩写: <!-- 完整语法 --> <a v-bind:href="url"></a> <! ...

  6. Nginx深入浅出

    一级标题为思维导图的链接 :) 1. Nginx简介 1.1 nginx概述 说明(C10K) 程序架构(master/worker) nginx的特性 文件并发处理(异步.事件驱动)epoll / ...

  7. Py中去除列表中小于某个数的值

    ### Py去除列表中小于某个数的值 print('*'*10,'Py去除列表中小于某个数的值','*'*10) nums = [2,3,4,10,9,11,19,14] print('*'*10,' ...

  8. Redis在CentOS for LInux上安装详细教程

    1.首先上传安装包,这里我以 redis-5.0.8.tar.gz 为例子. Linux下载redis地址:wget http://download.redis.io/releases/redis-5 ...

  9. 『图论』LCA 最近公共祖先

    概述篇 LCA (Least Common Ancestors) ,即最近公共祖先,是指这样的一个问题:在一棵有根树中,找出某两个节点 u 和 v 最近的公共祖先. LCA 可分为在线算法与离线算法 ...

  10. tensorflow-TFRecord 文件详解

    TFRecord 是 tensorflow 内置的文件格式,它是一种二进制文件,具有以下优点: 1. 统一各种输入文件的操作 2. 更好的利用内存,方便复制和移动 3. 将二进制数据和标签(label ...