精神畅快,心气平和;饮食有节,寒暖当心;起居以时,劳逸均匀
文章目录
- node.js
- 使用http搭建服务器的问题
- 获取请求相关的信息
- 响应相关的信息
- var、let、const对比
- npm使用
- 全局安装包
node.js
- 概念
- node.js是一个基于Chrome v8引擎的Javascript运行环境
- 浏览器是javascript的前端运行环境
- node.js是javascript的后端运行环境
- node.js中无法调用DOM和BOM等浏览器内置API
- node.js是一个基于Chrome v8引擎的Javascript运行环境
- 作用
- 基于Express框架 (http://www.expressjs.com.cn/),可以快速构建web应用
- 基于Electron框架 (https://electronjs.org/),可以构建跨平台的桌面应用
- 基于restify框架 (http://restify.com/),可以快速构建API接口项目
- 读写和操作数据库,创建实用的命令行工具辅助前端开发
- 使用
- 使用快捷键window + R打开运行面板,输入cmd后直接回车,即可打开终端
- 打开终端,在终端输入命令node-v后,按下回车键,即可查看已安装的node.js的版本号
- 使用 ↑ 键,可以快速定位到上一次执行的命令
- 使用tab键,能够快速补全路径
- 使用esc键,能够快速清空当前已输入的命令
- 输入cls命令,可以清空终端
- fs文件系模块
- 如果要在javascript代码中使用fs模块来操作文件,则需要使用如下方式先导入他
const fs = require('fs')
-
fs.readFile()
用来读取指定文件中的内容 -
fs.writeFile()
用来指定的文件中写入内容 -
fs.readdir()
用来读取指定目录下所有文件的名称
- http模块:用来创建web服务器和客户端的模块
- 如果要在javascriptjavascript代码中使用http模块,则需要先导入他
const http = require('http')
-
http.createServer()
用来创建一个web服务器,从而对外提供web资源 -
http.request()
用来发起http网络请求,请求其它web服务器上的资源
- 如果要在javascriptjavascript代码中使用http模块,则需要先导入他
- 如果要在javascript代码中使用fs模块来操作文件,则需要使用如下方式先导入他
使用http搭建服务器的问题
- 如果代码更改了,则需要重新启动服务器,代码才会生效
- ctrl + c,先终止服务
- 再次执行node xxx.js重新启动服务器即可
- vscode终端使用的问题
获取请求相关的信息
server.on('request', function (req) {
// req是一个对象,表示请求相关的信息,是根据http.IncomingMessage类得来的
// req.method : 请求的方式 GET或POST
// req.url:请求的url
// req.headers:请求头
console.log('请求方式是: ' + req.method + ',请求的url是:' + req.url)
// console.log('请求已收到')
})
得到请求相关的信息之后,方便服务器做出判断
响应相关的信息
server.on('request', function (req, res) {
// 所有和请求相关的信息,都是通过req(request:请求)对象获取的
// 所有和相应相关的信息,都通过res(response:响应)来完成
// console.log(res instanceof http.ServerResponse)
// res.end(); 用于做出响应
// res.setHeader(name,value) 设置响应头
// res.statusCode 设置响应状态码
// res.writeHead(状态码,{响应头})
// 告诉浏览器,响应的数据是什么类型,什么编码
// res.setHeader('Content-Type', 'text/html;charset=utf-8')
res.writeHead(200, {
'Content-Type': 'text/html;charset=utf-8',
'Author':'tiantian', // 值不能用中文
})
res.end('hello,浏览器,你的请求我收到了,这是给你的回应')
})
var、let、const对比
- let是声明变量的,如果一个值允许他变化,则使用let
- 如果不希望一个标识的值呗改变,则使用const
初始值 | 更改值 | 重新声明 | 变量提升 | 块级作用域 | window调用 | |
---|---|---|---|---|---|---|
var | 可有可无 | √ | √ | √ | × | √ |
let | 可有可无 | √ | × | × | √ | × |
const | 必须有 | × | × | × | √ | × |
npm使用
- npm这个工具,在安装node的时候,就已经安装到计算机了
- 命令行中执行
npm -v
,如果看到版本号,说明安装成功 - 作用:管理node模块的工具
- 初始化 (在使用npm工具之前,必须先初始化)
npm init -y
npm init
- 安装 (下载安装第三方模块)
- `npm install``
npm i 模块名
- 更改镜像源
- 查看镜像源 (下载包的地址)
npm config getregistry
- 全局更改镜像源
npm config setregistry
- 查看镜像源 (下载包的地址)
- 下载的项目模块只能在当前项目文件夹及其后代文件夹中使用
全局安装包
- 全局安装的模块,不能通过require()加载使用
- 安装一个全局模块,名字叫nodemon
npm i nodemon -g
- nodemon作用:代替node命令,启动服务的,当更改代码之后,nodemon会自动帮我们重启服务
- 运行nodemon,如果报错如下
- 解决办法是
- 管理员方式,打开命令行窗口
- 执行
set-ExecutionPolicyRemoteSigned
- 在出现的选项中,输入A,回车即可
- 解决办法是
- 运行nodemon,如果报错如下