require.js 简洁入门

原文地址:http://blog.sae.sina.com.cn/archives/4382

前言

提到require.js大多数人会说提到模块化开发,AMD等等,其实require.js并没有这么多复杂的概念,这里我就希望排除这些概念,从实用的角度来简单说一下require.js是干什么的,我们要怎么用它。

1.为什么要用require.js

大多数前端开发者都用过jquery,那么用jquery之前我们首先要把jquery加载进页面,然后在之后的js之中才可以使用$,这里面我们知道了两个道理,一个是我们不能把所有js代码都放到一个文件里,有些东西可以单独提出来成为一个模块,比如jquery。另外一个道理,一部分js是依赖另一部分js的,比如$依赖jquery文件的载入。其实require.js主要做的事情就是这两点。

当你的js项目足够大,足够复杂,依赖的库足够多,你完全需要这样一种工具去做这些js的管理,否则你的项目扩展性很差,结构很糟糕,要找到想修改的地方会很困难。

其实其他很多编程语言都已经在代码里实现了类似的功能,比如这段python。

1

2

3

import web

db = web.database(dbn=‘sqlite‘, db="todos.db")

很好理解,我们导入了web对象,然后就可以在接下来的代码里使用web.database

2.怎么用require.js?

首先页面要载入require.js,这个没办法用它自己依赖

1

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

既然使用require这种模式的目的是把文件分割成可理解的小块,那么我们的js文件也要分割成一个一个部分,称之为模块,官方api实例中的目录结构是这样的:

  • www/

    • index.html
    • js/
      • app/

        • sub.js
      • lib/
        • jquery.js
        • canvas.js
      • app.js

这里是一个app应用,但是普通页面开发也可以借鉴的是这个概念,就是把js根据功能和目的分开放,库文件放到一起,子模块放到一起,入口js再来选择性载入。
这里注意一下,模块化开发的目的是方便开发者理解和提高效率,如果读者认为没有必要完全则不需要硬去这么做,为了使用什么概念或者方法反而增加了开发成本的事情不要做。

定义模块

jquery这类的库文件先不提,我们说自己怎么定义一个模块,就是sub.js文件里

1

2

3

4

5

//定义对象

define({

color: "black",

size: "unisize"

});

1

2

3

4

5

6

7

8

9

//定义方法

define(function () {

//Do setup work here

return {

color: "black",

size: "unisize"

}

});

如果我们定义的东西里面有依赖,比如用到jquery,我们可以这样

1

2

3

4

5

6

7

8

9

10

11

define(["../lib/jquery"], function($) {

return {

color: "blue",

size: "large",

addToCart: function() {

$(‘.cart-color‘).append(color)

}

}

}

);

思考一下,这里的概念是这样的,第一个参数,数组里的东西是我接下来要依赖的模块,后面的回调函数的参数,依次就是前面数组里的对象的传递。

调用模块

还记得上面那个目录结构吗,我们依然摘取官网的实例, app.js是项目的入口,内容如下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

require.config({

//By default load any module IDs from js/lib

baseUrl: ‘js/lib‘,

//except, if the module ID starts with "app",

//load it from the js/app directory. paths

//config is relative to the baseUrl, and

//never includes a ".js" extension since

//the paths config could be for a directory.

paths: {

app: ‘../app‘

}

});

// Start the main app logic.

require([‘jquery‘, ‘canvas‘, ‘app/sub‘],

function   ($,        canvas,   sub) {

//jQuery, canvas and the app/sub module are all

//loaded and can be used here now.

});

require.config 配置文件,这里定义了baseUrl等

接下来我们require调用,注意这里是调用,上面是定义define,不过看到代码发现和之前类似,同样是第一个参数是依赖对象的数组,回调里会执行,参数是之前依赖的对象。

3.举个栗子

实践是检验真理的唯一标准,光看别人实践也没用,自己动手做一遍胜读十年书。我自己写了一个简单的例子,读者如果感兴趣也可以自己写一个

我有一个中间模块,我把他叫做sth,这个模块放在 sth.js 里面,如下

1

2

3

4

5

6

7

8

define(function(require){

var p1 = require(‘part/part1‘);

var p2 = require(‘part/part2‘);

return {

f1: p1.doSome,

f2: p2.doOther

}

})

这里面require了另外两个子模块,part1和part2,并把他们的方法拿出来放到中间块里面并且返回
我们来看下part1,part2长啥样,首先他们都是part1.js 和part2.js文件,require.js里认为你载入的都是js脚本文件,所以统一省略.js

1

2

3

4

5

6

7

8

//part1.js

define(function(){

return {

doSome: function(){

console.log(‘doSome‘)

}

}

})

1

2

3

4

5

6

7

8

//part2.js

define(function(){

return {

doOther: function(){

console.log(‘doOther‘)

}

}

})

然后我们在主文件里,比如index.html,main.js…调用 sth

1

2

3

4

5

6

7

require([‘sth‘,‘check‘],function(sth,check){

if(check.ok){

sth.f1()

}else{

sth.f2()

}

})

我们假设这里还有另外一个check对象,如果check为真则执行sth.f1
,否则执行sth.f2 想一下,f1,f2其实是在两个文件里面。

这里只是我虚构一个假的例子,实际应用中要根据自己的实际需求去设计构思自己的项目,再次提醒,不要为了用而用。

最后

好了骚年们,对require.js感兴趣了吗,那就去这里疯狂的看吧
http://requirejs.org/

时间: 2024-12-21 17:47:20

require.js 简洁入门的相关文章

require.js简单入门

推荐文章:http://www.ruanyifeng.com/blog/2012/11/require_js.html 1.以下例子主要实现功能, 1)引用jq库获取dom中元素文本, 2)实现并引用去空格工具类trim, 3)最后获取文本并去掉空格后输出, 4)打包js(将所有js文件打包成main.min.js) 1.下载require文件 require.js require主文件 r.js require优化器文件 2.文件结构 index.html --js文件夹 jquery.js

require.js入门指南(一)

最近,处于网站性能和维护的需求,开始学习require.js,把js代码模块化. 学习的过程中也遇到了很多让人烦恼的问题,网络上的解决办法五花八门,也是颇费周折,好在最终完成了. 先去下载require.js.并把它包含至项目中.目录结构如下: js文件夹中目前只有两个js文件.  require.js 和 main.js.先不用管main.js.我们先说require.js,学习要一步一步来. 我们在index.html中引入require.js <!DOCTYPE html> <ht

require.js 入门学习 (share)

以下内容转自阮一峰老师的网络日志:http://www.ruanyifeng.com/blog/2012/11/require_js.html 更多学习资源: require.js官网:http://requirejs.org/docs/download.html 一篇不错的文章:http://www.csdn.net/article/2012-09-27/2810404 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.

require.js 入门学习

一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"></script> <script src="2.js"></script> <script src="3.js"></s

require.js入门指南(三)

下面我们来说说main.js. 前面没有用到,因为例子比较简单.当我们的js文件夹中包含多个文件时,每次require都要写 (路径名/文件名) 这样的require()参数,很麻烦.而且,直接把js代码写在页面中,也是不好的. 我们就可以用main.js设置参数,简化操作,并把页面需要的js代码写在其中. 现在我们在js文件夹下新建一个文件夹,命名为lib,并把jquery.js移动至这个目录下.这个文件夹就用来存放所有的库文件,也方便维护和管理. 目录结构变成了下面这样子: 如果我们不使用m

require.js入门

1.需下载require.js; 2.requirejs有三个主要方法require.config;require;define,require.config方法主要是对文件进行配置,包括其路径,依赖,输出名称等等,下图所示: : require方法表示其依赖文件和回调函数,写法如下: : define文件是定义模块组件,可以将一个单独模块定义在此处,例如上图的ruquirejs就是一个单独定义的模块,如下图: 掌握了这三个方法,可以对require.js上手了

require.js 入门学习-备

一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"></script> <script src="2.js"></script> <script src="3.js"></s

require.js 入门笔记

网站越来越庞大,JS也是越写越多. 当所有的JS 都集中在 HTML的 head 部分时,网页加载变得很慢,很多的 JS代码也并不是全都适用在当前的页面,造成了代码的冗余度非常高. 而且长长的JS代码,没有很好的将他们 模块化,对以后的维护造成极大的困难. 为此特地去了解下 require.js 的用途以及使用方法,为以后 代码重构 和 模块化 提供帮助.让后来者能更好的去管理代码. 1 为什么我要用require.js? 最近在制作个网站.引入了 <script src="static/

require js入门教程

require.js的诞生,就是为了解决这两个问题: (1)实现js文件的异步加载,避免网页失去响应: (2)管理模块之间的依赖性,便于代码的编写和维护. 参考网址: http://www.csdn.net/article/2012-09-27/2810404 http://www.qdfuns.com/notes/32759/a44f7e932dfd397090bc63f9daeb07e7.html 原文地址:https://www.cnblogs.com/wangzhaofang/p/826