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

没有人用 JavaScript 写后端吗,后端界没个像 webpack-dev-server 一样的工具?

  •  
  •   Kasumi20 · 2020-11-07 23:03:43 +08:00 · 4162 次点击
    这是一个创建于 1480 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Node.js 诞生 10 多年了,它的出现使 JavaScript 能够脱离浏览器直接运行,直接催生了 webpack 、Vue 、React,改变了整个前端界,但是没有人用 JavaScript 写后端吗?为什么没有人做一个像 webpack-dev-server 一样好用的工具呢?

    webpack-dev-server,可以让代码更新实时应用到浏览器界面,不用再去自己编译、刷新浏览器了,后端也需要啊,我想修改代码后立即看到代码的运行效果不可以吗?

    不过没关系,没有人做,那我只好自己做了,目前只在 Windows 系统上实现了,请大家给个 star !

    https://github.com/develon2015/node-dev-server
    第 1 条附言  ·  2020-11-08 01:50:53 +08:00
    统一回复几点:

    为什么要用 webpack?
    webpack 他妈的好用啊, 有模块的概念, 整个项目具有明确的依赖, 一个项目打包成一个.js 文件, 该 loader 处理的模块就交给 loader 处理. 不属于依赖的源码文件它不监听, 依赖改变了再编译, 编译了再启动我们的项目. 使用 TypeScript 的时候, 更是方便的一匹, 因为我认为 TypeScript 最好的开发方式就是开发用 webpack+Babel+@babel/preset-typescript, 发布用 tsc.

    打包成一坨不费事吗?
    webpack-node-externals 了解一下, 没人愿意打包 node_modules 下面的代码, 我也一样, 早就实现了 webpack-node-externals 一样的功能.

    不写 js 的请不要来自讨没趣.
    19 条回复    2020-12-04 21:21:39 +08:00
    lazyboy
        1
    lazyboy  
       2020-11-07 23:11:58 +08:00
    nodemon?
    Kasumi20
        2
    Kasumi20  
    OP
       2020-11-07 23:15:08 +08:00
    @lazyboy

    Why not use the nodemon?
    为什么不用 nodemon ?

    We use webpack5, not simply watch the OS File-System events;
    使用 webpack5, 而不是简单地监听文件事件。

    We can kill already exists process, compile and restart a cmd.exe window on source-code changes.
    代码改变后立即编译,然后立即重启一个 cmd 窗口运行。
    musi
        3
    musi  
       2020-11-08 00:05:13 +08:00
    前端用 webpack 是因为需要打包 后端你用的啥框架也需要打包?
    autogen
        4
    autogen  
       2020-11-08 00:22:21 +08:00
    nodejs 改完代码会自动重启
    Blacate
        5
    Blacate  
       2020-11-08 00:30:30 +08:00 via iPhone
    nestjs 有 hmr
    seki
        6
    seki  
       2020-11-08 00:34:41 +08:00
    项目推广就项目推广呗,为什么要起个问问题一样的标题

    虽然用 webpack 来开发后端项目也不是不行,但是大家都是一样监听文件事件重起进程,webpack 还有一个打包的过程,除非也能实现热加载,否则我没有感觉到什么优势
    hujun528
        7
    hujun528  
       2020-11-08 00:36:14 +08:00   ❤️ 1
    加油,奥利给
    FreeEx
        8
    FreeEx  
       2020-11-08 01:11:10 +08:00 via iPhone   ❤️ 1
    因为后端不只是 web,就连 web 也不仅仅是浏览器。
    自动刷新浏览器这也不会是系统开发的痛点,建议不要做无用功了,还是多学习一下吧。
    Kasumi20
        9
    Kasumi20  
    OP
       2020-11-08 01:18:05 +08:00
    @Blacate

    @nestjs/cli 也是用的 webpack
    Kasumi20
        10
    Kasumi20  
    OP
       2020-11-08 01:25:35 +08:00
    @hujun528 谢谢, 加油! 奥利给!

    @FreeEx 你管这叫无用功. 好吧, 智者忧能者劳, 无知者无求, 我不跟你一般见识.
    hronro
        11
    hronro  
       2020-11-08 01:59:24 +08:00
    Why not use the nodemon?
    为什么不用 nodemon ?

    We use webpack5, not simply watch the OS File-System events;
    使用 webpack5, 而不是简单地监听文件事件。

    We can kill already exists process, compile and restart a cmd.exe window on source-code changes.
    代码改变后立即编译,然后立即重启一个 cmd 窗口运行。


    --------------------------------------------------------------------------------------------
    Webpack 不也是监听了文件事件?还是使用 Webpack 能比简单的监听文件事件带来什么额外的好处?不懂。

    另外 nodemon 不也是在文件改变之后重启了一个进程么?你重启一个 cmd 窗口不是还要先重启一个 Terminal (Linux / macOS) / Console (Windows) 再重启进程,这样不是更慢了吗?有什么好处?

    另外现在前端开发工具的趋势都是不在开发模式下打包 (snowpack, vite) 而直接使用浏览器自带的模块系统 (ESM),这样可以有更快速高效的开发体验,而 Webpack 的局限性在于 Webpack 诞生的时候浏览器还不支持模块系统,所以必须要打包。对于 node 这种自带模块系统的东西,就算真要做热加载,Webpack 也不是一个很好的选择,毕竟 Webpack 也太慢了。

    我个人观点是 nodemon 其实在大部分情况下应该都够用了.
    Kasumi20
        12
    Kasumi20  
    OP
       2020-11-08 02:12:15 +08:00
    @hronro nodemon 使用场景过于局限, 附言里有说明, webpack 只监听项目依赖.

    "重启一个 cmd 窗口"这句话更准确一点说是"弹出一个新的 cmd 窗口".
    hronro
        13
    hronro  
       2020-11-08 02:14:19 +08:00
    对啊,弹出一个新的 cmd 窗口,比起直接重启 node 进程有什么好处?而且还更慢了
    hronro
        14
    hronro  
       2020-11-08 02:15:39 +08:00
    还有你用 webpack 打包怎么处理那些要做 FFI 的库?
    Kasumi20
        15
    Kasumi20  
    OP
       2020-11-08 02:15:51 +08:00
    @hronro 我可以立即观察到运行情况啊, 不用去看 nodemon 在哪里了.
    muzuiget
        16
    muzuiget  
       2020-11-08 02:22:53 +08:00
    nodemon 支持任意命令,不局限于 node 程序。所以任意打包器都行,监听 webpack 的最终的打包文件就行了。

    重启直接杀原来的进程就行了,再起一个 cmd.exe 实在多此一举,所以 #11 楼才说这更慢。
    ljpCN
        17
    ljpCN  
       2020-11-08 02:25:16 +08:00 via Android
    already exists process
    语法有问题
    楼主最好把 Readme 里的英文请个 native speaker 或者有英文写作经验的专业选手过一遍
    ericgui
        18
    ericgui  
       2020-11-08 02:53:49 +08:00
    工具是用于解决问题的

    你的 node-dev-server 解决了什么问题?
    dream4ever
        19
    dream4ever  
       2020-12-04 21:21:39 +08:00   ❤️ 1
    Node.js 后端开发环境用 nodemon,部署时用 PM2,写后端这几年,大家普遍都是这种习惯。

    而且 nodemon 完全可以通过相关配置,只监听你希望监听的部分,这些工具发展了这么多年,都很成熟了。

    至于你的标题“没有人用 JavaScript 写后端吗,后端界没个像 webpack-dev-server 一样的工具?”以及“不写 js 的请不要来自讨没趣.”,让人觉得你高高在上,俯瞰众生。互联网上大家都是平等的,平等地讨论,平等地交流,即使你真的做出了震惊世界的产品,用这种标题和语气,让人觉得很没有礼貌,有些人会不想和你交流,有些人看你语气这么冲,也会不自觉地跟你刚,这样更是让大家无法有效地交流。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3648 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 10:44 · PVG 18:44 · LAX 02:44 · JFK 05:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.