怎么将一个 express 程序转换成模块化?

2017-05-07 09:00:17 +08:00
 whileFalse
外行,请见谅。
简单的说,假设我有两个网站,都是用 express 写的。分别是:
blog.domain.comabout.domain.com
现在我希望将其转换为:
domain.com/blog、domain.com/about。
通过一个现成的路由工具来分发。
那么对于原有的 blog express 程序来说,本来对其的访问 /20170507,就要变成 /blog/201706507。
我知道通过 route 功能可以让 /blog/201706507 返回 原有的 /20170507 的内容。
但是这还涉及到页面内链接,原有链接到 /20170507 的标签要重写到 /blog/20170507。这应该怎么做呢?程序使用 gulp 打包。

谢谢。
2914 次点击
所在节点    Node.js
10 条回复
hareandlion
2017-05-07 09:12:10 +08:00
我的设想是前台重写 jQuery 的 post 和 get (业务主要用了这两个)方法,在原 URL 中加入模块的 URL,不过貌似有点太底层了,即使只在一个页面里使用,影响范围也超出预期,出现各种意想不到的错误
ljcarsenal
2017-05-07 09:38:40 +08:00
nginx
whileFalse
2017-05-07 09:49:10 +08:00
@ljcarsenal 不考虑通过负载均衡。
whileFalse
2017-05-07 09:58:30 +08:00
@ljcarsenal 更深入一点说,有几个原因:
1. 已经有了一层负载均衡,不希望再搞个 Nginx。
2. 嫌 Nginx 配置起来什么的比较费事。还有一些没有在问题中提到的需求用 nodejs 写比较方便。
watzds
2017-05-07 10:07:32 +08:00
标签?查找全局替换行吗?
watzds
2017-05-07 10:13:53 +08:00
如果是 /20170507 这种相对路径,还有个<base>标签可以设置基准 url
Mikewu
2017-05-07 10:17:47 +08:00
express 不太清楚,koa 的话倒是有一个中间件 koa-mount 可以实现你的需求
jarlyyn
2017-05-07 11:06:51 +08:00
用中间件的框架做这种都很简单。

问题是怎么修改页面上的内链。
xiadd
2017-05-07 11:20:23 +08:00
@Mikewu express 本身就有 subapp 的概念,可以直接 mount 到父级路由
ychongsaytc
2017-05-08 01:08:42 +08:00
subapp 很轻松。楼主的关键问题是 express 渲染的 HTML 里的锚链地址如何跟随着自动变化。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/359641

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX