非 SPA,但想实现 MVVM 或者 MVC 等,有什么选择吗 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
changrui0608
V2EX    Javascript

非 SPA,但想实现 MVVM 或者 MVC 等,有什么选择吗

  •  2
     
  •   changrui0608 2018-02-25 13:36:47 +08:00 5434 次点击
    这是一个创建于 2787 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端小白一个

    想实现的是,比如后端下载下来的页面中有个表格<table>,但<tbody>中没有内容,由页面下载完毕后执行 AJAX 从 JSON API 服务器获取内容,再填进表格里。

    似乎传统的方法是 jQuery 操作 DOM,但实话说操作 DOM 填表格有点糟心...

    我试了下按照 Vue.js 入门教程那样,直接在后端渲染的 HTML 里裸写v-for等 vue 的东西,在<script>标签里写new Vue({...})这样,似乎能用。但网上怎么搜都是用 vue-cli 直接构建整个前端大 app 的例子,没见过像我这么干的,不知道有没有坑...

    总之直接拿 Vue 做 MVVM 库是否合适,是不是杀鸡用牛刀了...?或者有没有其他的选择?

    19 条回复    2018-03-14 08:14:26 +08:00
    htfy96
        1
    htfy96  
       2018-02-25 13:40:47 +08:00
    把模板放到<template></template>标签里,<script>写 new Vue 应该是没问题的
    AlwaysBehave
        2
    AlwaysBehave  
       2018-02-25 13:59:58 +08:00 via Android
    建议看一遍 Vuejs 首页那个视频
    说的很清楚了是渐进式
    changrui0608
        3
    changrui0608  
    OP
       2018-02-25 14:10:19 +08:00
    @htfy96 多谢,查了下`<template>`感觉挺对的
    lhx2008
        4
    lhx2008  
       2018-02-25 14:12:11 +08:00 via Android
    有一个远古神器,jquery-template,微软写的,贼好用,不过可能要被 mvvm 党看不起了
    oswuhan
        5
    oswuhan  
       2018-02-25 14:22:09 +08:00
    根据你能接受的思维方式进行技术选型,比如至始至终被非前端所青睐的 template,或者前几年比较流行的双向绑定( mvvm ),以及近几年比较流行的单向数据流( flux )
    oswuhan
        6
    oswuhan  
       2018-02-25 14:22:34 +08:00
    @lhx2008 说出你的故事
    changrui0608
        7
    changrui0608  
    OP
       2018-02-25 14:27:34 +08:00
    @oswuhan template 和 mvvm 感觉都可以接受,有具体的框架 /库推荐吗
    leopku
        8
    leopku  
       2018-02-25 15:48:36 +08:00
    推荐一个 rivetsjs
    whypool
        9
    whypool  
       2018-02-25 16:55:09 +08:00
    artTemplate,腾讯出的模版,只解析拼接 html 很安逸
    murmur
        10
    murmur  
       2018-02-25 17:01:44 +08:00
    简单的 jquery+template 挺好使的
    毕竟性能无敌
    duan602728596
        11
    duan602728596  
       2018-02-25 17:33:48 +08:00 via iPhone
    没有坑,我经常这么干
    zhaodazzle
        12
    zhaodazzle  
       2018-02-25 19:39:55 +08:00 via Android
    推荐一个 knockout.js
    zjsxwc
        13
    zjsxwc  
       2018-02-25 21:28:37 +08:00 via Android
    没毛病,我给 ckeditor 写插件时就是这么引入 vue 与 requirejs 的
    zhenizhui
        14
    zhenizhui  
       2018-02-25 23:16:13 +08:00
    @htfy96 你好,如果这种情况下,想模块化组织的话,有什么建议呢
    VDimos
        15
    VDimos  
       2018-02-25 23:24:11 +08:00 via Android
    没有,其实是一样的。我第一次用 vue 就是直接 script 标签操作,本质上并没有什么差别。当时写 render 写得很烦,后来才知道可以用 vue cli
    htfy96
        16
    htfy96  
       2018-02-26 01:01:21 +08:00 via Android
    @zhenizhui requirejs,把 template 放到字符串里和其他属性一起导出
    nwljy
        17
    nwljy  
       2018-02-26 02:08:54 +08:00
    freemaker
    oswuhan
        18
    oswuhan  
       2018-02-26 11:22:26 +08:00
    @changrui0608

    前端 template 我推荐 lodash.template,推荐这个主要是因为 lodash 的应用相当广泛;

    MVVM/MVP/MV*框架我推荐 emberjs,该类型框架的集大成之作;

    另外还有一些题外话。

    你选择的前端技术背后的思想如果很简单,比如 template,意味着你把大量的思考工作放到了开发过程中,相反的,如果你选择 MV*或者 Flux 架构的框架,意味着你前置考虑了很多问题,实际开发的时候参照框架的模式进行开发即可完成大部分开发工作,换句话说,这两个类型的框架,是由复杂的前端开发思想、模式、流程……提炼而来。
    des
        19
    des  
       2018-03-14 08:14:26 +08:00 via Android
    如果没有想上这些框架的话可以试试 datatables
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     955 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 19:44 PVG 03:44 LAX 12:44 JFK 15:44
    Do have faith in what you're doing.
    ubao 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