网站建设概括网站建设流程分为三个步骤

张小明 2026/1/19 18:57:12
网站建设概括,网站建设流程分为三个步骤,2021年中国中小企业最新数据,有自己团队做网站上线多久引子#xff1a;那个让我崩溃的早晨某个周一早晨#xff0c;我像往常一样打开终端准备开始工作。# 打开 iTerm2... 等待... 等待... # 终于出现命令提示符#xff0c;耗时 2.3 秒接着切换到一个需要 Node 16 的老项目#xff1a;$ nvm use 16 Now using node v16.20.2 (npm…引子那个让我崩溃的早晨某个周一早晨我像往常一样打开终端准备开始工作。# 打开 iTerm2... 等待... 等待... # 终于出现命令提示符耗时 2.3 秒接着切换到一个需要 Node 16 的老项目$ nvm use 16 Now using node v16.20.2 (npm v8.19.4) # 又是 0.5 秒过去了然后跳到另一个 Node 20 的新项目$ cd ../new-project $ nvm use 20 Now using node v20.19.6 (npm v10.8.2) # 再等 0.5 秒一天下来在 5-6 个项目间来回切换光是等 nvm 响应就浪费了不知道多少时间。更别提有时候忘记nvm use直接npm install导致 node_modules 版本混乱的惨剧了。是时候做出改变了。为什么要离开 nvm痛点一Shell 启动慢得令人发指nvm 是纯 Bash 脚本实现的。每次打开新终端它都要加载nvm.sh脚本几千行解析已安装的 Node 版本设置环境变量初始化自动补全我用time测了一下我的.zshrc加载时间# 有 nvm $ time zsh -i -c exit zsh -i -c exit 0.42s user 0.23s system 95% cpu 0.678 total # 注释掉 nvm 后 $ time zsh -i -c exit zsh -i -c exit 0.08s user 0.05s system 92% cpu 0.142 totalnvm 让我的终端启动慢了近 5 倍痛点二版本切换不够智能每次进入不同项目都要手动nvm use太原始了。虽然有avn、nvm-auto等插件可以实现自动切换但又增加了一层依赖又拖慢了 Shell 速度配置起来也挺麻烦痛点三Windows 支持是个笑话nvm 官方根本不支持 Windows。nvm-windows是另一个独立项目命令和行为都有差异。团队里用 Windows 的同事经常遇到各种奇怪问题。痛点四偶发的诡异 Bug用了几年 nvm遇到过各种奇怪问题全局安装的包莫名消失npm prefix路径错乱多个终端窗口版本不同步.nvmrc有时候不生效遇见 fnmRust带来的性能革命fnmFast Node Manager是用 Rust 写的 Node.js版本管理器。第一次用的时候我的反应是就这结束了怎么这么快性能实测对比我在自己的 M1 MacBook Pro 上做了详细测试终端启动时间# nvm $ time zsh -i -c exit 0.678 total # fnm $ time zsh -i -c exit 0.089 total # 提升7.6 倍版本切换时间# nvm $ time nvm use 20 Now using node v20.19.6 real 0m0.347s # fnm $ time fnm use 20 Using Node v20.19.6 real 0m0.012s # 提升29 倍安装新版本# nvm install 22 # 总耗时约 45 秒包含下载 # fnm install 22 # 总耗时约 38 秒包含下载 # 下载速度差不多但 fnm 的解压和配置更快为什么 fnm 这么快原生二进制Rust 编译成机器码不需要解释器并行处理充分利用多核 CPU惰性加载只在需要时才读取版本信息高效的文件操作Rust 的 I/O 性能本就出色真实场景fnm 如何改变我的工作流场景一多项目并行开发我同时维护着这些项目项目Node 版本原因老后台系统14历史包袱依赖不支持高版本主站前端18稳定的 LTS新管理后台20需要新特性实验性项目22尝鲜最新 APIElectron 应用18Electron 版本限制以前用 nvm$ cd legacy-admin $ nvm use # 等待... Found /Users/me/legacy-admin/.nvmrc with version 14 Now using node v14.21.3 $ cd ../main-site $ nvm use # 又等待... Found /Users/me/main-site/.nvmrc with version 18 Now using node v18.20.8 # 经常忘记 nvm use然后... $ npm install # 装了一堆错误版本的依赖 现在用 fnm$ cd legacy-admin Using Node v14.21.3 # 自动切换瞬间完成 $ cd ../main-site Using Node v20.19.6 # 无感切换 # 永远不会忘记切换版本因为是自动的场景二CI/CD 环境统一我们团队的 CI 配置以前是这样的# .gitlab-ci.yml (使用 nvm) before_script: - curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash - export NVM_DIR$HOME/.nvm - . $NVM_DIR/nvm.sh - nvm install - nvm use换成 fnm 后# .gitlab-ci.yml (使用 fnm) before_script: - curl -fsSL https://fnm.vercel.app/install | bash - eval $(fnm env) - fnm install - fnm useCI 构建时间减少了约 15 秒主要是 nvm 初始化太慢。场景三团队协作与跨平台我们团队成员使用的系统60% macOS30% Windows10% Linuxnvm 时代的痛苦# macOS/Linux 同事 $ nvm use 20 # Windows 同事nvm-windows $ nvm use 20.19.6 # 必须写完整版本号 # 而且 .nvmrc 经常不生效fnm 时代的统一# 所有平台相同命令相同行为 $ fnm use 20Windows 同事终于不用单独维护一套文档了。场景四Docker 开发环境在Dockerfile 中安装 Node# 以前用 nvm不推荐但有人这么干 RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash \ . ~/.nvm/nvm.sh \ nvm install 20 \ nvm alias default 20 # 镜像体积大层数多 # 现在用 fnm RUN curl -fsSL https://fnm.vercel.app/install | bash -s -- --install-dir /usr/local/bin \ fnm install 20 \ fnm default 20 # 更简洁体积更小场景五Monorepo中的多版本需求我们有一个 Monorepo不同 package 需要不同 Node 版本monorepo/ ├── packages/ │ ├── legacy-sdk/ # 需要 Node 14兼容老用户 │ │ └── .node-version # 14 │ ├── web-app/ # 需要 Node 20 │ │ └── .node-version # 20 │ └── cli-tool/ # 需要 Node 18 │ └── .node-version # 18 └── .node-version # 20默认fnm 的--use-on-cd让我在不同 package 间跳转时完全无感$ cd packages/legacy-sdk Using Node v14.21.3 $ cd ../web-app Using Node v20.19.6 $ cd ../cli-tool Using Node v18.20.8完整迁移指南第一步安装 fnmmacOS (Homebrew):brew install fnmWindows (Scoop):scoop install fnmWindows (Chocolatey):choco install fnmLinux/macOS (curl):curl -fsSL https://fnm.vercel.app/install | bashCargo (Rust 用户):cargo install fnm第二步配置 Shell这是最关键的一步配置正确才能享受自动切换的便利。Zsh (~/.zshrc):# fnm - Fast Node Manager eval $(fnm env --use-on-cd --shell zsh)Bash (~/.bashrc):# fnm - Fast Node Manager eval $(fnm env --use-on-cd --shell bash)Fish (~/.config/fish/config.fish):# fnm - Fast Node Manager fnm env --use-on-cd --shell fish | sourcePowerShell ($PROFILE):# fnm - Fast Node Manager fnm env --use-on-cd --shell powershell | Out-String | Invoke-Expression参数说明参数作用--use-on-cd进入目录时自动读取 .node-version 或 .nvmrc 并切换--shell shell指定 Shell 类型生成对应的环境变量设置命令--version-file-strategy recursive向上递归查找版本文件可选--corepack-enabled自动启用 Corepack可选第三步迁移已安装的 Node 版本查看 nvm 安装了哪些版本ls ~/.nvm/versions/node/ # v10.24.1 v14.21.3 v16.20.2 v18.20.8 v20.19.6 v22.21.0在 fnm 中安装对应版本# 方式一通过 LTS 代号安装推荐自动获取最新补丁版本 fnm install lts/fermium # v14.x fnm install lts/gallium # v16.x fnm install lts/hydrogen # v18.x fnm install lts/iron # v20.x fnm install lts/jod # v22.x # 方式二通过大版本号安装 fnm install 14 fnm install 16 fnm install 18 fnm install 20 fnm install 22 # 方式三安装精确版本 fnm install 18.20.8 fnm install 20.19.6设置默认版本fnm default 22第四步处理全局 npm 包这是很多人忽略的一步nvm 下安装的全局包不会自动迁移。查看 nvm 中的全局包# 切换到 nvm 的某个版本 export PATH$HOME/.nvm/versions/node/v20.19.6/bin:$PATH npm list -g --depth0在 fnm 的对应版本中重新安装fnm use 20 npm install -g typescript ts-node nodemon pm2 # 你需要的包Pro Tip:可以写个脚本批量处理#!/bin/bash # migrate-global-packages.sh # 你常用的全局包 PACKAGEStypescript ts-node nodemon pm2 pnpm yarn for version in 18 20 22; do echo Installing global packages for Node $version... fnm use $version npm install -g $PACKAGES done第五步注释掉 nvm 配置编辑你的 Shell 配置文件# ~/.zshrc 或 ~/.bashrc # nvm - 已迁移到 fnm注释掉避免冲突 # export NVM_DIR$HOME/.nvm # [ -s $NVM_DIR/nvm.sh ] \. $NVM_DIR/nvm.sh # [ -s $NVM_DIR/bash_completion ] \. $NVM_DIR/bash_completion第六步验证迁移结果# 重新加载配置 source ~/.zshrc # 或 source ~/.bashrc # 验证 fnm 工作正常 fnm list fnm current node -v npm -v which node # 测试自动切换 cd /path/to/project-with-nvmrc # 应该看到 Using Node vX.X.X node -v第七步删除 nvm可选但推荐确认一切正常后可以删除 nvm 释放磁盘空间rm -rf ~/.nvm # 如果遇到权限问题 sudo rm -rf ~/.nvm命令速查表功能nvm 命令fnm 命令安装指定版本nvm install 20fnm install 20安装最新 LTSnvm install --ltsfnm install --lts安装指定 LTSnvm install --ltsironfnm install lts/iron切换版本nvm use 20fnm use 20设置默认版本nvm alias default 20fnm default 20查看已安装版本nvm lsfnm list查看远程可用版本nvm ls-remotefnm list-remote查看当前版本nvm currentfnm current卸载版本nvm uninstall 18fnm uninstall 18在指定版本执行命令nvm exec 18 node -vfnm exec --using18 node -vLTS 版本代号参考代号版本发布日期LTS 开始维护结束状态Jodv22.x2024-042024-102027-04✅ Active LTSIronv20.x2023-042023-102026-04✅ Active LTSHydrogenv18.x2022-042022-102025-04⚠️ MaintenanceGalliumv16.x2021-042021-102024-09❌ End-of-LifeFermiumv14.x2020-042020-102023-04❌ End-of-Life建议新项目使用 v20 或 v22老项目尽快升级到至少 v18。进阶技巧1. 配置版本文件查找策略默认情况下fnm 只在当前目录查找.node-version或.nvmrc。如果你的项目结构比较深可以启用递归查找eval $(fnm env --use-on-cd --version-file-strategy recursive)2. 启用 CorepackCorepack 是 Node.js 内置的包管理器版本管理工具可以锁定 pnpm/yarn 版本eval $(fnm env --use-on-cd --corepack-enabled)3. 自定义安装目录默认安装在~/.local/share/fnm可以自定义export FNM_DIR/path/to/custom/fnm eval $(fnm env --use-on-cd)4. 使用国内镜像加速# 临时使用 fnm install 20 --node-dist-mirrorhttps://npmmirror.com/mirrors/node # 永久配置 export FNM_NODE_DIST_MIRRORhttps://npmmirror.com/mirrors/node5. 在脚本中使用 fnm#!/bin/bash # 确保 fnm 环境已加载 eval $(fnm env) # 使用指定版本执行 fnm use 20 node your-script.js # 或者用 exec fnm exec --using20 node your-script.js常见问题 FAQQ: fnm 安装的 Node 在哪里~/.local/share/fnm/node-versions/每个版本是一个独立目录结构清晰。Q: 为什么which node显示的路径很奇怪fnm 使用多 Shell机制每个 Shell 会话有独立的 PATH$ which node /Users/xxx/.local/state/fnm_multishells/12345_1234567890/bin/node这是正常的确保了不同终端窗口可以使用不同版本。Q: 如何在 VS Code中使用 fnm 管理的 NodeVS Code 会自动检测 fnm。如果遇到问题可以在settings.json中配置{ terminal.integrated.env.osx: { PATH: ${env:PATH} } }或者在项目根目录创建.vscode/settings.json{{ eslint.runtime: node }Q: fnm 支持 .nvmrc 吗完全支持fnm 会按以下顺序查找版本文件.node-version.nvmrcpackage.json的engines.node字段Q: 如何回退到 nvm如果你想回退虽然我不建议只需注释掉 fnm 配置取消注释 nvm 配置重新加载 Shell你的 nvm 数据如果没删还在~/.nvm。总结值得迁移吗绝对值得。迁移成本时间约 15-30 分钟学习曲线几乎为零命令高度相似风险极低可随时回退获得收益终端启动快 5-10 倍版本切换快 20-30 倍自动切换版本告别手动nvm use跨平台一致性团队协作更顺畅更少的 Bug 和怪异行为如果你每天要打开几十次终端、在多个项目间切换fnm 节省的时间累积起来是非常可观的。更重要的是那种丝滑无感的体验会让你的开发心情都变好。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

苏州城乡建设网站查询wordpress底部修改视频教程

GPT-SoVITS能否替代专业配音?成本与质量权衡分析 在短视频日更成常态、内容本地化需求爆发的今天,一个现实问题摆在创作者面前:如何以最低成本,持续输出高质量语音内容?传统路径依赖专业配音演员——每分钟数百元报价、…

张小明 2026/1/17 21:42:47 网站建设

炎陵做网站网站建设补充协议范本

现代音乐应用中的歌词显示组件技术解析 【免费下载链接】applemusic-like-lyrics 一个基于 Web 技术制作的类 Apple Music 歌词显示组件库,同时支持 DOM 原生、React 和 Vue 绑定。 项目地址: https://gitcode.com/gh_mirrors/ap/applemusic-like-lyrics 在当…

张小明 2026/1/17 22:29:21 网站建设

网站建设 客户拜访建设工程网站

第一章:为什么顶尖企业都在用Open-AutoGLM在人工智能快速演进的今天,顶尖科技企业纷纷将目光投向 Open-AutoGLM —— 一个开源、高效且可扩展的自动化生成语言模型框架。它不仅支持多模态输入处理,还具备强大的上下文理解与任务自适应能力&am…

张小明 2026/1/17 21:42:50 网站建设

网上电影网站怎么做的四川住房和城乡建设厅网站打不开

向量数据库集成问题解决方案:5步排查法解决数据连接异常 【免费下载链接】mindsdb mindsdb/mindsdb: 是一个基于 SQLite 数据库的分布式数据库管理系统,它支持多种数据存储方式,包括 SQL 和 NoSQL。适合用于构建分布式数据库管理系统&#xf…

张小明 2026/1/17 22:31:40 网站建设

做网站的工具有哪些软件开发工程师证书含金量高吗

EmotiVoice开源模型二次开发入门指南 在虚拟主播直播带货、AI语音助手深夜陪聊、游戏NPC情绪化对白层出不穷的今天,用户早已不再满足于“能说话”的机械音。他们想要的是有温度、有性格、甚至能共情的声音——一句话说得恰到好处时,可能让人会心一笑&…

张小明 2026/1/17 21:42:52 网站建设

html免费的模板网站有哪些百度问答我要提问

你见过最菜的 Java 后端应届生是什么样的?八年老鸟盘点那些 “基础不牢,地动山摇” 的操作 做 Java 开发八年,带过五届应届生,见过青涩但肯学的新人,也遇到过让我怀疑 “大学四年学了个寂寞” 的应届生 —— 他们不是…

张小明 2026/1/17 21:42:53 网站建设