第一次接触JS require.js模块化工具
作者:bea
随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求。
RequireJS是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一。最新版本的RequireJS压缩后只有14K,堪称非常轻量。它还同时可以和其他的框架协同工作,使用RequireJS必将使您的前端代码质量得以提升。
requirejs能带来什么好处
官方对requirejs的描述:
RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will improve the speed and quality of your code.
大致意思:
在浏览器中可以作为js文件的模块加载器,也可以用在Node和Rhino环境,balabala...。这段话描述了requirejs的基本功能"模块化加载",什么是模块化加载?我们要从之后的篇幅中一一解释
先来看一段常见的场景,通过示例讲解如何运用requirejs
正常编写方式
index.html:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="a.js"></script>
</head>
<body>
<span>body</span>
</body>
</html>
a.js:
function fun1(){
alert("it works");
}
fun1();
可能你更喜欢这样写
(function(){
function fun1(){
alert("it works");
}
fun1();
})()
第二种方法使用了块作用域来申明function防止污染全局变量,本质还是一样的,当运行上面两种例子时不知道你是否注意到,alert执行的时候,html内容是一片空白的,即<span>body</span>并未被显示,当点击确定后,才出现,这就是JS阻塞浏览器渲染导致的结果。
requirejs写法
当然首先要到requirejs的网站去下载js -> requirejs.rog
index.html:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="require.js"></script>
<script type="text/javascript">
require(["a"]);
</script>
</head>
<body>
<span>body</span>
</body>
</html>
a.js:
define(function(){
function fun1(){
alert("it works");
}
fun1();
})
浏览器提示了"it works",说明运行正确,但是有一点不一样,这次浏览器并不是一片空白,body已经出现在页面中,目前为止可以知道requirejs具有如下优点:
1、防止js加载阻塞页面渲染
2、使用程序调用的方式加载js,防出现如下丑陋的场景
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript" src="c.js"></script>
<script type="text/javascript" src="d.js"></script>
<script type="text/javascript" src="e.js"></script>
<script type="text/javascript" src="f.js"></script>
<script type="text/javascript" src="g.js"></script>
<script type="text/javascript" src="h.js"></script>
<script type="text/javascript" src="i.js"></script>
<script type="text/javascript" src="j.js"></script>
以上就是本文的全部内容,希望对大家认识require.js模块化工具有所帮助。
猜你喜欢
您可能感兴趣的文章:
- 基于Bootstrap实现Material Design风格表单插件 附源码下载
- jQuery 如何给Carousel插件添加新的功能
- AngularJS入门教程之AngularJS模型
- AngularJS入门教程之AngularJS指令
- AngularJS入门教程之AngularJS表达式
- jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
- jQuery使用$.each遍历json数组的简单实现方法
- jQuery validate+artdialog+jquery form实现弹出表单思路详解
- JS中artdialog弹出框控件之提交表单思路详解
- jQuery实现鼠标跟随提示层效果代码(可显示文本,Div,Table,Html等)
- ArtEditor富文本编辑器增加表单提交功能
- JS基于MSClass和setInterval实现ajax定时采集信息并滚动显示的方法
- JS区分浏览器页面是刷新还是关闭
- js组件SlotMachine实现图片切换效果制作抽奖系统
- JS中取二维数组中最大值的方法汇总
- JS组件Bootstrap ContextMenu右键菜单使用方法
- 最简单js代码实现select二级联动下拉菜单
- 基于javascript实现精确到毫秒的倒计时限时抢购
- 第二次聊一聊JS require.js模块化工具的基础知识