V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dblue
V2EX  ›  问与答

使用javascript的MVC时候前台后台Template的一致性如何维持?

  •  
  •   dblue · 2014-01-08 10:59:31 +08:00 · 3251 次点击
    这是一个创建于 3977 天前的主题,其中的信息可能已经有所发展或是发生改变。
    貌似都是全部在前台做template……
    9 条回复    1970-01-01 08:00:00 +08:00
    dblue
        1
    dblue  
    OP
       2014-01-08 11:11:14 +08:00
    或者这么说吧……

    有没有不在前台做template的方法, 但是又能使用MVC。

    看到angular貌似可以, 通过 ng-model, 但是这种方法貌似不能搞掂list。。。
    luikore
        2
    luikore  
       2014-01-08 11:39:30 +08:00
    还是锤子钉子问题. 没必要维持.
    2code
        3
    2code  
       2014-01-08 13:29:56 +08:00
    后台使用node.js,然后用统一的模板引擎,如何?
    rankjie
        4
    rankjie  
       2014-01-08 15:03:54 +08:00
    看了下题目,不太清楚LZ现在是怎么做的。。。
    我现在的做法就两种:

    1,全部都预先写好HTML,由nginx来提供文件服务,然后用angular的template载入,具体数据就动态向后台请求。这样模版就前端随便改,反正后台只喂数据,不提供HTML片段。

    2,模版由后台动态生成提供,后台把数据都写进到模版中,但是只写数据,具体的渲染,比如要根据某个变量的值来判断是否给某元素增加个class之类的操作就不做了,全都丢给用户的浏览器,让浏览器去跑里面的js来做渲染。这样模版就后端随便改,后台既动态生成页面,又喂数据
    yayy
        5
    yayy  
       2014-01-08 16:38:14 +08:00
    前端都用 template 了还要后端输出 template 干啥。。
    powerfj
        6
    powerfj  
       2014-01-08 16:44:03 +08:00
    mustache,不知道你们可以用不
    dblue
        7
    dblue  
    OP
       2014-01-08 17:14:18 +08:00
    @rankjie 目前也是这种作法, 而且貌似主流都还是这样做。 但是这两种作法都有点小问题,

    第一种对搜索引擎貌似还没有很好的方法解决, 另外浏览器渲染会拖慢响应速度, 而且几乎没办法支持老的浏览器, 一个页面不得不分成两个请求来加载。

    第二种基本没办法套用现在的MVC。 这样做实际上是喂给前端V, 可以把M转换为V但是没有把V转换为M的。 于是最后基本上限死在jquery的各种DOM操作中……

    我有看到前台后台统一node的作法, 有个项目貌似是前台后台直接统一一个lib然后写通(于是没有一致性的问题了)。 这个问题我觉的值得一问是他太明显很让人恶心但是又没找到成熟的解决方案(比如design pattern之类的)

    看大家的反馈来说, 这个问题还没有 Best Practice, 除了根据实际情况硬撸没有比较通用的成熟方法了?
    dblue
        8
    dblue  
    OP
       2014-01-08 17:19:58 +08:00
    @2code 比如你有一个 FoodList, 在浏览器渲染, 你需要暴露在 project/static/template/FoodList.html 下面。 而在server渲染, 你就需要放在 project/view/FoodList.hml 下面。。。 一份数据保存两个位置, 每次改都要两边改, 数据要人工保持一致
    dagger
        9
    dagger  
       2014-01-08 17:54:54 +08:00
    如果你所指的V转M是通过用户输入来修改M的数据,那angular显然可以完成,另外angular实现M-V双向映射的list也是没有问题的
    我感觉重度交互应用一般不太会需要SEO,反过来需要SEO的页面也不会有太多交互,所以这两种情形的页面可以分开来设计,前一种的前后端采用纯数据交互,后一种主要由后端来渲染
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4047 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 05:15 · PVG 13:15 · LAX 21:15 · JFK 00:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.