- 主题:有没有人觉得(前端)mvc的写法其实并不好?
这里为什么要 async 呢?直接 on('click') 不是一样?
再次安利 d2js,纯正的 mvc:
https://github.com/inshua/d2js/blob/master/WebContent/guide/d2js.md
mvc 的必要性:很多新手直观上会把ui元素当做数据对象,例如界面列表重排序,他
会认为是元素在重排序,而mvc告诉我们,排序是m在排,之后更新到 v。这是mvc的要
义。
楼主的直观感受也是对的。现在很多java转网页的搞的莫名其妙的框架把
model,controller、viewer 当做了每个页面应该具备的类,搞的一个破页面支离破碎
左一个文件有一个文件,数据库有的结构后端要重复一次,后端有的结构前端要重复
一次,叠床架屋
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 其实我觉得楼主说的没错。。mvc 模式我也觉得太圡了。
: 假如 javascript 有 await/async 语法,我会希望这么写:
: function nomvctable() {
: ...................
--
FROM 110.184.146.*
function nomvctable() {
// 异步变同步,使用 await 很好
var data = await ajax(url, params);
updateTable(data);
// 这种表达并不比 data.on('changed', render) 更自然
async changed(data) {
updateTable();
};
// 这种表达并不比 btn.on('clicked', ...) 更自然
async clicked(btnAddRow) {
var animation = async {
try{
$("#loading").show();
}catch(kill) {
$("#loading").hide();
}
};
data.push(newRow);
await save();
animation.kill();
};
// 同样
async clicked(btnRemoveRow) {
data.pop(); // 忘了怎么写。
};
}
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 其实我觉得楼主说的没错。。mvc 模式我也觉得太圡了。
: 假如 javascript 有 await/async 语法,我会希望这么写:
: function nomvctable() {
: ...................
--
FROM 14.152.90.*
你没有仔细看我说的内容,我表达的很清楚:mvc 是一个思想,并不是一套模式
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 呵呵。。你没仔细看我的代码吧。就是不想要 mvc 啊。
--
FROM 14.152.90.*
。。。好好玩你的typescript
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 那个人是另类 你不用理他
--
FROM 14.152.90.*
d2js 除了没有用 async、yield 式的异步,其它他给的写法都支持
function a(){
// standalone 说明该table只局限于该作用域
var a = new d2js.DataTable('name', 'a.d2js', {standalone:true})
a.load('fetch', function(){
$table.bindRoot(a).render()
btn.click(function(){...})
})
}
相反,你喜欢的angular没有机会
框架另类不表示我另类,框架另类也不是我的错,是你眼睛有问题
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 那个人是另类 你不用理他
--
FROM 14.152.90.*
你也被市面上的奇葩框架误导了,严格的说 m - v 之间是不需要 c 的,你可以找个经
典的mvc图看看,上面绝对有 m->v 这条线,不需要经过 c,否则就不是三角形了
其次,m的变化并不必然需要更新v,大部分场合,m 在运算过程中变来变去都不希望更
新 v,更新 v 只是特例。
就像你的想法里,可能更新 v 是一个动画,那么这时可以
do someting change m
do someting change m
await render
do someting change m
do someting change m
...
而不是类似于 m.onchange(render)
只在必要的时候才需要render。
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 就不想要这个思想。
: m 变化 <=> c <=> v 变化
: 改成:
: ...................
--
修改:Inshua FROM 14.152.90.*
FROM 14.152.90.*
我也玩c#,也搞并发服务器,甚至用erlang之类,完全理解你说的这些概念
确实应该用once,这个我纠正一下
我认为在这个场景 aync 并不比 on 这种纯回调更有优势,无论是表达上还是调试或者上
手,都没有什么优势
【 在 hgoldfish (老鱼) 的大作中提到: 】
: on 的语义和 async 不一样。jq 的 once 还差不多。实际上 async 只是 await 功能
的必要设施而已,本身并没有太多的东西。async 标识一个 coroutine,coroutine 具备
被 kill 的能力。
: 顺便说一下,我写的这些东西不是脑洞大开写出来的。是 dotnet 和 python 都在实际
应用的东东。nodejs 社区有用过,但是桌面端浏览器都不支持 yield,所以也很少有人
往这方面想。
--
FROM 14.152.90.*
我比较倾向于“改变数据时”有必要更新view就手工去render,避开“当数据变化
时。。。”这种伪问题
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 说白了就是主导权的变化。。
: 1. 弄个 view,写上一堆 on() 监视数据变化,然后改数据。
: 2. 定义数据,定义当数据变化的时候干什么事情。
: ...................
--
FROM 14.152.90.*
兄弟,这个框架最早是 2007年,请问那时候有 vue 吗
即使在今天,框架多如牛毛我也没有觉得对它们谈得上自惭形秽啊
【 在 hollyczy (哈哈) 的大作中提到: 】
: vue.js已经做到了单文件组件模式,别闭门造车阿大神
--
FROM 125.71.99.*
有特性不等于就得用,不等于就适用,你思维根本没有进入讨论的问题
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 那是js的特性 你又没有重新发明js
--
FROM 125.71.99.*