Nodejs基础知识3

7模块化

7.1模块化概念

小霸王游戏机,卡带与整体可以拆分。编程过程中把大文件拆成独立互相依赖的多个小模块。把复杂的问题拆分为多个小模块。

模块化好处:好处多多,能用就用

模块分类:内置(fs、path、http)自定义(.js文件)第三方模块(既不是官方也不是自己开发的模块)//软件官方,本人,其他人

加载其他模块,会执行被加载模块中的代码。

const custom = require('./custom.js') //加载自定义模块 可以省略.js

const moment = require('moment') //加载第三方模块

模块作用域:在自定义模块中变量、方法、只能在当前模块内被访问。用来防止全集变量的污染

module 对象 ,用此对象来对外暴露块作用域内的,内部有一个exports对象

当使用require()方法导入自定义模块时,得到就是module.exports所指的对象。导入的结果以module.exports为准

默认情况下 exports 和module.exports 指向的同一个对象

exports 和 module.exports  不可混合使用 。require模块中 永远是module.exports

7.2CommJS规范

①在每个模块的内部,module变量代表当前模块

②module变量是一个对象,exports是对外接口

③加载某个模块,其实加载的是module.exports。require 加载对象

7.3 Node.js中模块的三大分类

7.4 npm管理包

第三方模块又叫做包。 包是基于内置模块封装出来的。npm 全球最大的包共享平台

www.npmjs.com registry.npmjs.com

以引入moment包为例

npm install moment //或 npm i moment

装包以后 多了node_modules 同时多了package-lock.json,尽量不要手动修改这两个文件

7.4.1 包的版本号含义

第一位:大版本(底层重构) 第二位:功能版本 (增加功能等)  第三位:Bug修复版本。只要前面的版本号增长了,后面的版本号归零

把node_modules 文件夹添加到git 的.gitignore 文件中

npm init -y  //创建package.json 要英文目录,不要包含中文及空格

npm i //一次性根据package.json 安装所有依赖的包

npm uninstall //命令执行成功后,会卸载包,将包从package.json中删除

npm i -D 包名 //将包安装到devDependencies //仅开发时使用到的包

npm i moment@2.22.2 //指定包版本示例

npm config get registry //当前源

npm config set registry=https://registry.npm.taobao.org //换源到淘宝

nrm管理源工具

npm i nrm -g //安装nrm

nrm ls //查看源目录

nrm use taobao //用淘宝源

7.4.2

npm install 如果增加了-g参数,就是将包安装到全局 文件位置为c:\users\sername\AppData\Roaming\npm\node_modules

7.5规范的包结构

7.6了解模块的加载机制

8 express 路由

Express 中路由最简单的方式 挂载到app上

const express = require('express')

const app = express()

app.get('/',(req,res)= > {

console.log('使用了get方法')

})

app.listen(80,() =>{

console.log('http://127.0.0.1')

})

2模块化路由

创建路由模块的.js文件

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

var express = require('express') //导入express

var router = express.Router()    //创建路由对象 ①

router.get('/user/list',function(req,res) {

res.send('Get user list') //挂载获取用户列表的路由 ②

})

router.post('/user/add',function(req,res) {

res.send('Add new user.')  //挂载添加用户的路由 ③

})

module.exports = router    //向外导出路由对象 ④

导入路由模块

const express = require('express')

const app = express()

const router = require('./03.router')

app.use(router)              //函数注册路由模块 use()就是注册全局中间件

    //app.use('/api',router) //访问地址加了前缀 /api

app.listen(80,()=> {

console.log('http://127.0.0.1')

})

---------------------------------------------------------

express

1  什么是express:node.js 平台,web开发框架  ,基于http模块封装出来的

学会后可以:web网站服务器、API接口服务器

app.get('/',(req,res)=>{

  req.requery //请求参数 是一个对象, get方法  url?后的数据

  req.params // 通过:匹配到动态参数

res.send //应答

})

示例

app.get('/user/:id/:username',(req,res)=>{  // :号后面的字符串可以随便写,仅仅是 :号 ,是固定的

  console.log(req.params)

res.send(req.params)

})

得到结果 {id:2,username:zs}//请求写的是/user/:2/zs

2 express.static()托管静态资源

const express = require('express')

const app = express()

示例:app.use(express.static('public')) //这样就可以访问public目录中的所有文件了

如果要托管多个静态资源目录 就多用几次上面的示例

express 在指定的静态目录中查找文件,并对外提供资源的访问路径,因此存放静态文件的目录名不会出现在URL中

3挂载路径前缀

app.use('/public',express.static('pbulic')) //这样url中就必须由/public 了

4 nodemon

在编写node.js项目的时候,如果修改了项目的代码,就不需要频繁启动、停止

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容