1.1 请求和显示html, css
-
发请求的两种方法:
- chrome地址栏直接输入.
- 用curl来请求:
curl http://127.0.0.1:8888/
帮我发送请求的工具叫做用户代理(User Agent)
-
运行server.js 的命令:
node server.js 8888 -
请求就执行一遍js代码.
-
反单引号 . 可以回车. 设置返回字符集.
if (path === '/') { response.statusCode = 200 response.setHeader('Content-Type', 'text/html;charset=utf-8')//这里,指定字符集 response.write(`二哈\n`)//这里是反单引号, 1旁边的,容易错 response.end() } -
不
response.end()就会一直等待 -
一个路径返回html ,一个css
if (path === '/') {//这返回html response.statusCode = 200 response.setHeader('Content-Type', 'text/html;charset=utf-8') response.write(` <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="/x"> </head> <body> <h1>标题</h1> </body> </html> `) response.end() } else if (path === '/x') {//这返回css response.statusCode = 200 response.setHeader('Content-Type', 'text/css;charset=utf-8') response.write(`body{color: red;}`) response.end() }<link rel="stylesheet" href="/x">就会以path = '/x'再请求一次css
1.2 请求和显示js
-
/x不需要写后缀. 后缀给小白看的, 给电脑软件看的 -
最好调用
response.end() -
请求和显示js方法.
if (path === '/') { response.statusCode = 200 response.setHeader('Content-Type', 'text/html;charset=utf-8') response.write(` <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="/x"> </head> <body> <h1>标题</h1> <script src="/y"> </script> </body> </html> `) response.end() } else if (path === '/x') { response.statusCode = 200 response.setHeader('Content-Type', 'text/css;charset=utf-8') response.write(`body{color: red;}`) response.end() } else if (path === '/y') { response.statusCode = 200 //这里设置js的文件格式 response.setHeader('Content-Type', 'text/javascript;charset=utf-8') response.write(`console.log('这是js内容')`) response.end() }<script src="/y"> </script>放进就会自动请求调用y的js 文件
1.3 请求和响应的规范写法
基础概念
请求的格式
-
请求行: 请求动词 路径加查询参数 协议名/版本号
例如:
get /x?id=1 HTTP/1.1 -
请求头: 主要记住三个:
- Host: 域名或IP
- Accept: text/html
- Content-Type:请求体的格式
例如:
Host: localhost:8888Accept: text/css,*/*;q=0.1Content-Type: text/css;charset=utf-8 -
头和体之间的分割: 用回车分割
响应的格式
响应行, 头, 体
-
响应行: 协议名/版本号 状态码 状态字符串
例如:
HTTP/1.1 200 OK -
响应头:
Content-Type: text/javascript;charset=utf-8 -
响应体过.
1.4 用curl构造请求
curl -v -X POST -H 'Accept: text/html' -H 'Content-Type: text/html' -d '请求体内容' http://localhost:8888
读取:
var server = http.createServer(function (request, response) {
var parsedUrl = url.parse(request.url, true)
var pathWithQuery = request.url
var queryString = ''
if (pathWithQuery.indexOf('?') >= 0) { queryString = pathWithQuery.substring(pathWithQuery.indexOf('?')) }
var path = parsedUrl.pathname
var query = parsedUrl.query
var method = request.method
响应:
if (path === '/') {
response.statusCode = 200
response.setHeader('Content-Type', 'text/html;charset=utf-8')
response.write(`
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="/x">
</head>
<body>
<h1>标题</h1>
<script src="/y"> </script>
</body>
</html>
`)
response.end()
}
write.可以追加.
1.5 404 页面
curl的作用
用curl下载资源
curl url > 1.jpg: cur就是不可视的浏览器.
404也是一个页面
1.6 console.log大法
不断质疑自己, 打印变量和if后面的语句.
1.8 阿里云部署nodejs代码
shell 命令行的技巧:
-
sudo !!: 相当于sudo 上一次的代码 -
ctrl a: 光标移到行首ssh 远程登录
echo '复制本地~/.ssh/id_rsa.pub内容' >> ~/.ssh/authorized_keys
防止 ssh 卡住
echo "Host *" >> /etc/ssh/ssh_config
echo " ServerAliveInterval 30" >> /etc/ssh/ssh_config
创建应用账户
adduser frank
mkdir /home/frank/.ssh
cp ~/.ssh/authorized_keys /home/frank/.ssh/
chmod 755 /home/frank/.ssh/authorized_keys
chown frank:frank /home/frank/.ssh/authorized_keys
adduser frank sudo
安装 Node.js 8
curl -sL https://deb.nodesource.com/setup_8.x | sudo bash -
sudo sed -i 's/deb.nodesource.com\/node_8.x/mirrors.tuna.tsinghua.edu.cn\/nodesource\/deb_8.x/g' /etc/apt/sources.list.d/nodesource.list
sudo apt-get update
sudo apt-get install -y nodejs
node -v
npm -v
npx -v
sudo apt install git
部署应用
git clone https://github.com/FrankFang/nodejs-test.git
cd nodejs-test
touch log
启动命令:node server.js 8888 > log 2>&1 &
把启动命令做成 start 文件
添加执行权限 chmod +x ./start
运行 sh ./start 得到一个进程号 pid
tail log 看 log 内容
kill -9 pid 可以关掉进程
killall node 可以关掉所有 node 进程
如何重启应用
ssh frank@实例ip
cd nodejs-test
git pull
killall node(因为忘了进程号,实际上可以记下来)
sh ./start