[原创作品] 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基础,如果还没,请先阅读 ...
随机推荐
- 路由器WAN口和LAN口详解
前一阵子做路由器的联网,由于利用了Openwrt操作系统,做起来虽然方便,但是很多原理细节都被忽略了.所以这里再来老生常谈一下wan口和lan口的区别,以及他们之间的工作原理. 首先百度一下,基本知识 ...
- [ES6] Function Params
1. Default Value of function param: The function displayTopicsPreview() raises an error on the very ...
- linux文件解-压缩
常用: 解压tar.gz包 使用命令:tar -zxvf file.tar.gz -z 指有gzip的属性 -x 解开一个压缩文件的参数 -v解压过程中显示文件 -f放最后接filena ...
- eclipse打包 jar文件,中文乱码解决方案
直接通过eclipse浏览源代码时,发现中文注释为乱码的问题.其实这个eclipse默认编码造成的问题.可以通过以下方法解决: 修改Eclipse中文本文件的默认编码:windows->Pref ...
- 判断Http请求由手机端发起,还是有电脑端发起
某些情形,我们需要判断Http请求是来自手机端还是电脑端,关键是取得User-Agent的信息,进行筛选判断即可. 核心类如下: public static boolean isMobileDevic ...
- Spring 详解第一天
spring 框架简述: http://www.cnblogs.com/ToBeAProgrammer/p/5230065.html http://www.cnblogs.com/ToBeAProgr ...
- 前端 CSS 基础
CSS概述 CSS全称:层叠样式表 (Cascading Style Sheets).CSS使得网站可以:创建文档内容清晰地独立于文档表现层. 样式表定义如何显示 HTML 元素,样式通常保存在外部的 ...
- GridView控件的光棒效应
// 光棒效应 protected void gvBookInfos_RowDataBound(object sender, GridViewRowEventArgs e) { if(e.Row.Ro ...
- CSS 特殊样式设置集合
1. 父窗口宽度不定,要求内部两个子块, 第一个子块宽度固定,第二个子块宽度自适应. 第一个子块宽度固定,定位为绝对定位 position:absolute; 第二个子块设置margin-left即 ...
- python 下的数据结构与算法---2:大O符号与常用算法和数据结构的复杂度速查表
目录: 一:大O记法 二:各函数高阶比较 三:常用算法和数据结构的复杂度速查表 四:常见的logn是怎么来的 一:大O记法 算法复杂度记法有很多种,其中最常用的就是Big O notation(大O记 ...