Node js 入门指南(1)
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 模块
定义
服务器模块
使用方法
- 引入内置对象 http
- 创建一个服务器
- 解决中文乱码 响应头
- 响应结束 end () 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)
})
fs 模块
定义
读写文件
使用方法
- 引入fs模块
- 读取写入文件时候 ./ 必须写 路径必须写全
读取文件方式
同步读取
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)的更多相关文章
- 学习Nodejs:《Node.js开发指南》微博项目express2迁移至express4过程中填的坑
<Node.js开发指南>项目地址https://github.com/BYVoid/microblog好不容易找到的基础版教程,但书中是基于express2的,而现在用的是express ...
- node.js 入门实例【转】
第1章 一个简单的博客 nswbmw edited this page 14 days ago · 38 revisions Pages 29 Home FAQ 番外篇之——使用 _id 查询 番外篇 ...
- Node.js 入门手册:那些最流行的 Web 开发框架
这篇文章与大家分享最流行的 Node.js Web 开发框架.Node 是一个服务器端 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用程序,编 ...
- 【特别推荐】Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- 让我们一起学习《Node.js入门》一书吧!
Node.js入门 读完本书之后,你将完成一个完整的web应用,该应用允许用户浏览页面以及上传文件. 里面对一些知识的讲解,让你略窥Node.js的门径.最好一段代码一段代码的写下来,我的习惯是手里拿 ...
- Node.js入门实例程序
在使用Node.js创建实际“Hello, World!”应用程序之前,让我们看看Node.js的应用程序的部分.Node.js应用程序由以下三个重要组成部分: 导入需要模块: 我们使用require ...
- Node.js 入门教程和学习资源汇总
这篇文章与大家分享一批很有用的 Node.js 入门教程和学习资源.Node 是一个服务器端的 JavaScript 解释器,它将改变服务器应该如何工作的概念.它的目标是帮助程序员构建高度可伸缩的应用 ...
- Node.js开发指南中的例子(mysql版)
工作原因需要用到nodejs,于是找到了<node.js开发指南>这本书来看看,作者BYVoid 为清华大学计算机系的高材生,年纪竟比我还小一两岁,中华地广物博真是人才辈出,佩服. 言归正 ...
- Node.js入门-Node.js 介绍
Node.js 是什么 Node.js 不是一种独立的语言,与 PHP,Python 等"既是语言优势平台"不同,它也不是一个 JavaScrip 框架,不同于 CakePHP,D ...
随机推荐
- Python中map和reduce函数
①从参数方面来讲: map()函数: map()包含两个参数,第一个是参数是一个函数,第二个是序列(列表或元组).其中,函数(即map的第一个参数位置的函数)可以接收一个或多个参数. reduce() ...
- 120行代码打造.netcore生产力工具-小而美的后台异步组件
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: pub ...
- 「JOISC 2020 Day4」首都城市
题目 点这里看题目. 分析 做法比较容易看出来.我们对于每个城市,找出那些 " 如果这个城市在首都内,则必须在首都内的其它城市 " ,也就是为了让这个城市的小镇连通而必须选 ...
- MDK未添加相应芯片的安装包
问题: No Algorithm found for: 00000000H - 00000567HErase skipped!Error: Flash Download failed - " ...
- 【JMeter_07】JMeter逻辑控制器__循环控制器<Loop Controller>
循环控制器<Loop Controller> 业务逻辑: 根据所填写的循环次数,对当前节点下的取样器进行响应次数的循环请求,这里可以填写变量.整数.小数.字母.负数.各种符号等: 当填写整 ...
- cc32a_demo-32dk2j_cpp_纯虚函数与抽象类-txwtech
//32dk2j_cpp_纯虚函数与抽象类cc32a_demo-txwtech//纯虚函数是用来继承用的//纯虚函数//抽象类-抽象数据类型//*任何包含一个或者多个纯虚函数的类都是抽象类//*不要/ ...
- PHP丨PHP基础知识之流程控制WHILE循环「理论篇」
昨天讲完FOR循环今天来讲讲他的兄弟WHILE循环!进入正题: while是计算机的一种基本循环模式.当满足条件时进入循环,进入循环后,当条件不满足时,跳出循环.while语句的一般表达式为:whil ...
- HTTP参数污染学习
HTTP参数污染 --- HPP 参考: 参数污染漏洞(HPP)挖掘技巧及实战案例全汇总 视频内容 HPP,简而言之,就是给参数赋上多个值. 比如: https://www.baidu.com/s?w ...
- 代码规范与计划(Beta阶段)
这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 团队名称 WeChair 这个作业要求在哪里 Beta冲刺 这个作业的目标 代码规范与计划 作业正文 如下 其他参考文献 代码规 ...
- Office2019 相关激活秘钥
零售版 W8W6K-3N7KK-PXB9H-8TD8W-BWTH9 批量板 N9J9Q-Q7MMP-XDDM6-63KKP-76FPM