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 ...
随机推荐
- zabbix内存百分比监控告警
本文结合配置内存不足10%触发报警的需求,zabbix给我们提供的模板,里面都已经配置好了item和trigger.但是给我们的模板是当内存小于20M的时候才会触发报警,这样不能满足我们的需求,我们需 ...
- Python性能分析工具
import cProfile import pstats from flask import Flask,jsonify, request @app.route("/test", ...
- git提交代码托管平台流程
首先先安装git git官网 ---- https://git-scm.com/ 下载好傻瓜式安装即可 安装好过后,再桌面任意空白区域右键,看到以下两个选项即为安装成功 一般都用第二个选项也就是 Gi ...
- vue + elementUI开发,使用el-tabs,导致浏览器卡死问题。
第一次自己建项目,用过el-tabs,当时是正常使用的. 贴下版本信息: "element-ui": "^2.13.0", "js-md5" ...
- mysql常见聚合函数
count():总数量avg():平均数std():标准差sum():求和max():最大值min():最小值 上面的不过多介绍group_concat():分组列值全部展示到一行eg:mysql&g ...
- centos7 和centos6 服务操作命令对比
以httpd为例子: 指令名称 centos 6 centos 7 启动服务 service httpd start systemctl start httpd.service 关闭服务 servic ...
- CDN百科第四讲 | 如何优雅地在云上“摆摊”——做直播带货,你不得不关注的技术
最近,国家政策开始鼓励“地摊经济”,一时间各家企业平台纷纷推出地摊扶持政策,地摊概念股顺势大涨,地摊生态及配套商品也开始走俏,甚至在网络上也涌现出各种“新摊主速成攻略”,万亿的烟火经济俨然已经走上风口 ...
- TensorFlow从0到1之回归算法(11)
回归是数学建模.分类和预测中最古老但功能非常强大的工具之一.回归在工程.物理学.生物学.金融.社会科学等各个领域都有应用,是数据科学家常用的基本工具. 回归通常是机器学习中使用的第一个算法.通过学习因 ...
- snprintf和sprintf区别分析
目录[-] snprintf函数的返回值 snprintf函数的字符串缓冲 今天在项目中使用snprintf时遇到一个比较迷惑的问题,追根溯源了一下,在此对sprintf和snprintf进行一下对比 ...
- 这样让你的 IDEA 好用到飞起来!
IDEA提高效率的配置项,每个开发者必须掌握的技能!下面这 32 条完美设置成功后,开发效率显著提升. 1.设置maven 1.在File->settings->搜索maven 2.Mav ...