美文网首页
app 2018-10-25

app 2018-10-25

作者: 前端伊始 | 来源:发表于2018-11-21 16:55 被阅读0次

1. require.js的由来

image.png

使用:

 <script src="js/require.js" defer async="true" ></script>  //  是的异步加载require.js
    <script src="js/require.js" data-main="js/main"></script>  // 自己js模块

从最原始的模块到require的进化

  • 模块:实现特定功能的一组方法 ,缺点: 污染了全局变量,模块命名冲突,模块之间看不出直接关系
function f1(){}
function f2(){}
...
  • 对象:将模块成员都放到一个对象里面, 缺点: 会暴露所有模块成员,内部状态码可以被外部改写。。。
var module1 = {
  name: 'cdd',
  sayName: function(){alert(this.name)}
};
module1.name = 'zz'
  • 立即执行函数写法,可以达到不暴露私有成员的目的
var module1 = (
    function() {
      var age = 10;
      var f1 = function() { console.log(age++)};
      var f2 = function() { console.log(age--)};
      return {
        f1: f1,
        f2: f2
      }
   }
)();

  • 通行的js模块规范共用两种: CommonJs和AMD,nodejs的模块就是参照CommenJS规范实现的,,但是浏览器端的模块不能采用“同步加载(synchronous)”,只能采用异步加载(asynchronous)。。这就是AMD规范诞生的背景
define(['module1'], function(module1){
  function foo() {
     module1.doSomething();     
  }
  return {
   foo: foo
  };
});
  • require.js 如何加载模块

require.config({
    baseUrl: "js/lib",
    paths: {
      "jquery": "jquery.min",
      "underscore": "underscore.min",
      "backbone": "backbone.min"
    }
  });
// 加载AMD规范的模块
  // main.js
  require(['math'], function (math){
    alert(math.add(1,1));
  });

// 加载非规范的模块,require.js加载的模块,必须是按照AMD规范、用define()函数定义的模块。
require.config({
  shim: {
    'jquery.scroll': {
      deps: ['jquery'],
      exports: 'jQuery.fn.scroll'
    }
    }
})

2. EJS语法

  • 安装 npm install ejs
  • 语法糖:在 <%...%> 块中安排 JavaScript 代码,利用最传统的方式 <%=输出变量%>

3. backbone

  • Backbone 惟一的依赖就是underscore.js(http://documentcloud.github.com/underscore/),
    它是一个类库,由一些非常有用的工具和通用目的的JavaScript 函数组成。

  • 模型(Model): 在Backbone.Model 上调用extend() 函数来创建Backbone 模型; Backbone 模型本身是构造函数,所以可以使用new 关键词来生成一个新的实例

  • 集合(Collection):

  • 视图(View):每个视图有一个render()函数,一旦视图需要重绘,应该调用此函数,

var UserView = Backbone.View.extend({
initialize: function(){ /* ... */ },
render: function(){ /* ... */ }
});
  • 委托事件(events):
var TodoView = Backbone.View.extend({
events: {
"change input[type=checkbox]" : "toggleDone",
"click .destroy" : "clear",
},
toggleDone: function(e){ /* ... */},
clear: function(e){ /* ... */}
});
  • 绑定上下文:
  • 控制器(Controller):
var PageController = Backbone.Controller.extend({
routes: {
"": "index",
"help": "help", // #help
"search/:query": "search", // #search/kiwis
"search/:query/p:page": "search" // #search/kiwis/p7
},
index: function(){ /* ... */ },
help: function() {
// ...
},
search: function(query, page) {
// ...
}
});

4. (zepto) jquery

5. bridge

6. lizard

相关文章

网友评论

      本文标题:app 2018-10-25

      本文链接:https://www.haomeiwen.com/subject/mzdqtqtx.html