遵化建行网站企业为何选择网站推广外包?

张小明 2026/1/1 4:17:11
遵化建行网站,企业为何选择网站推广外包?,php网站开发 课程介绍,安居客西安网页版引子#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进行投诉反馈,一经查实,立即删除!

钓鱼网站网址大全广州网站推广建设

5分钟快速上手:Farfalle Serper搜索API终极替代方案 【免费下载链接】farfalle 🔍 ai search engine - run local or cloud language models 项目地址: https://gitcode.com/GitHub_Trending/fa/farfalle 还在为Google搜索API的复杂配置和高昂费用…

张小明 2025/12/24 18:34:40 网站建设

毕业设计论文网站网站建设实验分析

声源定位模组小智机器人当智能设备需要精准捕捉声音方向,当小型化设计与高效能需求碰撞,德宇科创AR1105六向音源定位模组,以革新性技术方案给出完美答案。专注声学,传递美好,我们让每一台智能设备都拥有灵敏的“听觉定…

张小明 2025/12/25 0:48:56 网站建设

贵州企业网站建设公司如何制作简易个人网站

2024年的年前年后对于互联网人都不是一个太平的时间,互联网大厂的“裁员潮”愈演愈烈。京东裁员横跨多个板块,比例在 10-30%。有赞两轮裁员近七成,腾讯也不例外。虽已春暖花开,大厂却仍“寒冬正至”。 互联网行业迎来寒冬&#xf…

张小明 2025/12/24 15:08:50 网站建设

广州微信网站建设市场腾讯云wordpress对象储存

Lumerical FDTD复现不对称光栅不同级的衍射效率最近在研究Lumerical FDTD,想复现一下不对称光栅的衍射效率。说实话,一开始觉得这玩意儿挺简单的,不就是个光栅嘛,能有多复杂?结果一上手,发现坑还挺多。今天…

张小明 2025/12/24 11:42:53 网站建设

营销型手机网站太原it培训机构

D3.js标签防重叠终极方案:3大策略5步实战实现完美数据可视化 【免费下载链接】d3 Bring data to life with SVG, Canvas and HTML. :bar_chart::chart_with_upwards_trend::tada: 项目地址: https://gitcode.com/gh_mirrors/d3/d3 在数据可视化项目中&#x…

张小明 2025/12/25 19:54:42 网站建设

电子商务网站建设类论文大型企业局域网组网方案

一,Vue 技术文章大纲 1,Vue 框架概述 Vue.js 简介:轻量级、渐进式前端框架核心特点:响应式数据绑定、组件化开发、虚拟 DOM适用场景:单页应用(SPA)、复杂交互界面 2,Vue 核心概念…

张小明 2025/12/26 4:36:33 网站建设