Node.js 中 模块 和 包的概念

Node.js 由三部分组成:ECMAScript 核心 + 全局成员 + 模块成员
核心模块:
什么是核心模块:
随着Node.js的安装包,一同安装到本地的模块,叫做核心模块;
例如:fs,path等模块,都是由Node.js官方提供的核心模块
只要大家在计算机中,安装了Node这个应用程序,那么,我们的计算机中就已经安装了所有的 核心模块;
如何使用核心模块:require(‘核心模块标识符’) 不能加路径
第三方模块:
1.什么是第三方模块:
一些非官方提供的模块,叫做第三方模块;
注意,第三方模块,并不在我们的计算机上;
如果大家需要使用某些第三方模块,必须去一个叫做 NPM 的网站上搜索并下载才能使用;
2.如何使用第三方模块:
先从 npm 官网上下载指定的第三方模块
使用 require(‘第三方模块的名称标识符’)来导入这个模块 不能加路径
根据 第三方模块的 官方文档,尝试使用
用户自定义模块:
1.什么是用户模块:
2.程序员在自己项目中写的 Javascript 文件,就叫做 用户自定义模块;
如何使用用户模块:require(‘路径标识符’)
包的定义和使用
7.2.1 什么是包
1.英文名叫做 Packages,包是在模块基础上更深一步的抽象;
2.包的目的:方便分发和推广基于 CommonJS 规范实现的 应用程序 或 类库;
3.包可以看作是 模块、代码 和 其它资源 组合起来形成的 独立作用域;

7.2.2 规范的包结构
1.包都要以一个单独的目录而存在;
2.package.json 必须在包的顶层目录下;
3.package.json 文件必须符合 JSON 格式,并且必须包含如下三个属性:name, version, main
name: 包的名字
version: 包的版本号
main: 表示包的入口文件
4.二进制文件应该在bin目录下;
5.javaScript代码应该在lib目录下;
6.文档应该在doc目录下;
7.单元测试应该在test目录下;
8.Node.js对包要求并没有那么严格,只要顶层目录下有package.json,并符合基本规范即可;
7.2.3 包描述文件 package.json【了解】
name:包的名称,必须是唯一
description:包的简要说明
version:符合语义化版本识别规范的版本字符串
keywords:关键字数据,通常用于搜索
maintainers:维护者数组,每个元素要包含name、email、web可选字段
contributors:贡献者数组,格式与maintainers相同。包的坐着应该是贡献者数据的第一个元素
bugs:提交bug的地址,可以是网址或者电子邮件地址
licenses:许可证数组,每个元素要包含type和url字段
repositories:仓库托管地址数组,每个元素要包含type、url和path字段
dependencies:包的依赖,一个关联数组,由包名称和版本号组成。
devDependencies:开发依赖项,表示一个包在开发期间用到的依赖项

npm 的两层含义
NPM 是一个 第三方模块的托管网站,指的就是https://www.npmjs.com/;
NPM 是Node的包管理工具(全名叫做 Node package manager),在我们安装Node时候,就已经顺便也安装了 NPM 这个管理工具;
安装和卸载全局包(i5ting_toc)
1.什么是全局的包:安装到计算机全局环境中的包,叫做全局包;安装的全局包可以在当前电脑的任何目录下,直接通过命令行来访问;
2.如何安装全局包:运行 npm install 包名 -g 即可;其中 -g 参数,表示 把包安装到全局目录中的意思;
3.全局包的安装目录:C:\Users\用户目录\AppData\Roaming\npm
4.什么样的包适合安装到全局:工具性质的包,适合安装到全局;
5.如何卸载全局包:要卸载某个全局的包,直接运行npm uninstall 包名 -g即可;其中 uninstall 表示卸载的意思;
安装和卸载本地包 @后跟版本号
npm init -y 初始化package.json npm -v 查询npm版本号
1.什么是本地的包:跟着项目安装的包,叫做本地包;本地包都会被安装到 node_modules 目录下;
2.注意:如果拿到一个空项目,必须在当前项目根目录中,先运行 npm init或者npm init -y 命令,初始化一个package.json的配置文件,否则包无法安装到本地项目中;
3.如何安装本地包:运行npm i 包名 --save 即可安装本地包;都安装到了当前项目的 node_modules目录下;
4.如果大家用的是npm 5.x的版本,可以不指定–save命令,如果用的是 npm 3.x 的版本,则需要手动指定 --save;
5.package-lock.json文件中记录了曾经装过的包的下载地址,方便下次直接下载包,能够加快装包的速度,提升装包的体验;
6.如何卸载本地包:使用 npm uninstall/remove 包名 -S/-D即可卸载指定的本地包;
其它常用命令
1.–save 的缩写是 -S
2.–save-dev的缩写是 -D
3.install 的缩写是 i
4.注意:dependencies 节点,表示项目上线部署时候需要的依赖项;devDependencies节点,表示项目在开发阶段需要的依赖项,但是当项目要部署上线了,devDependencies节点中的包,就不再需要了!
5.注意:当使用 npm i快速装包的时候,npm会检查package.json文件中,所有的依赖项,然后都为我们安装到项目中
6.–production 表示只安装 dependencies 节点下,记录的包,不安装devDependencies节点下的包;当项目要上线了,才会使用–production命令
解决 npm 下载慢问题
1.默认,NPM在下载包的时候,连接的是国外的服务器,所以,有时候如果网速不是特别好,可能下载不下来包;此时,大家可以全局安装一个的工具,叫做 cnpm
2.如何安装cnpm:运行 npm i cnpm -g 即可;
3.如何使用cnpm:在装包的时候,只需要把 npm 替换成 cnpm 即可,例如:
使用 npm 安装 jquery:运行 npm i jquery -S
使用 cnpm 安装 jquery: 运行 cnpm i jquery -S
把 npm 下载切换到淘宝 npm config set registry https://registry.npm.taobao.
B/S 交互模型
什么是B/S:特指基于 浏览器(Browser) 和 服务器(Server) 这种交互形式;

1.什么是服务器:在网络节点中,专门对外提供资源服务的一台电脑;
2.什么是客户端:在网络节点中,专门用来消费服务的一台电脑;
3.HTTP 协议的通信模型:请求 - 处理 - 响应的过程;
请求:由客户端发起请求;
处理:由服务器端处理请求;
响应:服务器端把处理的结果,通过网络发送给客户端;
4.什么是静态资源:服务器端只需要读取并直接发送给客户端、不需要进一步处理的资源,叫做静态资源;
5.什么是动态资源:服务器端没有现成的资源,需要服务器端动态生成的资源,叫做动态资源;
防止响应内容中文乱码问题
通过 设置响应报文头的 Content-Type,来指定响应内容的编码类型,从而防止乱码:
res.writeHeader(200, {
‘Content-Type’: ‘text/plain; charset=utf-8’
})
根据不同的URL返回不同的文本内容
使用 req.url 获取客户端请求的URL地址
根据不同的URL返回不同的HTML页面
主要思路:使用 fs 模块 读取URL对应的HTML页面内容,并使用 res.end() 响应给客户端即可;
处理并返回css样式表
处理并返回Javascript文件
优化
开启简单的服务器:

Const http = require('http');
Const server = http.createServer();
server.on('request', function(request, response) {
console.log('收到客户端的请求了' + request.url);
response.write('hello');
response.write('node.js');
response.end();
})
server.listen(3030, function() {
console.log('服务器启动成功了,可以通过 http://127.0.0.1:3030/ 来进行访问');
})



  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值