Skip to Content
全部文章搬砖工具远程开发2年,有哪些优劣以及如何使用

远程开发2年,有哪些优劣以及如何使用

Note

用了2年的远程开发,总结了一些优劣, 并且分享了如何配置VSCode远程开发的教程,还有在开发中遇到的一些问题的应对方法

前端IDE

前端可选ide我想用得最多的就是vscodewebstorm,其他相对使用比较少。

对于前端开发,txt编辑器都可以开工,但是要代码写得爽,还是需要ide的。

自从误打误撞写进前端以来,用过vscode,用过webstorm,前端刚开始分离出来那几年webtorm还拥有不小的优势,那时候vscode的功能还比较简单,在智能提示,搜索,跳转方面落后于webstorm, 但是缺点也很明显,内存占用高,启动速度慢,新导入项目时,卡顿,一些智能功能不可用,原因是他会扫描项目来建立一些索引,但是vscode没有这些负担,启动项目超快,同时运行几个项目也不会占用过多内存。

时间到了2025年,如今vscode通过不断迭代和大量扩展加持下,已经成为前端开发ide首选,高性能之下通过扩展补全智能化方面的不足,市占率几乎统领前端。

但是大量的扩展也带来了一些问题,扩展冲突、配置麻烦,遇到问题排查也难搞。但仍然不影响我从vscode发布之初便一直使用至今,刚开始看别人的webstrom那么智能也曾短暂的背叛过它,但最终因为vscode的快速启动重新回归。

由于vscode用户量大,所以远程开发的支持是最好的,配置简单,所以本文基于vscode远程开发来讲述。

远程开发

Note

什么是远程开发?

远程开发是指通过网络连接到远程服务器上进行开发,通过远程开发工具、浏览器,可以在本地直接操作远程服务器上的代码,实现代码的同步和调试,今天主要讨论 通过本地VsCode连接服务器上的开发环境进行开发。

远程开发图

如图所示:你的电脑提供输入设备(键盘、鼠标)和输出设备(显示器),服务器提供计算资源,中间通过网络连接起来。

为什么要用远程开发

为什么要使用远程开发?这个问题其实不好回答,因为有些偏于主观,但是我想如果我把优势劣势说出来之后,如果优势是解决了你痛点,劣势对你来说不是问题,那你就会认为 远程开发是值得选择的。比如我主要就是老mbp发热严重,夏天难受,又烫又降频,自从远程开发后,机器风扇也不爱转了,体验好太多了。

有哪些优势

  1. 环境一致 - 不论你身处何方,用什么操作系统,你的开发环境始终是一致的
  2. 性能无关 - 你所使用的电脑性能和你的开发工作无关
  3. 安全 - 你的代码不会泄露在本地,服务器上的代码也不会泄露在本地
  4. 便捷 - 你可以在任何地方,任何时间进行开发

有哪些问题

  1. 依赖网络稳定 - 你的网络不好,你的开发效率会受到影响
  2. 依赖服务器稳定 - 服务器出问题,你的开发效率会受到影响

怎么加入远程开发

服务器硬件配置

谈怎么配置远程开发之前,先说说远程开发服务器配置选择,这个主要是看你的项目是什么体量、你跑的项目是什么类型的, 通常有几种方法来实现远程开发,1.物理机(家里或者公司,必须有公网ip) 2.云服务器

方式优势缺点适合谁选择
家里物理机可以用闲置机、高性能的小主机部署在家里,性能选择自由很多没有公网IP,就算有公网ip是动态变化的,网络稳定性不如商业带宽,上行带宽限制严重,就算是50w的功耗,一个月下来也要不少电费有公网的家庭宽带可以选择
公司物理机性能通常都不会太差,带宽高且稳定,没有额外费用往往是不允许的,服务器属于公司,数据也属于公司给公司打工项目可以用
云服务器全托管,且有稳定保障价格略贵家里没有公网ip,或者家里没有适合的主机可选择云服务器

配置选择就要看你的项目情况了,我只能说说我用过的几个云服务器远程机器,给大家参考一下,只说前端远程开发的情况,最低要求2c8g,前端开发对cpu要求不算高, 主要是内存要求会比较大,推荐选择1比4的机器,比如2c8g,4c16g这种,小于2c8g的服务器会频繁的卡死,主要是爆内存导致的。

机器运行情况
2c8g我认为这个配置是云开发的基础条件,跑一些小的项目够用了
4c8g这是我目前在用的配置,编译同一个项目4c也就比上面的2c快10多秒,40秒编译完成,上面的2c8g要50多秒,像跑nextjs编译页面过多就会内存爆,所以我比较推荐4c16g
32c64g这是公司的机器,只用来开发公司的项目,这种配置没啥好说的,也没有任何问题,- -!

其实我是首推云服务器的,如果你有公网ip,那我推荐你考虑一下n100的小主机,超低功耗,单核性能比轻量云服务器单核性能还强一点点。

最后说说网络

因为咱这云开发,网络是至关重要的,推荐5M以上的带宽,因为跑起来的项目是通过网络访问的,小水管访问速度会比较慢,推荐服务器距离你越近越好的地域。

网络性价比的话,推荐腾讯的轻量云服务器最新推出的锐驰版, 2c8g,200m峰值带宽,用券几十块钱一个月:

💡
Tip

【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中 https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=7f2c46061811a8a4e80dd28d66946205&from=console

配置VSCode远程开发

安装非常简单,准备好服务器,其他安装都是vscode去帮你做,你填写一些参数就行了

💡
Tip

服务器端口一定要放行打开22

安装扩展

在vscode中安装这几个插件,都装上

1

添加服务器

在这里点击加号

1

输入你的服务器ip地址,然后回车

ssh 你的账号@ip

1

选择第一个config,回车

1

连接服务器

然后在你的列表就可以看到你的服务器了,点击箭头可以登录,第一次会要求你输入密码

1

输入密码后,可以看到已经连接成功了

1

如果是webstrom,也支持远程开发,但是配置上可能没有vscode这么方便。

就酱紫,你的远程开发服务器已经ok了

免密登录(如果不需要,可以不看)

默认情况下每次登录都需要输入密码,如果配置免密登录后就可以直接连接服务端进行开发了,配置方式就是生成密钥对,在本机配置密钥, 在服务端配置公钥,主要保护自己的密钥,不要泄露出去,这样别人就可以直接登录你的服务器了.

首先在安装有ssh-keygen的服务器或者本地生成密钥对

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

参数说明

  • -t rsa:指定密钥类型为 RSA。
  • -b 4096:指定密钥长度为 4096 位,位数越高,密钥越安全。
  • -C "your_email@example.com":添加注释信息,通常使用你的邮箱地址,方便识别。

我是mac,默认有ssh-keygen程序,密码请留空,我在当前目录下生成了一个test_rsa的密钥对 1

可以看到生成了两个文件,一个是私钥,一个是公钥

1

打开公钥,将内容复制到服务器的~/.ssh/authorized_keys文件中,如果没有这个文件,新建一个,然后将公钥内容复制进去,保存即可

1 可以登录服务器执行:

echo "ssh-rsa AAAAB3NzaC1y你的密钥对...POAZGpsi6qqqvQ== 1xxxxxx@qq.com" >> ~/.ssh/authorized_keys

然后把私钥复制到到本机ssh目录下

cp test_rsa ~/.ssh

接下来在这里点击设置

1

选择第一个config,回车

1

给你的机器下面加一个IdentityFile,指向你的私钥文件

1

现在你这台电脑可以直接登录了,如果换个电脑,你只需要将config里面的配置和私钥复制到其他电脑,也一样可以免密登录了

服务器访问github经常连不上

作为一台开发服务器连不上github是一件比较麻烦的事情,原因嘛,懂得都懂,不懂的说了也不懂

方法有很多,我选择了使用hosts来避免dns污染

  1. 新建一个sh脚本,获取最新的github hosts,写入系统hosts并刷新
  2. 定时任务执行这个脚本

新建一个sh脚本

cd /etc/ # 备份默认的hosts,以后要手动改也请修改这个文件,不要直接修改hosts文件 cp hosts hosts.myback cd ~ touch updatehosts.sh chmod +x updatehosts.sh vim updatehosts.sh

粘贴内容:

#!/bin/bash # 选择从这个地方获取最新的hosts URL="https://raw.hellogithub.com/hosts" HOSTS_MAIN="/etc/hosts.myback" HOSTS="/etc/hosts" if [ "$EUID" -ne 0 ]; then echo "请使用 root 权限运行此脚本。" exit 1 fi if [ ! -f "$HOSTS_MAIN" ]; then echo "/etc/hosts.myback 文件不存在。" exit 1 fi echo "正在请求 $URL ..." response=$(curl -s "$URL") if [ $? -ne 0 ]; then echo "请求 $URL 失败,请检查网络连接。" exit 1 fi hosts_main_content=$(cat "$HOSTS_MAIN") merged_content="$hosts_main_content"$'\n'"$response" echo "正在保存合并后的内容到 $HOSTS ..." echo "$merged_content" > "$HOSTS" echo "正在尝试刷新 hosts ..." if systemctl is-active --quiet NetworkManager; then systemctl restart NetworkManager echo "NetworkManager 服务已重启。" elif systemctl is-active --quiet networking; then systemctl restart networking echo "networking 服务已重启。" elif systemctl is-active --quiet network; then systemctl restart network echo "network 服务已重启。" else echo "未找到合适的网络服务进行重启,你可能需要手动刷新网络服务。" fi if command -v systemd-resolve &> /dev/null; then systemd-resolve --flush-caches echo "DNS 缓存已清除。" fi echo "操作完成。"

执行一次这个脚本

sh ./updatehosts.sh

添加定时任务

crontab -e

粘贴内容,每小时执行一次这个脚本:

0 * * * * /root/updatehosts.sh

ctrl+x,然后按y,然后回车保存

定时任务就添加完成了

验证任务执行情况

一小时后再看看cat /etc/hosts,看一下文件底部的更新时间是否有变化,有变化就是正常的。

开发时留意的问题

端口转发

一般启动一个web项目,还要在这里添加一个端口转发,意思就是本地浏览器打开访问localhost:3000转发到服务器上的3000端口,根据你自己的服务启动端口配置就行 1

浏览器无法访问开发页面

  • 你的端口有占用,自动添加转发端口号变化了,比如你web启动了3000,但是因为占用服务器上自动启动了3001 解决方法:

kill占用你端口的进程,然后重新启动

lsof -i tcp:端口号 kill -9 进程号
  • 端口号转发正常,但是就是访问不了:

请手动删除端口转发,重新手动添加(尝发生于电脑睡眠一段时间后)

云服务器内存爆了

腾讯云默认是没有开启swap的,一旦内存爆了,直接断开,处于不可用状态,必须去腾讯云网页手动重启这台机器, 内存不够可以考虑开启swap,一般4-8g物理内存推荐设置为物理内存相同的swap。

推荐设置swap大小:

物理大小建议设置
小于 2GB物理内存的 2 倍
2GB - 8GB与物理内存大小相同
大于 8GB物理内存的 0.5 - 1 倍
开启swap

查看swap是否开启

free -h

可以看到输出结果中swap并没有开启:

total used free shared buff/cache available Mem: 7.6Gi 7.0Gi 433Mi 1.9Mi 463Mi 595Mi Swap: 0Gi 0Gi 0Gi

开启方法:

# 这里8g是我屋里内存8g,你可以根据上面的表格设置 sudo fallocate -l 8G /swapfile # 设置文件权限 sudo chmod 600 /swapfile # 将文件格式化为Swap格式 sudo mkswap /swapfile # 启用Swap文件 sudo swapon /swapfile # 使Swap文件开机自动挂载 echo '/swapfile none swap defaults 0 0' | sudo tee -a /etc/fstab
设置swappiness

打开这个文件,添加vm.swappiness = 10到末尾,或者如果已经存在修改vm.swappiness为10

vim /etc/sysctl.conf

修改完之后,让swappiness生效

sudo sysctl -p

swappiness默认可能是60,这个参数是0-100的数字,越大系统会越频繁的交换物理内存和swap空间,对于前端开发来说, 前端开发对系统响应速度要求较高,频繁的内存交换会导致系统性能下降。较低的swappiness值可以让系统尽量优先使用物理内存, 减少不必要的内存交换操作,提高开发体验,因此我把它设置成10.

检查swap是否开启成功且重启也生效

# 重启机器 sudo reboot # 重启后查看swapon swapon --show

可以看到输出结果中swap已经开启:

NAME TYPE SIZE USED PRIO /swapfile file 8G 0B -2

查看swappiness配置

cat /proc/sys/vm/swappiness

如果输出的数字和你设置的一致则表示生效中.

最后编辑于

hi