http模块

1.客户端与服务器

 

 需要使用http模块创建web服务器,则需要先导入它

格式:const http=require('http')

2.http模块的作用

 3.服务器相关的概念

3.1ip地址

ip地址是互联网每台计算机的唯一地址,因此ip地址具有唯一性

获取百度的ip地址:Windows+r 打开运行窗口 输入cmd 打开命令窗口 输入ping www.baidu.com

3.2域名和域名服务器

 3.3端口号

 只有80端口号可以被省略

 3.4创建最基本的web服务器

 1.导入http模块

2.创建web服务器实例

 

3.为服务器实例绑定request事件

 

4.启动服务器

 

 3.req请求对象 4.req响应对象

5.解决中文乱码问题

4.5根据不听的url响应不同的html内容

 2.动态响应内容

3.6实现clock时钟的web服务器

1.核心思路

把文件的实际存放路径,作为每个资源的请求url地址

 

 实现步骤

 

 2node.js中的模块化

2.1模块的分类

将模块分为3大类

2.2加载模块

 

 模块作用域

 3.1包

 提供各种包:https://www.npmjs.com/

 下载包:https://registry.npmjs.org/ 

 

npm与包

3.3包管理配置文件

npm规定,在项目根目录中。必须提供一个叫做 package.json的包管理配置文件。用来记录与项目有关的一些配置
信息例如: .
●项目的名称、版本号、描述等
●项目中都用到了哪些包
●哪些包只在开发期间会用到
●那些包在开发和部署时都需要用到
1.对人协作的问题

 2.如何记录项目中安装了那些包

在项目根目录中,创建-个叫做 package.jsqn的配置文件,即可用来记录项目中安装了哪些包。从而方便剔除
node_ modules目录之后,在团队成员之间共享项目的源代码。
注意:今后在项目开发中,一定要把 node. modules文件夹,添加到.gitignore忽略文件中。

3.快速创建package.json

npm包管理工具提供了一个快捷命令 ,可以在执行命令时所处的目录中,快速创建packagejson这个包管理
配置文件:

 注意:
①上述命令只能在英文的目录下成功运行!所以,项目文件夹的名称一定要使用英文命名,不要使用中文,不能出现空格。
②运行npm install命令安装包的时候, npm包管理工具会自动把包的名称和版本号,记录到packagejson中。

4. dependencies节点

packagejson文件中,有一个dependencies节点,专门用来记录您使用npm install
命令安装了哪些包。

 5、一次性安卓所有的包

当我们拿到一个剔除 了node modules的项目之后,需要先把所有的包下载到项目中,才能将项目运行起来

否则会报类似于下面的错误:

可以运行npm install令(或 npm i)-次性安装所有的依赖包:

6.卸载包

可以运行 npm uninstall 命令,来卸载指定的包

npm uninstall moment

注意: npm uninstall命令执行成功后,会把卸载的包,自动从packagejson的dependencies中移除掉。

7. devDependencies节点

如果某些包只在项目开发阶段会用到,在项目上线之后不会用到,则建议把这些包记录到devDependencies节点中。
与之对应的,如果某些包在开发和项目上线之后都需要用到,则建议把这些包记录到dependencies节点中。
您可以使用如下的命令,将包记录到devDependencies节点中:

 如果某些包只在项目开发阶段会用到,在项目,上线之后不会用到,则建议把这些包记录到devDependencies节点中
与之对应的,如果某些包在开发和项目上线2后都需要用到,则建议把这些包记录到dependencies节点中。

 

 3.4下包速度慢

 扩展:
镜像(Mirroring)是一种文件存储形式,-个磁盘上的
数据在另一个磁盘上存在一个完全相同的副本即为镜像。

1.查看当前下包镜像源:npm config get registry

2.将下包的镜像切换为淘宝: npm config set registry https://registry.npm.taobao.org

 3.检查镜像源是否下载成功:npm config get registry 

3.4解决下包速度慢的问题
4. nrm
为了更方便的切换下包的镜像源,我们可以安装nrm这个小工具,利用nrm提供的终端命令,可以快速查看和切换下
包的镜像源。

 

 3.5包的分类

1.项目包
那些被安装到项目的node, _modules目录中的包,都是项目包。

项目包又分为两类,分别是:
●开发依赖包 (被记录到devDependencies节点中的包,只在开发期间会用到)
●核心依赖包(被记录到dependencies节点中的包,在开发期间和项目.上线之后都会用到)

 2.全局包

 注意:
①只有工具性质的包,才有全局安装的必要性。因为它们提供了好用的终端命令。

❷判断某个包是否需要全局安装后才能使用,可以参考百方提供的使用说明即可。

3. i5ting. toc
i5ting_ toc 是-个可以把md文档转为html页面的小工具,使用步骤如下:

3.6规范的包结构
在清楚了包的概念以及如何下载和使用包之后,接下来,我们深入了解一下包的内部结构。
D
-个规范的包,它的组成结构,必须符合以下3点要求: 

①包必须以单独的目录而存在
②包的顶级目录下要必须包含package.json这个包管理配置文件
③packagejson 中必须包含name, version, main这三个属性,分别代表包的名字、版本号、包的入口。

3.7开发属于自己的包
1.需要实现的功能

 2.初始化包的基本结构
①新建itheima-tools文件夹,作为包的根目录
②在itheima-tools文件夹中,新建如下三个文件:
●package.json (包管理配置文件)
●indexjs(包的入口文件)
●README.md (包的说明文档)

 包的名称:必须是唯一

4.在index.js中定义格式化时间的方法

 

 5.在index.js中定义转义HTML的方法

 

6.在index.js中定义还原HTML的方法

 7.将不同的功能进行模块化拆分
①将格式化时间的功能,拆分到src -> dateFormatjs中
②将处理HTML字符串的功能,拆分到src -> htmlEscapejs中
③在indexjs中, 导入两个模块,得到需要向外共享的方法
④在indexjs中,使用module.expots把对应的方法共享出去

 8.编写包的说明文档
包根目录中的README.md文件,是包的使用说明文档。通过它,我们可以事先把包的使用说明,以markdown的
格式写出来,方便用户参考.

README文件中具体写什么内容,没有强制性的要求;只要能够清晰地把包的作用、用法、注意事项等描述清楚即可。
我们所创建的这个包的README.md文档中,会包含以下6项内容:
安装方式、导入方式。格式化时间、转义HTML中的特殊字符、还原HTML中的特殊字符、开源协议3.8发布包
1.注册npm账号
①访问htps//www.npmjs.com/网站,点击sign up按钮,进入注册用户界面
②填写账号相关的信息: Full Name. Public Email. Username. Password
③点击Create an Account按钮,注册账号
④登录邮箱,点击险证步链接,进行账号的脸证

终端登录 :1.镜像切换为 npm 官方

1:nrm use npm

2:登录

npm login

要求你输入用户名 密码

3.把包发布到npm上
将终端切换到包的根目录之后,运行npm publish命令,即可将包发布到npm上(注意:包名不能雷同)

4.删除已发布的包
运行npm unpublish包名-force命令,即可从npm删除已发布的包。

注意:
①npm unpublish命令只能删除72小时以内发布的包

②npm unpublish删除的包,在24小时内不允许重复发布

❸发布包的时候要慎重,尽量不要往npm上发布没有意义的包!

: 4.模块的加载机制
4.1优先从缓存中加载
模块在第一-次加载后会被缓存,这也意味着多次调用 require0不会导致模块的代码被执行多次。
注意:不论是内置模块、用户自定义模块、还是第3方模块,它们都会优先从缓存中加载,从而提高模块的加载效率。
4.1优先从缓存中加载
模块在第一-次加载后会被缓存,这也意味着多次调用 require0不会导致模块的代码被执行多次。
注意:不论是内置模块、用户自定义模块、还是第3方模块,它们都会优先从缓存中加载,从而提高模块的加载效率。

同时,在使用require0导入自定义模块时,如果省略了文件的扩展名,则Node,js会按顺序分别尝试加载以下的文件:
①按照确切的文件名进行加载
②补全js扩展名进行加载

③补全json打展名进行加载
④补全.node扩展名进行加载
⑤加载失败,终端报错

4.4第三万模块的加载机制
如果传递给require0的模块标识符不是一一个内置模块,也没有以'/” 或./开头, 则Nodejs会从当前模块的父
日录开始,尝试从/node_ modules文件夹中加载第三方模块。

如果没有找到对应的第三方模块,则移动到再上一层父目录中,进行加载,直到文件系统的根目录。
例如,假设在'C:\Users\itheima\project\foojs'文件里调用了require(tools'), 则Nodejs会按以下顺序查找:①C\Users\itheima\projectnode. modulstools

②C\Usersitheimalnode modlstoos

③C:\Users\node_ modules\tools
④C\node modules\tools

还找不到 报错

4.5目录作为模块
当把目录作为模块标识符,传递给require0进行加载的时候,有三种加载方式:
①在被加载的日录下查找一个叫做 package.json的文件,并寻找main属性,作为require0加载的入口
②如果目录里没有packagejson文件,或者main入口不存在或无法解析,则Nodejs将会试图加载目录下的index.js文
③如果以上两步都失败了,则Nodejs会在终端打印错误消息,报告模块的缺失: Error: Cannot find module xxx

1.1 Express简介
1.什么是Express
官方给出的概念: Express 是基于Nodejs平台,快速、开放、极简的Web开发框架。
通俗的理解: Express 的作用和Node.js内置的http模块类似,是专门]用来创建Web服务器的。
Express的本质:就是一个npm.上的第三方包,提供了快速创建Web服务器的便捷方法。
Express的中文官网: http://www expressjs.com.cn/

1.3托管静态资源
1. express.static()
express提供了-个非常好用的函数,叫做express.static0,通过它,我们可以非常方便地创建一个静态资源服务器,
例如,通过如下代码就可以将public目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:
app . use(express . statico”public' )
现在,你就可以访问public 目录中的所有文件了:
htpt:/lhos(3000/age/g.jigj
htt://localhost:3000/css/style.css
注意: Express 在指定的静态目录中查找文件,并对外提供资源的访问路径。
htpt:/ahos(3000/loginjisj
因此,存放静态文件的目录名不会出现在URL中.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值