- 主题:有没有人觉得(前端)mvc的写法其实并不好?
其实我觉得楼主说的没错。。mvc 模式我也觉得太圡了。
假如 javascript 有 await/async 语法,我会希望这么写:
function nomvctable() {
var data = await ajax(url, params);
updateTable(data);
async changed(data) {
updateTable();
};
async clicked(btnAddRow) {
var animation = async {
try{
$("#loading").show();
await();
}catch(kill) {
$("#loading").hide();
}
};
data.push(newRow);
await save();
animation.kill();
};
async clicked(btnRemoveRow) {
data.pop(); // 忘了怎么写。
};
}
【 在 dhcn (Coder) 的大作中提到: 】
: 架构的重点就就是结构优化设计,你这种过程流是大一新生完成C语言作业的思路。现实系统的执行结构就不是这样。按你这个思路这个世界别说OO了,连自顶向下分解都没有出现的必要。
: :今天认真看了下,理解了下。
: :其实就是把常规写法的一整个流程,把它肢解分尸,其中的某些部分放进model,某些部分放进view,某些部分放进controller,然后把相互间的调用逻辑安排好,就完成了。
: ...................
--
修改:hgoldfish FROM 27.154.8.*
FROM 27.154.225.*
等高人来实现吧。。我等着用就好,呵呵。
我这里只是解释了另外一种 MVC 之外的思想。我觉得写起来会比 angular/reactjs 那种好看清晰。
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: await/async是语法糖
: 如果你想实现可以自己盖typescript compiler 开源的
--
FROM 211.162.33.*
我在想这个东西用 yield 和 inlineCallbacks 也能实现。
等我有时间弄个这种 JS 库。
【 在 dhcn (Coder) 的大作中提到: 】
: 你先让楼主接受async这样的调度原语再说。
: :其实我觉得楼主说的没错。。mvc 模式我也觉得太圡了。
: :假如 javascript 有 await/async 语法,我会希望这么写:
: ...................
--
FROM 211.162.33.*
ie 真是万恶。。居然不支持 yield 语法。
【 在 dhcn (Coder) 的大作中提到: 】
: 你先让楼主接受async这样的调度原语再说。
: :其实我觉得楼主说的没错。。mvc 模式我也觉得太圡了。
: :假如 javascript 有 await/async 语法,我会希望这么写:
: ...................
--
FROM 211.162.33.*
绕过 callback 想来想去唯一的办法就是 coroutine 或者多线程了。
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: angular2推的rxjs 目的就是避免callback套callback 不过反正都绕不开callback函数
--
FROM 211.162.33.*
当然也可以,配合 Q 之类的用也能达到同样的效果,但是没有 async await 定义函数块写起来仍然不好看。
【 在 alenym3 (alen) 的大作中提到: 】
: 为啥不用promise
--
FROM 211.162.33.*
就不想要这个思想。
m 变化 <=> c <=> v 变化
改成:
等待 m 变化,然后 v 变化。省掉 c
【 在 Inshua (在庭) 的大作中提到: 】
: 你没有仔细看我说的内容,我表达的很清楚:mvc 是一个思想,并不是一套模式
--
FROM 27.154.8.*
on 的语义和 async 不一样。jq 的 once 还差不多。实际上 async 只是 await 功能的必要设施而已,本身并没有太多的东西。async 标识一个 coroutine,coroutine 具备被 kill 的能力。
顺便说一下,我写的这些东西不是脑洞大开写出来的。是 dotnet 和 python 都在实际应用的东东。nodejs 社区有用过,但是桌面端浏览器都不支持 yield,所以也很少有人往这方面想。
【 在 Inshua (在庭) 的大作中提到: 】
: function nomvctable() {
: // 异步变同步,使用 await 很好
: var data = await ajax(url, params);
: ...................
--
FROM 27.154.8.*
说白了就是主导权的变化。。
1. 弄个 view,写上一堆 on() 监视数据变化,然后改数据。
2. 定义数据,定义当数据变化的时候干什么事情。
我比较倾向于后者。
【 在 Inshua (在庭) 的大作中提到: 】
: 你也被市面上的奇葩框架误导了,严格的说 m - v 之间是不需要 c 的,你可以找个经
: 典的mvc图看看,上面绝对有 m->v 这条线,不需要经过 c,否则就不是三角形了
: 其次,m的变化并不必然需要更新v,大部分场合,m 在运算过程中变来变去都不希望更
: ...................
--
FROM 27.154.8.*