这个 Backbone TodoMVC 示例中的这些模式是什么 [英] What are these patterns in this Backbone TodoMVC example

查看:12
本文介绍了这个 Backbone TodoMVC 示例中的这些模式是什么的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

查看 todomvc 主干代码示例.js/折叠中的结构:

Looking into the todomvc backbone codes example. The structure in the js/ fold:

├── app.js
├── collections
│   └── todos.js
├── models
│   └── todo.js
├── routers
│   └── router.js
└── views
    ├── app-view.js
    └── todo-view.js

app.js

var app = app || {};
$(function () {
    'use strict';
    // kick things off by creating the `App`
    new app.AppView();
});

collections/todos.js

collections/todos.js

var app = app || {};

(function () {
    'use strict';
    var Todos = Backbone.Collection.extend({
    model: app.Todo,
    app.todos = new Todos();
})();

模型/todo.js

var app = app || {};

(function () {
    'use strict';
    app.Todo = Backbone.Model.extend({
    });
})();

views/app-view.js

views/app-view.js

var app = app || {};
(function ($) {
    'use strict';
    app.AppView = Backbone.View.extend({
})(jQuery);

我有两个问题:

  1. 为什么 var app = app ||{} 在每个文件中?

$(function(){})(function(){})()(function($))(jQuery)?

推荐答案

  1. app 变量是全局变量,封装了整个 Backbone 应用程序,以最大限度地减少全局命名空间污染.此处您可以找到有关命名空间模式的更多详细信息.

  1. app variable is global and encapsulates entire Backbone application to minimize global namespace pollution. Here you can find more details about Namespacing Patterns.

var app = app ||{} 使用新的空对象初始化全局 app 变量(如果尚未初始化).否则它将保持不变.

var app = app || {} initializes global app variable with new empty object if it is not initialized yet. Otherwise it will be untouched.

功能:

  • $(function(){}) 是 jQuery 的 $(document).ready(function(){}) 的快捷方式.文档
  • (function(){})() 是一个 立即-不带参数的调用函数表达式 (IIFE)
  • (function($){/* 这里 $ 是安全的 jQuery 对象 */})(jQuery) 是带有参数的 IIFE - jQuery 对象将作为 $ 进入匿名函数
  • $(function(){}) is a shortcut for jQuery's $(document).ready(function(){}). Docs
  • (function(){})() is an Immediately-invoked function expression (IIFE) without parameters
  • (function($){ /* here $ is safe jQuery object */ })(jQuery) is IIFE with parameter - jQuery object will be passed as $ into that anonymous function

$(function() {
  console.log("Document ready event");
});

$(document).ready(function() {
  console.log("Document ready event");
});

(function() {
  console.log("Immediately-invoked function expression without parameters");
})();

(function($) {
  console.log("Immediately-invoked function expression with parameter. $ is a jQuery object here:");
  console.log($.fn.jquery);
})(jQuery);

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这篇关于这个 Backbone TodoMVC 示例中的这些模式是什么的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆