V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whileFalse
V2EX  ›  Node.js

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

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

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

    问题是怎么修改页面上的内链。
    xiadd
        9
    xiadd  
       2017-05-07 11:20:23 +08:00   ❤️ 1
    @Mikewu express 本身就有 subapp 的概念,可以直接 mount 到父级路由
    ychongsaytc
        10
    ychongsaytc  
       2017-05-08 01:08:42 +08:00 via iPhone
    subapp 很轻松。楼主的关键问题是 express 渲染的 HTML 里的锚链地址如何跟随着自动变化。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3615 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 04:30 · PVG 12:30 · LAX 20:30 · JFK 23:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.