第一次接触JS require.js模块化工具


Posted in Javascript onApril 17, 2016

随着网站功能逐渐丰富,网页中的js也变得越来越复杂和臃肿,原有通过script标签来导入一个个的js文件这种方式已经不能满足现在互联网开发模式,我们需要团队协作、模块复用、单元测试等等一系列复杂的需求。

第一次接触JS require.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模块化工具有所帮助。

Javascript 相关文章推荐
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
jquery 获取标签名(tagName)示例代码
Jul 11 Javascript
javascript实现五星评价代码(源码下载)
Aug 11 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
Vue 单文件中的数据传递示例
Mar 21 Javascript
jQuery实现的淡入淡出与滑入滑出效果示例
Apr 18 jQuery
vue如何获取自定义元素属性参数值的方法
May 14 Javascript
基于vue实现图片验证码倒计时60s功能
Dec 10 Javascript
原生JS实现留言板
Mar 26 Javascript
vue实现商品列表的添加删除实例讲解
May 14 Javascript
在vue中axios设置timeout超时的操作
Sep 04 Javascript
React服务端渲染原理解析与实践
Mar 04 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 #Javascript
JS组件Bootstrap dropdown组件扩展hover事件
Apr 17 #Javascript
理解javascript对象继承
Apr 17 #Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
Apr 17 #Javascript
js如何准确获取当前页面url网址信息
Sep 13 #Javascript
基于javascript实现图片切换效果
Apr 17 #Javascript
非常棒的jQuery图片轮播效果
Apr 17 #Javascript
You might like
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
PHP MSSQL 分页实例
2016/04/13 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
探索Emberjs制作一个简单的Todo应用
2012/11/07 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
js实现延时加载Flash的方法
2015/11/26 Javascript
JavaScript基础知识之方法汇总结
2016/01/24 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
jQuery+Ajax+PHP弹出层异步登录效果(附源码下载)
2016/05/27 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
jQuery编写设置和获取颜色的插件
2017/01/09 Javascript
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
2017/03/21 jQuery
JS解析url查询参数的简单代码
2017/08/06 Javascript
iView-admin 动态路由问题的解决方法
2018/10/03 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
[04:05]TI9战队采访 - Natus Vincere
2019/08/22 DOTA
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
matplotlib设置legend图例代码示例
2017/12/19 Python
python如何爬取网站数据并进行数据可视化
2019/07/08 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
Python3.9最新版下载与安装图文教程详解(Windows系统为例)
2020/11/28 Python
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
Tomcat的缺省是多少,怎么修改
2014/04/09 面试题
医学生个人求职信范文
2014/02/07 职场文书
如何写自我评价?自我评价写什么好?
2014/03/14 职场文书
班主任评语大全
2014/04/26 职场文书
酒店仓管员岗位职责
2014/04/28 职场文书
经营目标管理责任书
2014/07/25 职场文书
群众路线自查报告及整改措施
2014/11/04 职场文书
小班教师个人总结
2015/02/05 职场文书
支行行长岗位职责
2015/02/15 职场文书
python 字典和列表嵌套用法详解
2021/06/29 Python
JavaCV实现照片马赛克效果
2022/01/22 Java/Android
Win2008系统搭建DHCP服务器
2022/06/25 Servers
MySQL表字段数量限制及行大小限制详情
2022/07/23 MySQL