使用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 相关文章推荐
浅析jquery的作用与优势
Dec 02 Javascript
javascript创建和存储cookie示例
Jan 07 Javascript
jQuery学习笔记之 Ajax操作篇(三) - 过程处理
Jun 23 Javascript
jquery+CSS实现的多级竖向展开树形TRee菜单效果
Aug 24 Javascript
JavaScript中instanceof运算符的使用示例
Jun 08 Javascript
AngularJS中比较两个数组是否相同
Aug 24 Javascript
BootStrap table表格插件自适应固定表头(超好用)
Aug 24 Javascript
Ajax 加载数据 练习代码
Jan 05 Javascript
Angular 1.x个人使用的经验小结
Jul 19 Javascript
JS简单实现滑动加载数据的方法示例
Oct 18 Javascript
关于Vue的路由权限管理的示例代码
Mar 06 Javascript
详解如何使用nvm管理Node.js多版本
May 06 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
php封装的验证码类分享
2017/02/26 PHP
一个cssQuery对象 javascript脚本实现代码
2009/07/21 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
原生JS:Date对象全面解析
2016/09/06 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
JS实现数组去重及数组内对象去重功能示例
2019/02/02 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
three.js显示中文字体与tween应用详析
2021/01/04 Javascript
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
使用Python标准库中的wave模块绘制乐谱的简单教程
2015/03/30 Python
Python读写unicode文件的方法
2015/07/10 Python
python字典一键多值实例代码分享
2019/06/14 Python
python plotly绘制直方图实例详解
2019/07/22 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python queue队列原理与应用案例分析
2019/09/27 Python
Python for循环及基础用法详解
2019/11/08 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
Python中使用aiohttp模拟服务器出现错误问题及解决方法
2020/10/31 Python
海淘母婴商城:国际妈咪
2016/07/23 全球购物
网上卖盒饭创业计划书
2014/01/26 职场文书
运动会入场词50字
2014/02/20 职场文书
学生自我评语大全
2014/04/18 职场文书
英语专业自荐书
2014/06/13 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
研究生个人学年总结
2015/02/14 职场文书
食品安全责任书范本
2015/05/09 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
大学毕业典礼致辞
2015/07/29 职场文书
同学聚会开幕词
2019/04/02 职场文书
SQL之各种join小结详细讲解
2021/08/04 MySQL
java版 简单三子棋游戏
2022/05/04 Java/Android