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

nodejs 的 mvc,代码组织的方式怎么更合理?

  •  
  •   thonatos · 2015-02-10 01:20:23 +08:00 · 4680 次点击
    这是一个创建于 3566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT.

    Before

    原来是按照以前学习的时候的习惯,将不同的controller统一放到一个controller目录,然后路由放到router目录,service什么的,当然也是那么放的,但说实话,很难处理,找文件蛋碎的一笔。

    Now

    image

    其中common那边把一些与视图无关的组件提出来了,然后类似blog/doc/user都是和路由以及视图相关的功能。

    Then

    那么问题来了,有没有必要要分离路由和controller?

    自问自答一些,刚才想了一会,感觉还是必要的,因为我的service和视图无关,换言之,它主要是处理各种请求、处理代码,或者说是一个工具类一样的存在,它就是必须得了~

    Github: https://github.com/thonatos/MT-Notes

    代码放在上面,主要功能是一个随意发心情的小博客和一个从github上拿个人笔记的文档站。

    11 条回复    2015-02-11 14:05:12 +08:00
    Kai
        1
    Kai  
    MOD
       2015-02-10 02:18:31 +08:00 via iPhone
    moved to /go/nodejs
    windyboy
        2
    windyboy  
       2015-02-10 09:52:56 +08:00
    现成的框架很多
    我现在比较偏向express一类的
    thonatos
        3
    thonatos  
    OP
       2015-02-10 10:26:27 +08:00
    @Kai

    其实我觉得,这个问题,不只是在node上面,同样对其他语言也有参考,代码组织的方式(准确说是MVC的结构),对其他语言也是适用的。
    thonatos
        4
    thonatos  
    OP
       2015-02-10 10:27:44 +08:00
    @windyboy

    我的程序就是基于express的,但是4.x以后的express,在努力的解耦,也就是自由度更高,和我说的问题关系不是很紧密哦~
    Stony
        5
    Stony  
       2015-02-10 10:39:17 +08:00
    nodejs 的MVC结构,参考 sailsjs 吧。
    MVC的问题就是有时候觉得拆分太细,增加一个功能,基本是 M V C都要改,特别是 V 和 C,因为功能展现的界面不一定是一个,所以是多组 V 和 C 都要改,动不动就好多个文件,很繁琐。
    MVC的优点嘛,等你要维护一个功能就发现了,不管是调试还是修改,代码流非常简单统一,有bug很容易定位,找关键词就能把相关的代码都找出来,嗯,你之前的努力现在得到了成果。
    tobeyouth
        6
    tobeyouth  
       2015-02-10 10:50:57 +08:00
    同@Stony 用sails吧,文件目录都给你创建好了。
    esyed
        7
    esyed  
       2015-02-10 23:57:43 +08:00
    用的webstrom?
    remaerd
        8
    remaerd  
       2015-02-11 00:55:50 +08:00
    说实话,个人认为现在要做有后端的 App 的话,Web 前端还是跟后端分开写比较好。后端用 ExpressJS 纯做 REST API,Web 前端做成静态网站,用 CORS 限制访问。

    我个人非常不喜欢 Django 和 ROR 这些框架。对于后端而言,加上各种无必要的 Template Engine 和 MVC 框架只会是负担。这也是 ExpressJS 选择将全部东西解藕的理由吧。
    thonatos
        9
    thonatos  
    OP
       2015-02-11 14:02:53 +08:00
    @Stony
    @tobeyouth

    (⊙v⊙)嗯,找时间去看一下,但是感觉目前我这里使用的方式,也是比较合理的,相对之前,现在这样组织代码,定位和修改,都方便了不少。
    thonatos
        10
    thonatos  
    OP
       2015-02-11 14:03:30 +08:00
    @esyed

    是的,webstorm
    thonatos
        11
    thonatos  
    OP
       2015-02-11 14:05:12 +08:00
    @remaerd

    恩,对的,我个人站这里需要博客功能,所以没分离,其他的项目是分离了。

    参考:

    http://www.thonatos.com/docs/MT-Experimentations/Trying-For-Separating-FrontEnd-From-BackEnd.md
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2778 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:05 · PVG 21:05 · LAX 05:05 · JFK 08:05
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.