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. 实验四 Linux系统搭建C语言编程环境

    项目 内容 这个作业属于那个课程 <班级课程的主页链接> 这个作业的要求在哪里 <作业要求链接地址> 学号-姓名 17043220-万文文 作业学习目标 1).Linux系统下 ...

  2. js循环练习

    var a=1; while(a>0){ var b=prompt('input number'); if(b>a){ alert('big'); } else if(b<a){ a ...

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

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

  4. Accord.NET重启4.0 开发

    Accord.NET Framework是在AForge.NET基础上封装和进一步开发来的.功能也很强大,因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注 ...

  5. PHP配合JS导出Excel大量数据

    一般使用PHP导出Excel表格都会用PHPExcel,但是当遇到要导出大量数据时,就会导致超时,内存溢出等问题.因此在项目中放弃使用这种方式,决定采用前段生成Excel的方式来解决问题. 步骤如下: ...

  6. Linux防火墙iptables详解

    iptables详解(思维导图) 1. 概述 1.1 iptable简介 1.2 防火墙的种类 1.3 netfilter 2. iptables的工作流程 2.1 iptables工作图示 2.2 ...

  7. sorted排序

    sorted(['bob', 'about', 'Zoo', 'Credit']) # ['Credit', 'Zoo', 'about', 'bob'] ''' 默认情况下,对字符串排序,是按照AS ...

  8. 商城04——门户网站介绍&商城首页搭建&内容系统创建&CMS实现

    1.   课程计划 1.门户系统的搭建 2.显示商城首页 3.内容管理系统的实现 a)  内容分类管理 b) 内容管理 2.   门户系统的搭建 2.1. 什么是门户系统 从广义上来说,它将各种应用系 ...

  9. rust 编译器工作流

    将源代码转为高级中间表示,在将其转为中级中间表示,在将其转为LLVM IR, 最终输出机器码. rust 租借检查 选项优化,代码生成(宏, 范型) , 都是在MIR层.

  10. ca71a_c++_指向函数的指针_通过指针调用函数txwtech

    /*ca71a_c++_指向函数的指针_通过指针调用函数用typedef简化函数指针的定义简化前: bool(*pf)(const string&, const string &); ...