require.js 的使用

一、为什么要用require.js

  在同一个页面要加载多个js文件时,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长;

其次,由于js文件之间存在依赖关系,因此必须严格保证加载顺序(比如上例的1.js要在2.js的前面),依赖性最大的模块一定要放到最后加载,

当依赖关系很复杂的时候,代码的编写和维护都会变得困难。

例如:

      <script src="1.js"></script>
       <script src="2.js"></script>
       <script src="3.js"></script>
       <script src="4.js"></script>
       <script src="5.js"></script>
       <script src="6.js"></script>

require.js的诞生,就是为了解决这两个问题:     

      (1)实现js文件的异步加载,避免网页失去响应;

      (2)管理模块之间的依赖性,便于代码的编写和维护。

二、require.js的用法

  1、加载这个文件,也可能造成网页失去响应。解决办法有两个,一个是把它放在网页底部加载,另一个是写成下面这样:

    <script src="js/require.js" defer async="true" ></script>

    IE不支持这个属性,只支持defer,所以把defer也写上。

  2、加载自己的js代码

    假定我们自己的代码文件是main.js,也放在js目录下面。那么,只需要写成下面这样就行了:

<script src="js/require.js" data-main="js/main"></script>

data-main属性的作用是,指定网页程序的主模块。在上例中,就是js目录下面的main.js,

    这个文件会第一个被require.js加载。 由于require.js默认的文件后缀名是js,所以可以把main.js简写成main。

三、主模块的写法

  1、我把main.js称为"主模块"  如果主模块依赖其他模块  这时就要使用AMD规范定义的的require()函数。

      require([‘moduleA‘, ‘moduleB‘, ‘moduleC‘], function (moduleA, moduleB, moduleC){

          // some code here

        });   

    require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,上例就是[‘moduleA‘, ‘moduleB‘, ‘moduleC‘],

    即主模块依赖这三个模块;第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。

    加载的模块会以参数形式传入该函数,从而在回调函数内部就可以使用这些模块。

      require()异步加载moduleA,moduleB和moduleC,浏览器不会失去响应;它指定的回调函数,

    只有前面的模块都加载成功后,才会运行,解决了依赖性的问题。

   例: 假定主模块依赖jquery、underscore和backbone这三个模块,main.js就可以这样写

      require([‘jquery‘, ‘underscore‘, ‘backbone‘], function ($, _, Backbone){

            // some code here

        });

require.js会先加载jQuery、underscore和backbone,然后再运行回调函数。主模块的代码就写在回调函数中。

时间: 2024-12-12 17:22:39

require.js 的使用的相关文章

require.js的简单使用

<script src="js/require.js"></script> <script src="js/require.js" data-main="js/main"></script> require(['jquery', 'underscore', 'backbone'], function ($, _, Backbone){ // some code here }); 使用require.

require.js JQ

require.js和sea.js的作用都是一样的. 为了解决两大问题,第一实现js文件的异步加载,避免网页失去响应,第二管理模块之间的依赖性. 基本的模板 define(function(require,exports,module){ exports.getStyle = function (obj,name){ //你初始的模块 } }) define(function(require,exports,module){ var get = require('get');//引入初始模块(基

Javascript模块化编程(三):require.js的用法

作者: 阮一峰 日期: 2012年11月 7日 这个系列的第一部分和第二部分,介绍了Javascript模块原型和理论概念,今天介绍如何将它们用于实战. 我采用的是一个非常流行的库require.js. 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"></s

require.js的AMD规范详解

require.js使用简介 在web刚开始发展的蛮荒时代,一个页面中只需要加载一个或少量的js文件,不存在模块,也不存在冲突之类的问题,但随着web项目的发展,它越来越大,js文件动辄几十个,怎么加载就成为了一个问题,要为浏览器的性能考虑,还有各个js文件(模块)的依赖关系.require.js的出现就是为了解决这样的问题. 1.实现js文件的异步加载,避免网页失去响应. 2.管理模块之间的依赖性,便于代码的编写和维护. require.js加载 使用require.js的第一步,是先去官方网

Require.js、Angular.js整合

Require.js 详见: 初识Require.js 解密Require.js Angular.js 详见: 初识Angular.js之爱恨情仇 整合Require.js.Angular.js 配置 在Requirejs中配置angular.js. require-main.js // 配置 requirejs.config({ ... paths: { 'jquery': 'libs/jquery-2.1.3/jquery.min', 'angular': 'libs/angular-1.3

【转】require.js学习笔记(二)

require.js遵循AMD规范,通过define定义模块,require异步加载模块,一个js文件即一个模块. 一.模块加载require1.加载符合AMD规范模块 HTML: <script src="js/require.js" data-main="js/main"></script> MAIN.JS require.config({ baseUrl: "js/lib", paths: { "jquer

require.js的用法

关于拖延症的话题我在Hacker News上不断的看到有人提出来(你也读了,不是吗?),感觉有必要将我是如何跟拖延症做斗争的方法分享给大家.然而,我这里说的主要是针对程序员/美工,但其实任何人都可以使用.首先最重要的-. 它不是那些老套陈旧的动机心理学扯谈. 我并不是说那些传统的应对拖延症的方法理论不对,只是对我无效.当正经历极度消沉的时候,我通常听到的理论的最后一句话是"You just DO IT!".我有很多的事情要去做.但我不会去阅读你那400页的治疗拖延症手册,也不会执行你那

require.js 源码解读——配置默认上下文

首先,我们先来简单说一下,require.js的原理: 1.载入模块? 2.通过模块名解析出模块信息,以及计算出URL? 3.通过创建SCRIPT的形式把模块加载到页面中.? 4.判断被加载的脚本,如果发现它有依赖就去加载依赖模块.如果不依赖其它模块,就直接执行factory方法 ?5.等所有脚本都被加载完毕就执行加载完成之后的回调函数. 从今天起,我们跟着我们简单的例子,通过跟踪代码,来了解require.js的源码. 1 <!DOCTYPE html> 2 <html lang=&q

require js 将config和入口函数分开写

原文地址 https://github.com/jrburke/requirejs/issues/354 Area there any plans to standardize/recommend a particular approach? If there is, I would suggest the following: // homepage.html <script data-id="requirejs" data-logic="home" dat