初学Node.Js

简介: 初学Node.Js

Path模块

1.引入path:

const path = require("path");

2.path.join:拼接路径

注:…/可抵消前面的路径

var pathStr = path.join(__dirname,"/文件路径")

3.path.basename:获取文件名

var fpath = "/a/b/c/index.html"
var fullName = path.basename(fpath)
console.log(fullName);//index.html
var name = path.basename(fpath,".html")
console.log(name);//index

4.path.extname:获取文件后缀名

var fpath = "/a/b/c/index.html";
var houzhui = path.extname(fpath);
console.log(houzhui);//.html

模块化

1.分三类:

  • 内置模块:Node.js官方提供:例如:fs http path
  • 自定义模块:用户自己创建的.js文件
  • 第三方模块:由第三方提供,使用前需要先下载

2.加载模块

使用require()方法

8408726290684a5abf2d3ea311ef5ad5.png

注:

  • 加载内置模块和第三方模块都只写他们的名字,加载自定义模块需要写路径
  • 使用require()方法加载其他模块,会执行加载模块中的代码

3.module对象

a726f629e689403fbe25970901517e8b.png

使用require()方法导入自定义模块时,返回的就是module.exports()对像,导入的结果永远以module.exports指向的对象为准

4.exports对象

exports对象与module.exports对象指向的是同一个对象,即exports=== module.exports

erports 与module.eports对象的使用误区:

d62f8e35242e455a92e1bd5d350ba0ca.png

npm与包

第三方模块就称作为包

在项目中安装包的指令

npm install 包的完整名称    或者   npm i 包的完整名称

初次安装后

c25aa5aca8e440afb76ec2149ad9297a.png

如需要安装指定版本的包,需要在包名称后通过@符号制定具体版本

npm i moment@2.29.0

包配置

fbe36e6f294c4ecaa0dfdb33d9276c96.png

快速创建package.json方法

0aa336163d50408d9ff8d929399cd594.png

dependencies节点:

package.json文件中,有一个dependencies节点,专门来记录你使用npm install命令安装了那些包(包含包的名称和版本)

一次性安装所有包:

使用npm install 或者npm i 命令时,一次性安装所有依赖包

npm install 
//或者
npm i 

卸载包:

使用npm uninstall 来卸载包

npm uninstall 包的名字

devDependencies节点:

如果一些包只在项目开发的阶段用到,在项目之后不会再用到,则建议把这些包记录到devDependencies节点中

与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到depencies节点中

//安装指定的包,并记录到devDeoendencies 节点中
npm i 包名 -D
//注意:上述命令是简写模式,等价于下面完整的写法
npm install 包名 --save-dev 

切换下包的服务器地址

6badb7936fd244048f1ba1f495e7940e.png

nrm:利用nrm提供的终端命令,可以快速查看和切换下包的镜像源

dcc591b689b64f1a86228b9409b81e51.png

包的分类

(1)项目包:被安装到项目的node_modules目录中的包

项目包又分为两类:

2f399c42af984eb592cb0755da53c7e8.png

(2)全局包:

e565fc2facd94f57a573a14460a64654.png

i5ting_toc:把.md文档转换为html页面的小工具

ca95f316ac34432b8cf15aea98bca3a0.png

规范包的结构:

9449869b05444742b5fa5217056b90cc.png

开发自己的包时初始化包的结构:

19eb82506012422b9037b598c36ff66b.png

express

对于前端,最常见的两种服务器:

8dfa432f625c4c0190596abedf981d70.png

1.express的安装:

npm i express

2.创建基本的Web服务器:

532d91bd2cb14d0db09b938f0d9b09b1.png

3.监听get请求:

通过app.get()

ad472f8e8cde40a1a01d7185ef4bc226.png

4.监听post请求:

通过app.post()

b78f5a2ea1004e518c3b024ec7bd5c66.png

5.获取Url中携带的参数

5d80711e33524baa889faf48f7798b5c.png

6.获取url中的动态参数


b6e6eae4d48f4ef6a6756e0fc201c88d.png

7.express.static():

666a321f041340e4b02877860c3c707a.png

多次调用express.static()函数会根据目录的添加顺序查找所需文件。

挂载路径前缀:

如果希望在托管的静态资源访问路径之前,挂载路径前缀,则可以使用如下的方式:

app.use('/public',express.static('public'))

nodemon

安装nodemon:

npm install -g nodemon

使用nodemon:

29ac877bfab5483f95bbeebc90b92024.png

路由

772441bbb4ad4c4ead33ded63dda83f3.png

路由的使用:

02d98149edb34b0e96a68ef65aeb885a.png

路由的模块化使用:

将路由抽离为单独模块的步骤如下:

1.创建路由模块对应的.js文件

2.调用express.Router()函数创建路由对象

3.向路由对象上挂载具体的路由

4.使用module.exports向外共亨路由对象

5.使用app.use()函数注册路由模块

创建路由模块:

var express = require( ' express')   //导入express
var router = express.Router()   //创建路由对象
router.get( " /user/list', function (req,res){ //挂载获取用户列表的路由
res.send( "Get user list.')
 })
router.post( " luser/add' ,function (req,res){ //挂视添加用广的
res.send( " Add new user. ')
 })
module.exports = router  //向外导出路由对象

注册路由模块:

//导入路由模块
const router = require( ' ./router ' )
//注册路由模块
app.use(router)

为路由模块添加前缀:

//导入路由模块
 const userRouter = require( "./routerluser.js ')3
//使用app.use()注册路由模块,并添加统一的访问前摄/api
app.use( ' lapi ',userRouter)
目录
相关文章
|
4天前
|
JavaScript 前端开发 容器
初识node.js(使用)
初识node.js(使用)
25 7
|
4天前
|
JSON JavaScript 前端开发
Node.js 的适用场景
Node.js 的适用场景
36 0
|
8月前
|
JavaScript 安全 前端开发
Node.js 20.6.0 特点
Node.js 20.6.0 特点
|
11月前
|
Web App开发 JavaScript 前端开发
Node.js 是什么?
Node.js 是什么?
|
11月前
|
SQL 存储 JavaScript
【Node.js】初识Node.js
【Node.js】初识Node.js
|
JavaScript 前端开发 Java
Node.js的特点是什么
《前端基础》
115 0
|
存储 Web App开发 JSON
一篇文章带你看懂Node.js
一篇文章带你看懂Node.js
145 0
一篇文章带你看懂Node.js
|
缓存 运维 JavaScript
狼叔:聊聊 Node.js
前阵子我在知乎上回答了《2021前端会有什么新的变化?》,单篇33.8万的阅读量,还是不错的,说明大家非常关心前端的变化趋势,这里再与大家分享一下我对 Node.js 相关内容的看法。
狼叔:聊聊 Node.js
|
机器学习/深度学习 Kubernetes JavaScript
Node.js 要完了吗?
不管你输入的是哪种技术都可以搜出来一大堆文章来,其中很多无疑写的就是垃圾。就算是 Kubernetes 之类的新技术也不能幸免,Node.js 自然也不例外。
|
Web App开发 JavaScript 前端开发