http://www.w3school.com.cn
传统的基于表单提交, 整页刷新式的并不需要前端MVC. 当 然这种体验会很糟糕。
试想一下, 用WebQQ时,每发一次消息页面就要泛白一次, 这是什么感受。
JS MVC随着ajax技术的应用慢慢演进出来的。
Ajax 下的request/response步骤:
js 从dom中提取数据 -> post json -> 后台接收json -> 执行相关逻辑 -> response json -> js 获取response -> 更新dom 。
在 post json 和 response json 中, json格式数据即是js对象。从这里就衍生出Model.
Model 改变刷新 View, View有用户输入改变Model. 这种方式就是典型的 M-V模型。
M-V模型的缺点是Model 和 View的耦合性很高, 复用度不够。 此时引入Controller控制Model - View 之间的交互。
关于JS MVC技术实现也可以看 backbone.js .
其实整个前端开发就是一个大大的MVC架构——
Model: HTML/XHTML中的信息
View: Style sheet
Controller: EMAScripts等等脚本
$(function (){})相当于$(document).ready(function (){}).这是jQuery中的一种用法,其中的$等同于jQuery
(function($) {…})(jQuery);
这里实际上是匿名函数,如下:
function(arg){…}
这就定义了一个匿名函数,参数为arg
而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:
(function(arg){…})(param)
这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数
而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery
相当于funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);
$(function(){…});
或者:
jQuery(function($) {
…
});
允许你绑定一个在DOM(不包含图片)文档载入完成后执行的函数。这个函数的作用如同$(document).ready()一样,只不过用这个函数时,需要把页面中所有需要在 DOM 加载完成时执行的$()操作符都包装到其中来。从技术上来说,这个函数是可链接的--但真正以这种方式链接的情况并不多。
全写是:
$(document).ready(function(){
…
});