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项目的时候,如果修改了项目的代码,就不需要频繁启动、停止

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容