当前位置: 首页 > news >正文

济南建设网站 概况/seo课堂

济南建设网站 概况,seo课堂,什么网站做的号,asp做网站教程原文地址:http://www.cnblogs.com/justany/archive/2013/05/28/3100393.html 现在,Require.js是我最喜欢的Javascript编程方式。它可以使代码化整为零,并易于管理。而Require.js Optimizer能帮助我们将一个较大的应用分散成多个较小的应用&a…

原文地址:http://www.cnblogs.com/justany/archive/2013/05/28/3100393.html

现在,Require.js是我最喜欢的Javascript编程方式。它可以使代码化整为零,并易于管理。而Require.js Optimizer能帮助我们将一个较大的应用分散成多个较小的应用,并通过依赖串联起来,最后在编译打包时合并起来。这些原因促使我们使用require.js。

那么,让我们来看看require.js有什么牛逼的特性吧!

与CommonJS兼容

AMD (异步模块定义规范) 出现自CommonJS工作组。CommonJS旨在创造Javascript的生态系统。 CommonJS的一个重要部分是transport/c, 即AMD的前身,而require.js则是该规范的一个实现。

CommonJS模块和AMD模块的语法差异,主要由于AMD需要支持浏览器的异步特性。而CommonJS模块则需要同步进行,例如:

复制代码
var someModule = require( "someModule" );
var anotherModule = require( "anotherModule" );    exports.asplode = function() {someModule.doTehAwesome();anotherModule.doMoarAwesome();
};
复制代码

AMD模块是异步加载模块的,故而模块定义需要一个数组作为第一个参数,而模块加载完毕后回调的函数作为第二个参数传入。

复制代码
define( [ "someModule"],  function( someModule ) {   return {asplode: function() {someModule.doTehAwesome();// 这将会异步执行require( [ "anotherModule" ], function( anotherModule ) {anotherModule.doMoarAwesome();});}};
});
复制代码

然而,在require.js中AMD亦能兼容CommonJS语法。通过AMD的define函数包装CommonJS模块,你也可以再AMD中拥有一个CommonJS模块,例如:

复制代码
define(function( require, exports, module )var someModule = require( "someModule" );var anotherModule = require( "anotherModule" );    someModule.doTehAwesome();anotherModule.doMoarAwesome();exports.asplode = function() {someModule.doTehAwesome();anotherModule.doMoarAwesome();};
});
复制代码

实际上,require.js通过函数.toString解释回调函数的模块内容,找到其正确的依赖,将其变成一个通常的AMD模块。需要注意,如果你使用这种方式编写模块,可能会发生与其他AMD加载器不兼容的情况,因为这违背了AMD规范,但它能很好的理解这种格式的写法。

这里发生了什么,require.js实际上做了function.toString的回调函数解析模块的内容,找到正确的依赖,就像它,如果它是一个正常的AMD模块。重要的是要注意,如果您选择这样写模块,他们将最有可能不兼容与其他AMD模块装载机,因为这违背了AMD规范,但它是很好的了解这个格式存在!

 

CDN回退

另一个隐藏的require.js瑰宝是,其支持当CDN加载不正确时,回退加载本地相应的库。我们可以通过require.config达到这个目的:

复制代码
requirejs.config({paths: {jquery: ['//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.0/jquery.min.js','lib/jquery']}
});
复制代码

 

没有依赖?对象字面量?没问题!

当你写一个没有任何依赖的模块,并且只是返回一个对象包含一些功能函数,那么我们可以使用一种简单的语法:

复制代码
define({forceChoke: function() {},forceLighting: function() {},forceRun: function() {}    
});
复制代码

很简单,也很有用,如果该模块仅仅是功能的集合,或者只是一个数据包。

 

循环依赖

在一些情况中,我们可能需要模块moduleA和moduleA中的函数需要依赖一些应用。这就是循环依赖。

复制代码
// js/app/moduleA.js
define( [ "require", "app/app"],function( require, app ) {return {foo: function( title ) {var app = require( "app/app" );return app.something();}}}
);
复制代码

 

得到模块的地址

如果你需要得到模块的地址,你可以这么做……

var path = require.toUrl("./style.css");

 

BaseUrl

通常,在进行的单元测试时,你的源代码可能放在类似src的文件夹里,同时,可能你的测试放在类似tests的文件夹里。这可能比较难让测试配置正确。

比如我们在tests文件夹有一个index.html文件,并需要本地加载tests/spec/*.js。并假设,所有源代码在为src/js/*.js,并有一个main.js在该文件夹。

index.html中,不在加载require.js时设置data-main。

复制代码
<script src="src/js/vendor/require.js"></script>
<script>
require( [ "../src/js/main.js" ], function() {require.config({baseUrl: "../src/js/"});require([ "./spec/test.spec.js","./spec/moar.spec.js"], function() {// start your test framework
    });
});
</script>
复制代码

你可以发现main.js被加载。然而由于没有设置data-main,所欲我们需要制定一个baseUrl。而当使用data-main时,baseUrl会根据其设定的文件来自动设置。

在这里,你可以看到main.js被载入。然而,由于它没有加载数据主要脚本标记,那么您必须指定一个base即可。当数据主要是用于baseURL时从主文件中的位置推断。通过自定义baseUrl我们可以很容易将测试代码和应用代码分开存放。

 

JSONP

我们可以这样处理JSONP终端:

require( [ "http://someapi.com/foo?callback=define"
], function (data) {console.log(data);
});
 

对于非AMD库,使用shim来解决

在很多请款下,我们需要使用非AMD库。例如Backbone和Underscore并未适应AMD规范。而jQuery实际上只是将自己定义成一个名为jQuery全局变量,所以对于jQuery什么都不用做。

幸运的是,我们可以使用shim配置来解决这一问题。

复制代码
require.config({paths: {"backbone": "vendor/backbone","underscore": "vendor/underscore"},shim: {"backbone": {deps: [ "underscore" ],exports: "Backbone"},"underscore": {exports: "_"}}
});
复制代码
http://www.lbrq.cn/news/1377055.html

相关文章:

  • 营销型网站优化/程序员培训机构哪家好
  • 广西新增疫情最新消息今天封城了/china东莞seo
  • 手机网站制作公司/优质网站
  • 襄樊网站开发/怎么做推广让别人主动加我
  • 定做网站多少钱/环球资源外贸平台免费
  • 专做宝宝的用品网站/seo综合查询软件排名
  • dede 网站图标/长春网站seo哪家好
  • 老公做赌博网站推广/推广平台的方式有哪些
  • 网站建设专业/福州seo公司排名
  • 设计公司加盟/seo查询站长工具
  • 新疆好地方app谁开发的/太原seo快速排名怎么样
  • 做网站获取手机号码/谷歌优化培训
  • 上海高端网站制作公司/百度云搜索引擎入口盘多多
  • 万网网站空间服务范围及费用/推广普通话手抄报文字内容
  • 信息类网站有哪些/seo优化顾问
  • c2c网站开设店铺/免费发布信息的平台
  • 网站建设合同违约/快速排名方案
  • 高端企业网站建设公司/网站开发需要哪些技术
  • 宜昌外贸网站建设优化推广/搜索引擎技术基础
  • WordPress 4.9添加备案号/安徽网站seo公司
  • 网站建设div设置圆角/北京seo网络优化师
  • 网站空间面板/永久免费不收费的污染app
  • 可以看的网站都有哪些/长沙网站关键词排名
  • 手机网站自动适应/哪家建设公司网站
  • 网站建设(中企动力)/平谷头条新闻
  • ecshop 企业网站/100个关键词
  • 网站制作怎么学/在百度上打广告找谁
  • 网站建设励志文章/整合营销沟通
  • 一站式网站建设报价/南宁网站建设及推广
  • 做网站 流量怎么抓钱/百度推广一般多少钱
  • SQL语言学习(group by,having)
  • 从零打造大语言模型--处理文本数据
  • StarRocks vs ClickHouse:2025 年 OLAP 引擎终极对比指南
  • 仿真电路:(十七下)DC-DC升压压电路原理简单仿真
  • stm32是如何实现电源控制的?
  • SpringMVC全局异常处理+拦截器使用+参数校验