require.js入门指南(三)

下面我们来说说main.js.

前面没有用到,因为例子比较简单.当我们的js文件夹中包含多个文件时,每次require都要写 (路径名/文件名) 这样的require()参数,很麻烦.而且,直接把js代码写在页面中,也是不好的.

我们就可以用main.js设置参数,简化操作,并把页面需要的js代码写在其中.

现在我们在js文件夹下新建一个文件夹,命名为lib,并把jquery.js移动至这个目录下.这个文件夹就用来存放所有的库文件,也方便维护和管理.

目录结构变成了下面这样子:

如果我们不使用main.js,那么index.html想引用jquery,要像下面这样写:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <script src="js/require.js"></script>
    <title>requireJS</title>
    <script>
        require([‘js/lib/jquery‘],function(jquery){
            alert($().jquery);
        })
    </script>
</head>
<body>

</body>
</html>

运行结果如图:

如果有多个文件需要引入的话,写起来比较长,不方便.

这时候我们就可以在main.js里面设置路径,下面是main.js的代码

require.config({
    baseUrl:‘./js‘,
    paths:{
        jquery:‘./lib/jquery‘,
    }
});

这里需要解释一下:

  1.baseUrl :一般指的是main.js相对与index.html的路径 ,我这里就是 ./js

  2.paths: 键名就是模块的名字,或者叫ID,值就是这个模块相对与baseUrl的路径加上模块文件的名称(不加.js后缀).

下面是引入index.html页面中的方法:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <script src="js/require.js" data-main="js/main"></script>
    <title>requireJS</title>
  <script>        require([‘jquery‘],function(jq){            alert($().jquery);        });    </script>
</head>
<body>

</body>
</html>

说明:

  1.我们并没有像引入其它JS那样用script标签把main.js引入.

  2.requireJS指定的方法,可以查看文档.

  3在data-main后面引入main.js文件.格式同样是 相对与当前html页面的路径 / 入口文件名(不加后缀,这里是main).

这时候requirejs的文件路径就配置好了.但是如果我们在页面中使用的话,会出现以下问题:

我们刚刚在main.js中配置了jquery.js的paths,难道出了什么问题?

其实是因为路径是在main.js配置的,只对main.js中的路径生效.而我们的代码也不应该写在html页面中,而是写在main.js中.

这样我们只需要在页面中引入main.js,main.js中再对需要的模块进行请求,模块都加载完毕后,执行main.js中的callback,也就是第二个参数中的代码.

如此就实现了js文件的统筹管理,按需加载.

代码如下:

main.js中的代码如下:

require.config({
    baseUrl:‘js‘,
    paths:{
        jquery:‘lib/jquery‘,
    }
});
require([‘jquery‘],function(jq){
            alert($().jquery);
        });

运行效果如下:

时间: 2024-12-28 11:21:03

require.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

Ember.js 入门指南——属性传递

1,传递参数到组件上 每个组件都是相对独立的,因此任何组件所需的数据都需要通过组件的属性把数据传递到组件中. 比如上篇<Ember.js 入门指南--组件定义>的第三点"{{component item.pn post=item}}"就是通过属性post把数据传递到组件foo-component或者bar-component上.如果在index.hbs中是如下方式调用组件那么渲染之后的页面是空的. {{component item.pn}} 请读者自己修改index.hbs

Ember.js 入门指南——总目录

Ember.js 是什么?我想对于想学习它的人应该知道它是个什么东西,如果你想了解那就赶紧去 Google 或者百度,本系列教程是通过学习官网教程然后摘抄个人觉得比较重要的部分,加上学习实例整合而成,如有疏漏欢迎提出修改意见,一起成长! Ember官网:http://emberjs.com/ 教程官网:http://guides.emberjs.com/v2.0.0/ 在此简单介绍下 Ember: Ember是一个雄心勃勃的Web应用程序,消除了样板,并提供了一个标准的应用程序架构的JavaSc

Ember.js 入门指南——控制器(controller)

ember new chapter5_controllers cd chapter5_controllers ember server 从本篇开始进入第五章控制器,controller在Ember2.0开始越来越精简了,职责也更加单一--处理逻辑. 下面是准备工作. 从新创建一个Ember项目,仍旧使用的是Ember CLI命令创建. 在浏览器执行项目,看到如下信息说明项目搭建成功. Welcome to Ember 1,控制器简介 控制器与组件非常相似,由此,在未来的新版本中很有可能组件将会完

Ember.js 入门指南——包裹内容

准备工作: ember g route wrapping-content-in-component-route        ember g component wrapping-content-in-component 有些情况下,你需要定义一个包裹其他模板提供的数据的组件.比如下面的例子: <!--  app/templates/components/wrapping-content-in-component.hbs  -->   <h1>{{title}}</h1>

Ember.js 入门指南——异步路由

本文将为你介绍路由的高级特性,这些高级特性可以用于处理项目复杂的异步逻辑. 关于单词promises,直译是承诺,但是个人觉得还是使用原文吧.读起来顺畅点. 1,promises(承诺) Ember的路由处理异步逻辑的方式是使用promises.简而言之,promises就是一个表示最终结果的对象.这个对象可能是fulfill(成功获取最终结果)也可能是reject(获取结果失败).为了获取这个最终值,或者是处理promises失败的情况都可以使用then方法,这个方法接受两个可选的回调方法,一

Ember.js 入门指南——model简介2

本文接上一篇<Ember.js 入门指南--model简介1>. 2,核心概念 声明:下面简介内摘抄至http://www.emberjs.cn/guides/models/#toc_. 1,store store是应用存放记录的中心仓库.你可以认为store是应用的所有数据的缓存.应用的控制器和路由都可以访问这个共享的store:当它们需要显示或者修改一个记录时,首先就需要访问store. DS.Store的实例会被自动创建,并且该实例被应用中所有的对象所共享. store可以看做是一个缓存

Ember.js 入门指南——处理事件

ber.js 入门指南--处理事件 你可以在组件中响应事件,比如用户的双击.鼠标滑过.键盘的按下等等事件.只需要在组件类中增加Ember提供的处理事件,然后Ember会自动判断用户的操作执行相应的事件,只要在组件类中添加的事件不冲突你甚至一次性增加多个事件,事件执行次序根据触发的次序执行. 1,简单事件处理 准备工作,使用Ember CLI创建演示所需文件: ember g component handle-events ember g route component-route 生成的组件模板

Ember.js 入门指南——路由简介

从本文开始,将为大家介绍路由(route),如果你看过前面的<Ember.js 入门指南--{{link-to}} 助手>这篇文章应该初步了解了route.不过在这篇文章中只是简单介绍了路由是定义.路由层次,更深入的route将从本文开始逐一介绍. 当用户使用你的应用时,应用要在不同的状态之间切换.Ember提供了很多工具用于管理那些因应用规模改变而改变的状态. 讲route前先了解URL,在应用中大概会会有如下方式设置URL: 用户第一次加载应用的时: 用户手动改变URL,比如点击按钮之后跳