NVM
如何安装nvm
- brew下载地址:
1、brew.sh
-
nvm:nodejs版本管理工具,可切换多个nodejs版本工具;
-
macOS:使用brew install nvm;
-
windows:GitHub搜索nvm-windows,有下载地址。
使用nvm管理nodejs
-
nvm list 查看当前所有node版本;
-
nvm install v12.19.0 安装指定版本;
-
nvm use --delete-prefix 12.19.0 切换到指定版本;
-
nvm alias default v12.19.0 设置默认版本。
NODEJS
在Ubuntu安装nodejs
Git
在Ubuntu安装Git
执行命令:
sudo apt-get install git
Git配置
git config --global user.name 'ZHTGithub'
git config --global user.email 'chat195@163.com'
ssh-keygen -t rsa -C 'chat195@163.com'
生成ssh密钥(出现的提示有密钥所在目录)
ssh-keygen -t rsa
测试连接是否畅通
ssh -T git@git.oschina.net
Nginx
在Ubuntu安装Nginx
apt-get install nginx
获取配置文件的位置及语法是否正确:
nginx -t
使用Nginx实现端口转发
# include /etc/nginx/sites-enabled/*;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://127.0.0.1:3000;
}
}
重启/重加载,使配置生效
service nginx restart
service nginx reload
使用Nginx部署HTTPS服务
# 将http重定向https
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name zenghaitao.cn;
return 302 https://$server_name$request_uri;
}
# 配置https server
server {
listen 443;
server_name zenghaitao.cn;
ssl on;
ssl_certificate /etc/nginx/certs/zenghaitao.cn.pem;
ssl_certificate_key /etc/nginx/certs/zenghaitao.cn.key;
location / {
root /html;
}
}
使用Nginx获取真实客户端IP
server {
listen 80;
server_name zenghaitao.cn;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Node.js 面试真题
nodejs是什么?
-
nodejs是基于Chrome V8引擎的JavaScript运行时;
-
nodejs出现前,js只能在浏览器运行;
-
nodejs出现后,js可以在任何安装nodejs的环境运行。
nodejs和前端js的区别
语法
- 都使用ES语法;
- 前端js使用 JS Web API;
- nodejs使用 node API。
应用
-
前端js用于网页,在浏览器运行;
-
nodejs可用于服务端,如开发web server;
-
nodejs也可用于本机,如webpack等本机的工具。
nodejs如何调试
-
启动nodejs服务时,使用inspect;
-
代码中使用debugger断点;
-
使用Chrome调试 - chrome://inspect。
当前文件和当前目录的路径,如何获取?
-
__filename;
-
__dirname;
-
两个都是全局变量。
commonjs 和 ES6 Module的区别
- 语法不同
- commonjs 是动态引入,执行时引入;
- ES6 Module是静态引入,编译时引入。
path.reslove 和 path.join的区别
- 两者都用于拼接路径;
- path.reslove获取绝对路径;
- path.join获取相对路径。
event loop 在浏览器和 nodejs 的区别
-
nodejs 异步API跟多,宏任务类型也更多;
-
nodejs 的Event loop分为6个阶段,要按照顺序执行;
-
微任务中 process.nextTick 优先级更高。
async/await 执行顺序问题
session 如何实现登陆?
- cookie如何实现登陆校验;
- session和cookie的关系;
- session为何需要存储在redis中。
描述koa2 和 express 的中间件机制
-
从代码来看,中间件就是一个函数;
-
从业务来看,中间件就是一个独立的模块;
-
某快拆分,模块流转,即可完成复杂的功能。
读取大文件 - 流 stream
-
1G大小的access.log;
-
分析其中Chrome浏览器的占比;
-
考虑CPU和内存的限制。
nodejs 线上为何开启多进程?
- 高效使用多核CPU;
- 充分利用服务器内存;
- 最终:压榨服务器,不浪费资源。