[JavaScript] requireJS基本使用
requireJS 是一个 AMD 规范的模块加载器
主要解决的js开发的4个问题
1. 异步加载,防止阻塞页面渲染
2. 解决js文件之间的依赖关系和保证js的加载顺序
3. 按需加载 来实现一个 require 的实例
目录结构如下:

- 首先我们现在 require.html 中将 requireJS 引入 <script type=”text/javascript” defer async=”true” src=”./require.js” data-main=”js/init.js”></script> > - 为了防止加载的时候阻塞,需要异步进行加载
( async=”true” defer) 其中 defer 是为了兼容 ie 不识别 async 的兼容写法
当然还有简单粗暴的方法,直接将文件加载放在最后执行
> - 同时写入 data-main=’js/init.js’,这会在 requireJS 加载完成的时候将统一目录下的 indexJS 加载进入
或者可以使用两条 script 引入
类似这样:
```
<script type=”text/javascript” defer async=”true” src=”./require.js”></script>
<script type=”text/javascript” defer async=”true” src=”js/init.js”></script>
``` - 接下来,打开 init.js 进入文件路径的配置,其中 paths 是在 lib 下面的文件地址,baseUrl 是修改默认的根目录,shim 是指定插件引入的依赖文件否则会报错(bootstrap’JavaScript requires jquery)
同时,由于 require 默认后面的后缀是.js 所以我们不能再加后缀,否则会报错 baseUrl用于定位根目录,其他路径都是相对根目录,
paths用来执行文件,或者也可以用来定位新路径 将jquery和underscore引入,写个窗口拖动变色
```
//require.config主要是用来对要加载文件的目录进行自定义
require.config({
baseUrl: 'js',
paths: {
"jquery": "../lib/jquery",
"undersocre": "../lib/underscore",
}
}) require(['jquery', 'underscore'], function ($, _) {
$(window).resize(function () { var color = ["rgba(", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ")"]; $(".background").css({
position: "fixed",
top: "0px",
bottom: "0px",
left: "0px",
right: "0px",
background: color.join("")
});
})
});
```
...有点闪眼 - 注册一个模块
新建js/color.js
```
define(function () {
var color = ["rgba(", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ",", Math.floor(Math.random() * 255), ")"]; return {
color: color,
}
});
```
结构

- paths定义别名
新建js/common/date/date.js , js/common/date/format.js
```
require.config({
baseUrl: 'js',
paths: {
"jquery": "../lib/jquery",
"underscore": "../lib/underscore",
"date": "./common/date", //对层级深的起个别名
}
}) require(['jquery', 'underscore', 'color', 'date/date', 'date/format'], function ($, _, c, d, f) {
...... console.log(d.date);
console.log(f.format(d.date))
});
```

[avascript模块化编程(三):require.js的用法]
http://www.ruanyifeng.com/blog/2012/11/require_js.html
[JavaScript] requireJS基本使用的更多相关文章
- JavaScript资源大全中文版(Awesome最新版)
Awesome系列的JavaScript资源整理.awesome-javascript是sorrycc发起维护的 JS 资源列表,内容包括:包管理器.加载器.测试框架.运行器.QA.MVC框架和库.模 ...
- Requirejs常用配置和应用
requirejs.require方法冲突 如果加载了多个requirejs脚本,每个requirejs会判断是否浏览器已经实现了require和define方法.如果浏览器已经自带require和d ...
- emmet,jade,haml, slim,less,sass,coffeescript等的实战优缺点
摘要: 文章背景,来自于群内周五晚上的一次头脑风暴式的思维碰撞交流活动. 随着前端技术的蓬勃发展, 各种新技术随着生产力的需要不断的涌入我们的视野, 那今天探讨的话题是这些新时代的前端兵器谱: 一. ...
- 我们是怎么管理QQ群的
文章背景:腾讯平台上的qq群数以千万百万计,但99%的在吹水扯蛋,从早上的问好开始,到晚上的晚安,无一不浪费青春之时间,看之痛心,无力改变,只好自己建了一个,希望能以此来改变群内交流的氛围或环境. 以 ...
- [Bower] Bower
//search bower search jquery bower search jquery | grep formstyler //info bower info jquery //instal ...
- niagara Workbench module import IntelliJ
1. 在整个网络布线中使用一种布线方式,但是两端都有RJ-45 plug 的网络连线,无论是采用方式A还是方式B 端接的方式都是试用的.网络都是通用的,双绞线的顺序与RJ-45偶的引脚序号一一对应, ...
- 使用require.js编写模块化JS
layout: post title: 使用requirejs编写模块化代码 category: javascript date: 2016-10-22 00:00:00 tags: javascri ...
- Javascript模块化开发,使用模块化脚本加载工具RequireJS,提高你代码的速度和质量。
随着前端JavaScript代码越来越重,如何组织JavaScript代码变得非常重要,好的组织方式,可以让别人和自己很好的理解代码,也便于维护和测试.模块化是一种非常好的代码组织方式,本文试着对Ja ...
- 【JavaScript】JavaScript模块化编程 - CommonJS, AMD 和 RequireJS之间的关系
通行的Javascript模块规范共有两种:CommonJS和AMD 先说说CommonJS CommonJS - 大家是不是觉得JavaScript仅仅是一个客户端的编译语言,其实JavaScr ...
随机推荐
- 这么用Mac才叫爽!
用了近一年的 Macbook Pro,已经离不开它了.真是生活工作学习必备之良品啊. 如果你将要买苹果电脑或者刚买,那么不妨看看此文.推荐一些个人觉得好用的软件,而Mac本身的使用技巧----触控板. ...
- 死磕 java集合之DelayQueue源码分析
问题 (1)DelayQueue是阻塞队列吗? (2)DelayQueue的实现方式? (3)DelayQueue主要用于什么场景? 简介 DelayQueue是java并发包下的延时阻塞队列,常用于 ...
- 华为云(ECS)-linux服务器中-Ubuntu图形界面安装-解决root登录受限-VNCviwer/Teamviwer远程访问教程
安装ubuntu-desktop .更新软件库 apt-get update .升级软件 apt-get upgrade .安装桌面 apt-get install ubuntu-desktop 解决 ...
- ie兼容问题记录
工作中遇到的ie网站兼容性问题 头疼.......... 以下为从网上搜索学习的整理兼容性方法 用于自己记录 #兼容问题 ##css hack: https://blog.csdn.net/fres ...
- Zabbix-server 3.4 安装详细和修改web界面中文出现的乱码(一)
1. 老套路先来个Zabbix简介: Zabbix是一个企业级的.开源的.分布式的监控套件: Zabbix可以监控网络和服务的监控状况. Zabbix利用灵活的告警机制,允许用户对事件发送Email. ...
- python接口自动化(二十三)--unittest断言——上(详解)
简介 在测试用例中,执行完测试用例后,最后一步是判断测试结果是 pass 还是 fail,自动化测试脚本里面一般把这种生成测试结果的方法称为断言(assert).用 unittest 组件测试用例的时 ...
- 带着新人看java虚拟机03
分享一篇博客:https://blog.csdn.net/yfqnihao/article/details/8289363,本篇有部分参考这篇博客!!! 还是继续说一下java虚拟机,为什么呢?因为我 ...
- 前端笔记之ES678&Webpack&Babel(中)对象|字符串|数组的扩展&函数新特性&类
一.对象的扩展 1.1对象属性名表达式 ES6可以在JSON中使用[]包裹一个key的名字.此时这个key将用表达式作为属性名(被当做变量求值),这个key值必须是字符串. var a = 'name ...
- HTML5将footer置于页面最底部的方法(CSS+JS)
JavaScript: <script type="text/javascript"> $(function(){ function footerPosition(){ ...
- SuperMap iObject入门开发系列之四管线长度统计
本文是一位好友“托马斯”授权给我来发表的,介绍都是他的研究成果,在此,非常感谢. 上一期文章主要写了管线系统的标注功能,结合代码简单讲解了一些超图.NET开发框架气泡Bubble的使用方法,这期的文章 ...