日期:2014-05-17  浏览次数:20653 次

驳HTML+CSS+JS就是MVC组合

今天看到某位童鞋的笔记,提出了一个HTML + CSS + JS就是一个MVC 的观点,大意就是由HTML提供数据模型,CSS负责视图显示,JS来总管逻辑控制,列举了将一部分HTML写在JS中到用时还是需要copy CSS十分不便捷,还附带一句"前端不像后台那样能够一门语言吃天下",笔者不敢苟同,拿出一些看法供君判断一二.

?

第一:
?? ?后端没有一语言定天下.相比前端的多浏览器.后端还是非常多的领域语言必须掌握,多个平台的区别(不是浏览器),语言上T-SQL访问数据 库,shell管理服务器,而多个业务平台交互更是交融反复(笔者常使用的Python调用C模块只是一个小例子,为什么XML曾经被寄以众望. Web Service不正是为了解决这种跨平台的工具么)
第二:
?? ?HTML绝不仅仅只是Model.还有多的视图成分在里面.HTML在很长的一段时间里都被人诟病,因为包含的内容太多,CSS,JS,图片甚至 Flash,Java app…不能不说混杂.即便如今html5也改变不了他的视图身份,这里要注意:浏览器是解析HTML来生成页面的,而不是CSS,HTML由于包含太 多,所以不能仅仅作为模型存在.
?? ?前端也不一定非要往MVC里硬套.而且MVC本身存在很多问题,诸如结构不灵活,衔接不紧密等等.所以又会有MVP,MVVP等多个拓展模式.需要注意的一点,MVC提供给我们最基础的是一种分层思想,而不是固定不变的视图模型和控制器.
?? ?比HTML+CSS+JS更MVC的应该是XML+XSL+XPATH,这套组合才是完全的MVC.CSDN就是使用的这套.
第三:
?? ?将部分功能独立出来时,犹豫HTML本身包含太多,所以还是会碰到又要copy CSS, JS之类的.

?? ? 我曾经也碰到过,那时我的解决方法是全部动态加载,使用JS.益处是完全作为了一个独立的模块,引入js就可以了,弊处就是所有修改都在JS总以字符串的形式修改,没有IDE的辅助略显麻烦,但是他们(HTML,CSS,JS)谁又不是能任意编辑的字符呢?