前端项目路径别名终极解决方案

大厂技术  高级前端  Node进阶
点击上方 程序员成长指北,关注公众号
回复1,加入高级Node交流群

25f0a8e538eccc6c2ef782d91fee4221.jpeg

image.png

关于路径别名

一个前端项目通常会演变成复杂的嵌套目录结构。因此,使用相对路径导入可能会变得更长且更混乱,这可能会对代码的外观产生负面影响,并让辨识代码的来源变得更加困难,更加重要的是代码文件位置变动相对路径就得改变。

使用路径别名即绝对路径导入,不仅解决了理解导入路径的问题,而且还简化了重构期间代码移动的过程,美丽且直观。

// from this
import { SearchForm } from "./../../src/components/searchForm";

// to this
import { SearchForm } from "@src/components/searchForm";

令人头疼的路径别名

路径别名固然是非常好,但是在项目中却需要在多处指定,即使你的项目足够简单,只要用了 TypeScript 本上也需要指定两次。

例如你使用 Webpack + TypeScript,你需要在 ebpack.config.jstsconfig.json 中分别指定,如果你使用 Vite 也是要在 vite.config.ts 中指定,多处指定就有可能漏写导致出错,当然我们可以通过 tsconfig-paths-webpack-plugin 和 vite-tsconfig-paths 分别来解决别名统一的问题。

但是现在我们有一种无需依赖第三方库即可配置路径别名的方法。此外,这种方法允许使用别名而不需要构建步骤,重要的是一处指定,四处生效

原生路径别名

从 Node.js v12.19.0 开始,开发人员可以使用 Subpath Imports[1] 在 npm 包中声明路径别名。这可以通过 package.json 文件中的 imports 字段来完成。不需要在 npm 上发布包。在任何目录中创建一个 package.json 文件就足够了。因此,这种方法也适用于私人项目。

配置路径别名,假如有项目结构如下:

my-awesome-project  
├── src/  
│ ├── components/  
│ │ └── searchForm/  
│ │ └── form/  
│ │ └── index.ts  
│ ├── pages/  
│ │ └── login/  
│ │ └── about/  
│ │ └── home/ 
│ └── mock/  
│ └── api/  
│ └── index.ts  
└── package.json

我们可以在 package.json 中这么配置:

{
 "name": "my-awesome-project",
 "imports": {
  "#*": "./*"
 }
}

接下来就是愉快的使用了:

import { SearchForm } from "#src/components/searchForm";

别名从未如此简单。

这样设置的原生支持路径别名理论上有以下优点:

  • 无需安装任何第三方库。

  • 无需预先构建或动态处理导入即可运行代码。

  • 任何使用 ESM 标准导入且基于 Node.js 的工具都支持别名。

  • 代码导航和自动完成编辑器默认支持,而不需要任何额外的设置。

其他工具的支持情况

Webpack

Webpack从 v5.0 开始支持[2]导入字段。路径别名无需任何额外配置即可使用。

Vite

Vite 4.2.0 版本添加了[3]对导入字段的支持。

TypeScript

目前正在开发 github.com/microsoft/T…[4] 将要作为 5.3 版本的功能发布。

Node 社群

 
 

我组建了一个氛围特别好的 Node.js 社群,里面有很多 Node.js小伙伴,如果你对Node.js学习感兴趣的话(后续有计划也可以),我们可以一起进行Node.js相关的交流、学习、共建。下方加 考拉 好友回复「Node」即可。

df970edfcac49349324d71c25138d227.png

“分享、点赞、在看” 支持一下

参考资料

[1]

Subpath Imports:https://nodejs.org/api/packages.html#subpath-imports

[2]

支持:https://github.com/webpack/webpack/releases/tag/v5.0.0-beta.31

[3]

添加了:https://github.com/vitejs/vite/pull/7770

[4]

github.com/microsoft/T…:https://github.com/microsoft/TypeScript/pull/55015

[5]

031-imports:https://github.com/epicweb-dev/epic-stack/blob/main/docs/decisions/031-imports.md

[6]

typescript path aliasing is a mistake:https://twitter.com/kentcdodds/status/1695447127533797437

[7]

the-native-way-to-configure-path-aliases-in-frontend-projects:https://betterprogramming.pub/the-native-way-to-configure-path-aliases-in-frontend-projects-5db70f19a6e0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: nginx 是一个常用的高性能的开源 Web 服务器软件,它可以用来发布前端项目。在发布前端项目时,可以通过在 nginx 的配置文件中设置别名来实现。 别名是 nginx 配置文件中的一个指令,它可以用来指定前端项目文件的路径,使得在访问前端项目时可以使用自定义的 URL 路径。 在 nginx 的配置文件中添加别名的语法如下: ```bash location /别名 { alias /前端项目路径; } ``` 其中,`别名` 是自定义的 URL 路径,可以根据需要设置。`前端项目路径` 是前端项目的文件路径,需要根据实际情况进行设置。 举个例子,假设我们有一个前端项目的文件路径是 `/var/www/html/myproject`,我们想要通过 URL 路径 `/project` 来访问该项目,那么可以在 nginx 的配置文件中添加如下的配置: ```bash location /project { alias /var/www/html/myproject; } ``` 配置完成后,当访问 `http://localhost/project` 时,nginx 将会返回前端项目的内容。 通过设置别名,我们可以灵活地指定前端项目路径,使得在访问前端项目时可以使用更简洁、易于理解的 URL 路径。这样不仅可以提高项目的可读性,也能够更好地维护和管理前端项目。 ### 回答2: 在使用nginx发布前端项目时,我们可以通过配置别名来指定项目的访问路径。 首先,我们需要编辑nginx的配置文件,可以在nginx的安装目录下找到名为nginx.conf的文件。在该文件中找到server块,这是nginx配置的主要部分。 在server块中,我们可以使用location指令来配置前端项目别名。例如,假设我们的前端项目位于/var/www/html目录下,我们可以使用以下配置来定义别名: location /项目名 { alias /var/www/html; } 在上述配置中,/项目名 是我们要给项目指定的别名,alias指令后面是项目的实际路径。 完成配置后,我们需要重启nginx使其生效。可以通过运行以下命令来重启nginx: sudo service nginx restart 此时,我们可以通过访问http://服务器ip地址/项目名 来访问前端项目。通过配置别名,可以方便地指定项目的访问路径,使得前端项目能够直接通过项目名进行访问,而无需指定完整的项目路径。 总结起来,nginx发布前端项目时,可以通过配置别名来指定项目的访问路径。首先编辑nginx的配置文件,然后在server块中使用location指令来配置别名。最后重启nginx使其生效,可以通过访问http://服务器ip地址/项目名 来访问前端项目。 ### 回答3: 在nginx中发布前端项目别名是通过设置nginx的location指令来实现的。在nginx的配置文件中,可以使用location指令来定义前端项目路径,并可以指定别名。 例如,将前端项目路径设置为"/var/www/html",并指定别名为"/static",可以在nginx的配置文件中添加以下代码: ``` location /static { alias /var/www/html; index index.html; } ``` 上述配置中,当访问服务器的/static路径时,nginx将会将请求映射到/var/www/html目录下寻找对应的文件。如果存在index.html文件,则会直接返回该文件,如果不存在则返回404错误。 通过设置别名,可以使前端项目的访问更加友好和简洁。我们可以使用简短的URL来访问前端项目,而不需要暴露实际的项目路径信息。 此外,还可以通过添加更多的location指令来配置其他的前端项目路径别名,以满足不同前端项目的需求。当然,在修改nginx配置文件后,需要重新加载配置文件使其生效。 总之,通过设置nginx的location指令并指定别名,可以将前端项目发布到指定的路径,并使用别名来访问项目,提高了访问的简洁性和安全性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值