第一次接触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 相关文章推荐
jquery URL参数判断,确定菜单样式
May 31 Javascript
基于jQuery制作迷你背词汇工具
Jul 27 Javascript
javascript打印大全(打印页面设置/打印预览代码)
Mar 29 Javascript
jQuery Easyui学习之datagrid 动态添加、移除editor
Jan 27 Javascript
不用一句js代码初始化组件
Jan 27 Javascript
JS+CSS实现闪烁字体效果代码
Apr 05 Javascript
微信小程序  action-sheet详解及实例代码
Nov 09 Javascript
详解Angular的双向数据绑定(MV-VM)
Dec 26 Javascript
bootstrap警告框使用方法解析
Jan 13 Javascript
基于node.js的fs核心模块读写文件操作(实例讲解)
Sep 10 Javascript
JS字符串补全方法padStart()和padEnd()
May 27 Javascript
交互式可视化js库gojs使用介绍及技巧
Feb 18 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判断两个浮点数是否相等的方法
2015/03/14 PHP
joomla组件开发入门教程
2016/05/04 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
php实现文件上传基本验证
2020/03/04 PHP
JavaScript中的apply()方法和call()方法使用介绍
2012/07/25 Javascript
『JavaScript』限制Input只能输入数字实现思路及代码
2013/04/22 Javascript
jquery实现点击页面计算点击次数
2015/01/23 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
jquery简单倒计时实现方法
2015/12/18 Javascript
浅析AngularJs HTTP响应拦截器
2015/12/28 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
js返回顶部实例分享
2016/12/21 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
详解适配器在JavaScript中的体现
2018/09/28 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Djang中静态文件配置方法
2015/07/30 Python
python实现画圆功能
2018/01/25 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
2019/11/22 Python
django-利用session机制实现唯一登录的例子
2020/03/16 Python
利用python生成照片墙的示例代码
2020/04/09 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
Alba Moda瑞士网上商店:独家意大利时尚女装销售
2016/11/28 全球购物
香港时装购物网站:ZALORA香港
2017/04/23 全球购物
兰蔻法国官方网站:Lancôme法国
2020/02/22 全球购物
计算机专业个人求职自荐信
2013/09/21 职场文书
《桂花雨》教学反思
2016/02/19 职场文书
《将心比心》教学反思
2016/02/23 职场文书
Redis持久化与主从复制的实践
2021/04/27 Redis
手把手教你实现PyTorch的MNIST数据集
2021/06/28 Python
Python+Appium自动化测试的实战
2021/06/30 Python