- 主题:前端MVC最终的解决方案
这种很早很早就有了,基于canvas的,好像叫mocha吧
dom 还是要的,布局什么的有dom好,只是路子走歪了,以前被xml带歪,后来被 css 带
歪
再安利 molecule 组件化
https://github.com/inshua/d2js/blob/master/WebContent/guide/molecule.md
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 我觉得 angularjs react 这些都弱暴了。。前端最终会弄出一个只使用 opengl
canvas 的 JS 库,再用 JSON 弄出布局语言,要啥的 DOM。以后浏览器超简单,只要提
供基础的网络服务、一个 opengl canvas,音视频解码,剩下的都省了。
: 嗯。。我说的就是 Qt
--
FROM 110.184.146.*
这有什么好笑的,你抱着对angular功能的期望看molecule当然觉得很奇怪,反过来你抱着对molecule功能的期望看angular,angular可能用起来还不错,但是组件过程可谓一塌糊涂,观念也不通透,从原型到最终变成组件,过程极其复杂,概念繁多,不信你用angular实现molecule的第一个例子试试
追本溯源,组件无非就是可以复用的颗粒,从一段程序到它能复用于其它页面,这个过程越简洁开发效率就越高,不能为了最终用起来好爽在幽暗的隧道里不断折腾,组件也可能要返工,如果脱离了开始的代码,未来返工难度就大了
不如看看molecule怎么封装bootstrap对话框:
<div class="modal fade" molecule-def="bs.Dialog">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title"></h4>
</div>
<div class="modal-body">
<!-- {INNER_HTML} -->
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
<script>
// MOLECULE_DEF
bs.Dialog = function(){
this.$el.find('modal-title').html(this.$el.attr('modal-title'));
}
// MOLECULE_DEF_END
Molecule.create(bs.Dialog)
</script>
</div><!-- /.modal -->
使用:
<div molecule="bs.Dialog" modal-title="标题">对话框内容</div>
现在换 angular 或者你能看到的其它框架试试
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 笑死了 好好的angular不用 自己造轮子
: angular很多功能你都没有
--
FROM 101.204.247.*
我这个框架本来就是一个组件框架,数据方面自有数据框架
不要吹牛,你给个angular的实现吧
从代码都可以看出我这个才是真正的分分钟,我从bootstrap网站贴过来改成组件不费吹灰之力
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 你这连two way binding之类的基本功能都没有 就是一个模板工具 说白就是用jquery把模板删掉再重新插回去 用angular不论1和2都分分钟实现的 是你对angular了解太浅了
: 1里面需要jquery+compile 我自己就实现过这种功能
: 2本身就是用component组织结构的 根本就不用你造轮子了
--
修改:Inshua FROM 101.204.247.*
FROM 101.204.247.*
view 和 data 分开并不是体现在组件上的,你们这个思路本来就有问题
你说组件就非得 mvvm,我问你 html button 是不是组件,html button 有没有 mvvm?
之所以不用node.js并不是我不会nodejs,nodejs 这种全靠回调的框架根本就没有办法出堆栈,要用 activiti 之类 java 框架也很麻烦
所秀树控件更是。。。。molecules 目录里有一个树,从树到trigger到下拉树都给了,可以单选、多选,可以配其它列类型(比如下拉列表框)
你刚才吹嘘 angular可以很轻松做组件,你把bootstrap的Dialog组件化试试,把molecule第一个例子变成组件试试
这种双向绑定从 vb6 到后面 wpf、flex 之流已经不止一年了,在我看来就是一条歪路,只不过你们在迷信状态看不出来
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 懒得吐槽了 view和data分开的话 你这个框架就不是mvvm 本身就是落后的技术了 mvvm的精髓就是binding 根据datacontext自动生成需要的view 只要把template写好 不管多复杂的数据传给根节点 多层级的view会自动生成
: 扫了一下你的文档 用js做页面脚本也是自己造轮子 nodejs上随便改一下middleware用js动态处理请求就好了 分明有原生的js服务器 你干嘛自己用java再造轮子
: 反正前端库五花八门 你那套东西你自己习惯就那你就自己用吧 我反正是觉得没什么用 所以你最好不要上来安利忽悠初学者了
: ...................
--
FROM 101.204.247.*
当然不需要重来啊,molecule可以引用到其它页面用,不然怎么还叫组件
第一种做法:
Molecule.loadHtml(包含组件的html文件, 支持 jsp jssp 之类可以在 servlet include 的服务器端页面)
第二种做法:
放在 molecules 目录,extract,从html文件抽出到组件库(一堆json)
第二种做法直接写组件名就可以用了,不需要显式引用
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: Angular2和React之所以代码和html混在一起 是为了方便在多个不同页面里复用 (Angular1其实是推荐html template和js分开的,Angular2用了AMD loader,所以为了便于管理所以官方例子上是推荐把html和js放在同一个文件里吧)
: 你这种在一个页面里定义的 换个页面就要重新来
: 我个人感觉你是上个世代习惯用PHP或者ASP.NET Razor之类的server script转过来的 对现在流行的SPA不习惯吧
: ...................
--
FROM 101.204.247.*
molecule并不是view template,而是包含有活动的组件(活动的脚本域限于该组件本身)
molecule的设计定位里就不包括数据,仅仅就是组件,当然,组件也可以降级成 template,但是组件并不仅仅是 view template
我自己有一套数据框架也就是 d2js 实现,因为你对 mvvm 中毒很深,这里就不谈 d2js 了,能把 molecule 对比 angular react 说到位也就够了
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: Angular2和React之所以代码和html混在一起 是为了方便在多个不同页面里复用 (Angular1其实是推荐html template和js分开的,Angular2用了AMD loader,所以为了便于管理所以官方例子上是推荐把html和js放在同一个文件里吧)
: 你这种在一个页面里定义的 换个页面就要重新来
: 我个人感觉你是上个世代习惯用PHP或者ASP.NET Razor之类的server script转过来的 对现在流行的SPA不习惯吧
: ...................
--
FROM 101.204.247.*
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 1、mvvm有点是自动根据数据生成view啊 数据修改了 比如add/remove/update view
也会自动变化 所以mvvm里面代码只要管理data和template就行了 你那个东西根据
data生成view是自己管的 比mvvm麻烦多了
要自动很容易,难的是明明可以自动我却不想搞自动,因为我已经受够了这种所谓的
自动,在我心里从model到界面是一个函数:render(model, 界面),在以往实践我充
分意识到:不自动更好。实际上,按正确的mvc思想,model view control 中,view
是不能直接去改 model 的,现在这种双向绑定是违反这个思想的。
: 2、mvvm在自己的controller或者viewmodel当中处理事件 对view和data的处理做了
很好的逻辑划分 你那种生成一堆view然后混在一起管理是very bad practice
你自己理解错了,每个molecule组件都可以包含自己的小mvc块,并不是一个纯粹的
view。mvc不是一种层切理论,而是块切理论,每个组件拥有自己的mvc。mvc也不是很
宏大的一套结构,仅仅就是数据和界面分离。现在mvvm的实践就是误入歧途。
: nodejs的non blocking我就不说 总之web server用nodejs 后端如果逻辑太复杂或
者工作量太大 就用node调用hadoop/spark+python/java之类的
: ...................
我现在这种做法没有什么问题,既能玩js也能兼容java,现在nodejs还有nashorn上的
移植版本。我只不过比别人早醒了一点。
--
FROM 222.211.139.*
你随便打开一个网页,应该就有一个直接的观念,我能不能把这个块独立出来,组装在
别的地方,如果你连这种直觉都失去了,那也就只能不断学习“主流框架”了
你后面说的知名度不够什么的,我并不觉得可耻,反正我自己的队伍用它比用 angular
react 爽就够了,培训成本也比这两个框架低
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 你说的那个什么bootstrap抓出来就能用到底算什么优点我没看明白
: 我给的那个example里面 你把任何element放进去就一样能用 只不过我那个例子里面
需要写个templateselector来决定数据用哪个template呈现
: 总之 js框架的另一个问题就是别人学了你的东西出去能不能找到工作 到处招前端都
要angular/react 这种东西说屁股决定脑袋也对 如果你是google的CTO做了个啥框架 也
许就有人去github上捧你臭脚了 呵呵呵 可惜你不是啊
--
FROM 222.211.139.*
动态语言你也受不了,那就不要看见什么不符合你口味的就反了,我这框架有这框架的
优势,我用下来觉得还不错,到处推荐推荐也是我自由
ps. 我认为表达业务用动态语言更好,建议尝试
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 那你随便吧 我是觉得mvc那套不如mvvm 因为我最开始是做winform 但是接触WPF/mvvm
就感觉比winform那种方便很多 你要是自己开公司 你就自己玩吧
: 就好比facebook坚守php 最后还搞了hiphop和HHVM 反正php那种动态类型语言我这种
新转过来的是不想用
--
FROM 222.211.139.*
如果你认为angular做的和molecule一样,而molecule远比angular简单,那还说啥,我
也没推介错,其实往深了说,molecule因为理念通透,搞组件继承、组合,都比angular
简单(我怀疑angular根本做不到类似的设计)
至于找工作,知道的人多了自然找工作方便了,不过这个框架这么简单,是个人就能学
会,贴在简历里也只能说明智商正常 :D
【 在 facilitator (黄书中自有颜如玉 脸书中自有黄金屋) 的大作中提到: 】
: 难道angular做的不是你说的那个东西么?
: 页面太复杂 就把重复出现的内容抽出来做个directive或者2.x的component
: angular上手是有点难度的 你的东西就是在现有的element上加几个attribute的话 对
初学小白是有点吸引力 然而出去找不到工作啊 反正我是不会建议别人去学背离主流的
东西 不想干了换工作都麻烦 人家面试问都用过啥 怎么回答……
--
FROM 222.211.139.*