没有人用 Javascript 写后端吗,后端界没个像 webpack-dev-server 一样的工具? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Kasumi20
V2EX    Node.js

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

  •  
  •   Kasumi20 2020-11-07 23:03:43 +08:00 4551 次点击
    这是一个创建于 1849 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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
    加油,奥利给
    typeaudit
        8
    typeaudit  
       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     Solana     2890 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 14:04 PVG 22:04 LAX 06:04 JFK 09:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86