包(文件夹)
- 多个文件,有效的被组织与管理的一个单位
- 留一个入口
npm
- 自己先有一个包描述文件
- 创建一个包描述文件
npm init
- 下载一个包
npm install art-template jquery@1.5.1 --save
- 记录依赖
--save
- 记录依赖
- 根据package.json文件中的
dependencies
属性恢复依赖- 恢复包
npm install
- 恢复包
- 卸载一个包
npm uninstall jquery@1.5.1 --save
- 查看包的信息
npm info jquery
- 查看包的信息中的某个字段(版本)
npm info jquery versions
- 查看包的文档
npm docs jquery
- 安装全局命令行工具
npm install -g http-server
- 卸载全局命令行工具
npm uninstall -g http-server
- 查看全局包的下载路径
npm root -g
nrm是npm的镜像源管理工具
- 1:全局安装
npm install -g nrm
- 2:查看当前可选的镜像源
nrm ls
- 3:切换镜像源
nrm use taobao
包的加载机制
- 我们未来可能需要辨识一个包中,入口是否是我们想要的启动程序
- 1:查找node_modules下的包名文件夹中的main属性(常用)
- 2:不常用:查找node_modules下的包名.js
- 3:查找node_modules下的包名文件夹中的index.js(常用)
http核心模块
http超文本传输协议
- 协议至少双方 -> http双方
- 客户端(浏览器) -> 服务器
- 原生应用(QQ) -> 服务器
请求与响应交互的过程
- 见图
主体对象
- 服务器对象
- 客户端对象
- 请求报文对象(对于服务器来说,是可读)
- 响应报文对象(对于服务器来说,是可写)
创建服务器步骤
- 1:引入http核心对象
- 2:利用http核心对象的.createServer(callback); 创建服务器对象
- 3:使用服务器对象.listen(端口,ip地址) 开启服务器
- 4:callback(req,res) 根据请求处理响应
请求对象
- 请求首行中的url
req.url
- 请求首行中的请求方式
req.method
- 请求头中的数据
req.headers
是一个对象 - 头信息中,也可以作为与服务器交互的一种途径
获取请求体数据
-
代码对比
-
浏览器: $(‘#xx’).on(‘submit’,function(e){ })
-
服务器: req.on(‘data’,function(d){ d.toString(); })
querystring核心对象
- querystring.parse(formStr)
- username=jack&password=123转换成如下
- { username: ‘jack’, password: ‘123’ }
响应对象
- 响应首行
res.writeHead(状态码)
- 写响应头
- 一次性写回头信息
res.writeHead(200,headers)
- 多次设置头信息
res.setHeader(key,value);
- 一次性写回头信息
- 写响应体
- 一次性写回响应体
res.end();
- 多次写回响应体
res.write();
- 一次性写回响应体
请求与响应
- 头行体
- content-type是对请求或者响应体数据,做出的说明
响应体数据
- res.write(‘字符串’||读出文件的二进制数据)
- res.end(‘字符串’||读出文件的二进制数)
回写页面
- 获取资源
- art-template http
- 只能是访问 get请求 url: /hero-list 才返回该数据
- 其他请求返回ok