初学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是一个基于Chrome V8 JavaScript引擎构建的开源运行时环境,它允许开发者使用JavaScript在服务器端运行代码。Node.js具有高性能、轻量级、事件驱动和非阻塞I/O等特性,这些特性使得它在多种场景下具有广泛的应用。
41 0
|
4月前
|
Web App开发 资源调度 JavaScript
node.js详解
node.js详解
41 0
|
JSON 缓存 JavaScript
node.js(2)
简介 什么是模板化 将一个复杂的程序文件依据一定规则(规范)拆分成多个文件的过程称之为 模块化 好处 下面是模块化的一些好处: 防止命名冲突 高复用性 高维护性 暴露数据 如何暴露两种方式
70 0
|
JSON 前端开发 JavaScript
Node.Js(二)
Node.Js
74 0
|
6月前
|
JavaScript 前端开发 容器
初识node.js(使用)
初识node.js(使用)
44 7
|
JavaScript 安全 前端开发
Node.js 20.6.0 特点
Node.js 20.6.0 特点
|
缓存 运维 JavaScript
狼叔:聊聊 Node.js
前阵子我在知乎上回答了《2021前端会有什么新的变化?》,单篇33.8万的阅读量,还是不错的,说明大家非常关心前端的变化趋势,这里再与大家分享一下我对 Node.js 相关内容的看法。
狼叔:聊聊 Node.js
|
JavaScript API 前端开发
Node.js - What's next
来自 Node.js 技术委员会(TSC)主席 Michael Dawson 在 D2 的分享,Node.js 工作组正在做的事情及未来规划。
Node.js - What's next
|
机器学习/深度学习 Kubernetes JavaScript
Node.js 要完了吗?
不管你输入的是哪种技术都可以搜出来一大堆文章来,其中很多无疑写的就是垃圾。就算是 Kubernetes 之类的新技术也不能幸免,Node.js 自然也不例外。
|
JavaScript 前端开发
Node.js的特点
作为后端JavaScript的运行平台,Node保留了前端JavaScript中些熟悉的接口,没有改写语言本身的任何特性,依旧基于作用域和原型链,区别在于它将前端中广泛应用的思想作用到了服务器端。下面我们来看看Node相对于其他语言的一些特点。
1416 0