使用RequireJS优化JavaScript引用代码的方法


Posted in Javascript onJuly 01, 2015

 RequireJS是一个提高你的javascript代码速度和质量的有效方法,同时它还让你的代码更容易阅读和维护。

在本文中,我会为你介绍RequireJS和应该如何使用它。我们讨论引入文件和定义模块,甚至还会接触优化方面的知识。

简单的说,require.js是一个脚本载入程序,允许你把你的javascript代码独立成文件和模块,同时管理每个模块间的依赖关系。

引入文件

在开始使用RequireJS前,我们需要先下载它的库和Asynchronous Module Definition(AMD)文件。然后在文档头部链接到require.js文件,就如:

<script src="require.js" data-main="main"></script>

你可能会问data-main属性是什么,使用RequireJS意味着当你在文档的头部调用require的时候,你同时也会链接到你的javascript应用的主文件,在这个例子里面就是main.js(请注意,RequireJS自动添加.js后缀到文件名的后面)

在main.js文件里面,需要为RequireJS做配置,载入模块和定义一个base路径,以便在引入文件时使用。

Require函数

RequireJS使用一个简单的require函数去导入脚本,在这个例子里面,RequireJS导入的是JQuery:
 

require(["jquery"], function($) {
 $(‘#mydiv”).html(‘Hello this is RequireJS talking”);
});

RequireJS的一个优点就是,它非常容易阅读。在上面的代码中,我们可以看到,首先require函数抓取名字为jquery.js的文件,然后给一个匿名函数传入$作为参数,当这个动作完成后,你就可以任意使用JQuery的代码了。

现在,你的代码中一般不会包含jquery.js文件的jQuery库,就如大多数的插件和框架,我们通常选择从他们的GitHub或者Google CDN中导入进来,这样我们就需要配置他们的真正路径:
 

require.config({
 paths: {
  "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"
 }
});

这就是说你可以通过Google导入jquery(请注意我在这个例子里面使用的是"jquery"名称,你可以使用任何你喜欢的名称)

定义模块

使用AMD模式,意味着我们的代码可以结构化成为模块;这些模块实现应用中的某些功能。你可以在一个模块中只放两行代码或者100行代码,这完全决定于你想通过模块实现什么功能。

定义模块,我们可以这样写:
 

define(function () {
 function add (x,y) {
  return x + y;
 }
});

这个里面里面,我定义了一个add函数,并且没有任何依赖,但是如果这个函数需要jquery才能正常工作,定义代码可能就是这样:
 

define([‘jquery'], function () {
 function place(mydiv) {
$(mydiv).html(‘My Sample Text');
 }
});

使用这种语法,我们告诉JavaScript首先导入jquery,然后运行代码,这样任何时候都能使用jquery。我们也可以使用在Javascript文件中定义的模块,不仅限于框架或者插件。

优化

就像你看到的一样,RequireJS是一个强大的工具,去把你的文件组织成模块,并且在你需要的时候才导入。其中的缺点就是大量的javascript文件的时候,也需要大量的导入时间,所以RequireJS包含了一个optimizer优化器去收集所有文件的数据并把它放到一个压缩文件里面。

总的来说,RequireJS是一个很好的工具去组织和优化你web应用中的Javascript。

Javascript 相关文章推荐
javascript qq右下角滑出窗口 sheyMsg
Mar 21 Javascript
jQuery图片轮播的具体实现
Sep 11 Javascript
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
Aug 14 Javascript
基于Bootstrap使用jQuery实现输入框组input-group的添加与删除
May 03 Javascript
Summernote实现图片上传功能的简单方法
Jul 11 Javascript
浅谈js中StringBuffer类的实现方法及使用
Sep 02 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
jquery写出PC端轮播图实例
Jan 26 jQuery
js实现多个倒计时并行 js拼团倒计时
Feb 25 Javascript
详解vue的双向绑定原理及实现
May 05 Javascript
js实现简单的秒表
Jan 16 Javascript
React实现全选功能
Aug 25 Javascript
优化RequireJS项目的相关技巧总结
Jul 01 #Javascript
JavaScript的RequireJS库入门指南
Jul 01 #Javascript
Backbone.js的一些使用技巧
Jul 01 #Javascript
JavaScript框架是什么?怎样才能叫做框架?
Jul 01 #Javascript
javascript常用的方法分享
Jul 01 #Javascript
JavaScript数组去重的3种方法和代码实例
Jul 01 #Javascript
JavaScript检测字符串中是否含有html标签实现方法
Jul 01 #Javascript
You might like
phpMyAdmin 链接表的附加功能尚未激活问题的解决方法(已测)
2012/03/27 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
浅析php静态方法与非静态方法的用法区别
2016/05/17 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
addRule在firefox下的兼容写法
2006/11/30 Javascript
HTML-CSS群中单选引发的“事件”
2007/03/05 Javascript
javascript 面向对象编程  function是方法(函数)
2009/09/17 Javascript
jQuery 翻牌或百叶窗效果(内容三秒自动切换)
2012/06/14 Javascript
js中函数声明与函数表达式
2015/06/03 Javascript
jQuery多级手风琴菜单实例讲解
2015/10/22 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
B/S(Web)实时通讯解决方案分享
2017/04/06 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
基于打包工具Webpack进行项目开发实例
2018/05/29 Javascript
JS使用对象的defineProperty进行变量监控操作示例
2019/02/02 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
详解JavaScript中的this指向问题
2021/02/05 Javascript
[03:37]2016完美“圣”典 风云人物:Mikasa专访
2016/12/07 DOTA
Python中max函数用于二维列表的实例
2018/04/03 Python
对python opencv 添加文字 cv2.putText 的各参数介绍
2018/12/05 Python
Python编程快速上手——疯狂填词程序实现方法分析
2020/02/29 Python
django下创建多个app并设置urls方法
2020/08/02 Python
CSS3 开发工具收集
2010/04/17 HTML / CSS
捷克厨房用品购物网站:Tescoma
2018/07/13 全球购物
说一下Linux下有关用户和组管理的命令
2016/01/04 面试题
创业计划书中包含的9个方面
2013/12/26 职场文书
财务会计人员求职的自我评价
2014/01/13 职场文书
2014年党员创先争优承诺书
2014/05/29 职场文书
车辆年审委托书范本
2014/09/18 职场文书
暑假安全保证书
2015/02/28 职场文书
2015年度护士个人工作总结
2015/04/09 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
Spring Cloud Netflix 套件中的负载均衡组件 Ribbon
2022/04/13 Java/Android