[原创作品] RequireJs入门进阶教程
最近我发现RSS采集数据是个很好玩的东西,就是可以直接把别人的数据放在自己的网站上。如果网友们在其他地方发现这篇文章,还是来博客园看吧(http://zhutty.cnblogs.com)。这样代码比较整洁。另外,欢迎来群里交流,164858883。
好了,这次随笔主要讲一个web优化功能的框架。RequireJs.
官方的介绍是这样的:RequireJS is a JavaScript file and module loader.对,就一句话就够了。它的功能就是加载模块。
这涉及到Web优化的问题,如果都把js写在页面上,或者多个文件上,直接引入,都会使页面非常卡顿。在低配置计算机或手机浏览起来,简直无法直视。所以,it工程师们就想到了把说有的js合在一个文件里面,单从软件工程的角度来讲,这无法维护。严重违反低耦合这个基本要求。好了,就这样,Require就出现了。
Require不仅可以在浏览器中使用,而且还可以使用其他javascript,比如,nodejs. 顺便说一下,nodejs也遵循commonjs规范,底层为c++实现,所以执行效率比较高。当然,它是运行在服务器端。
好了,现在说一下这个demo的web目录的基本结构。
www
|-App
|-Controller
|-Model
|-main.js
|-Lib
|-Require.js
|-jquery.js
|-index.html
|-config.js
|-main.js
好,先来讲述一下怎么个运行机制。在页面中引入requirejs。
index.html
<script main-data="main" src="Lib/Require.js"></script>
main-data是入口文件,因为require说操作的文件都是以js文件,所以不需要写后缀。这里对应的是根目录的main.js。
www/main.js
/**
* Created by Steven on 2015/07/21.
* This is the page main entrance
*/
requirejs(['./config'],function(){
requirejs(['app/main']); });
一般这个入口都是加载配置,和引入应用的入口。OK,看看配置 config.js
/**
* Created by Steven on 2015/07/21.
* @email zhuttymore@126.com
* This is a config file
*/ requirejs.config({
baseUrl: 'lib',
paths: {
app: '../app'
},
shim:{
backbone : {
deps : ['underscore'],
exports : 'backbone'
},
localstorage:{
deps : ['backbone'],
exports : 'backbone.localStorage'
}
}
});
配置项的baseUrl确定库的文件,也就是优先加载,这里和require()有一定的联系,待会再说。看下应用的主要文件。
/**
* Created by Steven on 2015/07/21
* @email zhuttymore@126.com
* This is the main of the app
*/
define(function (require) { require(['jquery', 'underscore', 'backbone', 'backbone.localStorage'], function ($, _, Backbone, __) { //U can do something here with jquery, backbone }); });
参照以上代码,做一丢丢总结:
1、定义模块:define(foo);
2、引入模块require()和requirejs()两者的区别是:前者从配置的路径中加载,后者根据文件路径加载。
OK, 这就介绍到这,原创作品,转载请注明出处:http://zhutty.cnblogs.com
[原创作品] RequireJs入门进阶教程的更多相关文章
- RequireJS入门与进阶
RequireJS由James Burke创建,他也是AMD规范的创始人. RequireJS会让你以不同于往常的方式去写JavaScript.你将不再使用script标签在HTML中引入JS文件,以 ...
- react 入门与进阶教程
react 入门与进阶教程 前端学习对于我们来说越来越不友好,特别是随着这几年的发展,入门门槛越来越高,连进阶道路都变成了一场马拉松.在学习过程中,我们面临很多选择,vue与react便是一个两难的选 ...
- duilib进阶教程 -- 总结 (17)
整个教程的代码下载:http://download.csdn.net/detail/qq316293804/6502207 (由于duilib进阶教程主要介绍界面,所以这个教程只给出界面相关的代码,完 ...
- SpringBoot进阶教程(六十一)intellij idea project下建多个module搭建架构(下)
在上一篇文章<SpringBoot进阶教程(六十)intellij idea project下建多个module(上)>中,我们已经介绍了在intellij idea中创建project之 ...
- SpringBoot进阶教程(七十四)整合ELK
在上一篇文章<SpringBoot进阶教程(七十三)整合elasticsearch >,已经详细介绍了关于elasticsearch的安装与使用,现在主要来看看关于ELK的定义.安装及使用 ...
- [原创作品] web项目构建(一)
今天开始,将推出web项目构建教程,与<javascript精髓整理篇>一并更新.敬请关注. 这篇作为这一系列开头,主要讲述web项目的构建技术大全.在众多人看来,web前端开发无非就是写 ...
- SpringBoot进阶教程(二十九)整合Redis 发布订阅
SUBSCRIBE, UNSUBSCRIBE 和 PUBLISH 实现了 发布/订阅消息范例,发送者 (publishers) 不用编程就可以向特定的接受者发送消息 (subscribers). Ra ...
- Python爬虫与数据分析之进阶教程:文件操作、lambda表达式、递归、yield生成器
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- duilib进阶教程 -- 在MFC中使用duilib (1)
由于入门教程的反响还不错,因此Alberl就以直播的形式来写<进阶教程>啦,本教程的前提: 1.请先阅读<仿迅雷播放器教程> 2.要有一定的duilib基础,如果还没,请先阅读 ...
随机推荐
- [置顶] Android访问控制系统测试与评估
5.1实验方案 通过以上章节,本文阐述了目前Android平台上的恶意软件以“隐私窃取”和“恶意扣费”类为主,本研究课题访问控制的目标也正是阻止恶意软件“隐私窃取”和“恶意扣费”的行为,因此,本实验方 ...
- IT English Collection(16) of Message
1 前言 本文介绍了关于Objective-C中的消息机制,详情如下. 转载请注明出处:http://blog.csdn.net/developer_zhang 2 详述 2.1 原文 A messa ...
- C# 杨辉三角形算法
代码如下: static void Main(string[] args) { int[][] Array_int = new int[10][]; //向数组中记录杨辉三角形的值 for (int ...
- SpringMvc之@RequestParam详解
@RequestParam是传递参数的. @RequestParam用于将请求参数区数据映射到功能处理方法的参数上. public String queryUserName(@RequestParam ...
- DataGrid( 数据表格) 组件[4]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- 模板模式(Template)
行为型:Template(模板模式) 作为一个曾经爱好写文章,但是不太懂得写文章的人,我必须承认,开头是个比较难的起步. 模板模式常规定义:模板模式定义了一个算法步骤,把实现延迟到子类. 事实上模板模 ...
- 读书笔记_Effective_C++_条款二十二:将成员变量声明为private
1.格式统一 在调用的时候,不会去想有没有(),一律是有get(),或者set()之类的. 2.封装 能直接访问得越少,表明封装性越高, 封装性越高,我们的顾虑就少了, 例如:我们a.data*0.9 ...
- 清北学堂 Pa
PA[题目描述]汉诺塔升级了:现在我们有?个圆盘和?个柱子,每个圆盘大小都不一样,大的圆盘不能放在小的圆盘上面,?个柱子从左到右排成一排.每次你可以将一个柱子上的最上面的圆盘移动到右边或者左边的柱子上 ...
- Kali Linux 常见问题解答
更新Kali apt源 vim /etc/apt/sources.list #开始 deb http://http.kali.org/kali kali-rolling main non-free c ...
- RxJava 与 Retrofit 结合的最佳实践
转自:http://gank.io/post/56e80c2c677659311bed9841?from=timeline&isappinstalled=0&nsukey=g1D1Y6 ...