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

webpack 和后台结合的问题

  •  
  •   dantegg · 2016-06-21 09:28:08 +08:00 · 11375 次点击
    这是一个创建于 2838 天前的主题,其中的信息可能已经有所发展或是发生改变。
    后台是 java/tomcat
    那整个项目部署时 webpack 打包好的项目应该如何和后台结合?
    起一个 webpack-dev-server 跑 webpack 的项目再起一个 tomcat 跑后台?
    (不一定是webpack-dev-server,意思就是同时起两个端口的两个服务,然后再通过webpack.config.js配置解决跨域问题?)
    新手小白求大大们解答
    18 条回复    2016-06-22 14:34:16 +08:00
    murmur
        1
    murmur  
       2016-06-21 09:35:25 +08:00
    webpack 生成 jsp 么?
    learnshare
        2
    learnshare  
       2016-06-21 10:04:55 +08:00   ❤️ 1
    前后端分离的,服务器也分离好了,部署的时候用 Nginx 区分两个不同的服务
    magicdawn
        3
    magicdawn  
       2016-06-21 10:17:36 +08:00   ❤️ 1
    webpack dev server

    dev server 开发啊 ... 完成之后, 只要不做 server side render. 前端开发结果不都是静态文件么...结合呗...
    hxtheone
        4
    hxtheone  
       2016-06-21 10:21:58 +08:00   ❤️ 1
    生产环境部署的时候直接打包成一个 js 文件了吧, 直接放到站点的 public 目录或者 cdn 上

    开发的时候, 官方的建议就是你想的那样, webpack-dev-server 和本来的后端 server 各起一个

    You may want to run a backend server or a mock of it in development. You should not use the webpack-dev-server as a backend. Its only purpose is to serve static (webpacked) assets.

    You can run two servers side-by-side: The webpack-dev-server and your backend server.

    ref: https://webpack.github.io/docs/webpack-dev-server.html#combining-with-an-existing-server
    crysislinux
        5
    crysislinux  
       2016-06-21 10:26:30 +08:00   ❤️ 1
    你是说前端代码怎么在开发时请求后端的 API 么?

    这种情况我一般是用 webpack-dev-middleware 新建了一个 express 应用,前端发到 webpack 所在 express 应用的请求会被转发到后端所在的端口。简单的说就是: localhost:3001/api/users 会被转到 localhost:3002/api/users 。

    webpack-dev-server 也可以通过配置达到转发的目的,另外写的目的是为了更灵活一些,我可以自定义一些转发方案, webpack-dev-server 的 proxy 配置还蛮 tricky 的。。
    murmur
        6
    murmur  
       2016-06-21 10:33:48 +08:00   ❤️ 1
    如果做好分布式部署的打算一开始就做 jsonp 或者设置 cross-region 么 干嘛要转发呢...
    lz 消失了?你这个项目什么架构的, java 只提供 json 数据前端纯静态?
    dantegg
        7
    dantegg  
    OP
       2016-06-21 10:50:43 +08:00
    @murmur 没有消失,看了上面各层回复,在理解尝试中,
    java 提供 json ,没打算分布式,
    dantegg
        8
    dantegg  
    OP
       2016-06-21 10:51:21 +08:00
    xieguanglei
        9
    xieguanglei  
       2016-06-21 11:02:47 +08:00
    html 仍然由 express 输出,只引 dev-server 上的 js 资源(部署时换成 CDN 的),可以避免跨域。
    xieguanglei
        10
    xieguanglei  
       2016-06-21 11:03:28 +08:00
    html 仍然由 java 输出。。。
    Tankpt
        11
    Tankpt  
       2016-06-21 12:04:22 +08:00 via iPhone
    刚好也有类似的问题
    vagary
        12
    vagary  
       2016-06-21 12:41:36 +08:00
    dev 的话 试试 dora 的 proxy
    dantegg
        13
    dantegg  
    OP
       2016-06-21 13:58:26 +08:00
    @xieguanglei 可以理解为把 bundle.js 放到 cdn 上?
    TerranC
        14
    TerranC  
       2016-06-21 14:42:51 +08:00
    可以压根就不用 webpack-dev-server 吧,感觉没什么关联两者, webpack 做点 build 的工作就好了,不比一定用那个 web server 啊
    xieguanglei
        15
    xieguanglei  
       2016-06-21 16:50:30 +08:00
    bundle 放在哪里不影响跨域啊 @dantegg
    dantegg
        16
    dantegg  
    OP
       2016-06-22 00:05:07 +08:00
    @xieguanglei 直接放到站点的 public 路径下呗
    Niphor
        17
    Niphor  
       2016-06-22 13:33:51 +08:00
    那就别用 webpack 了啊 ,传统页面用这个感觉是自己找事
    dantegg
        18
    dantegg  
    OP
       2016-06-22 14:34:16 +08:00
    @Niphor 嗯, html , css , js 就够了哦
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3583 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 04:45 · PVG 12:45 · LAX 21:45 · JFK 00:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.