打印 上一主题 下一主题

[百度网盘]利用requirejs实现前端模块化开发hao123项目实战

[复制链接]
跳转到指定楼层
楼主
admin 发表于 2017-10-27 15:52:17
5176 9
课程目标:
利用requirejs实现前端模块化开发hao123项目实战
适应人群:
前端开发人员
课程介绍:
What is RequireJS?   在说明什么是RequireJS之前,不得不提的就是Javascript模块化历史的背景。其实在早期,javascript作为一门新兴的脚本语言出现,有着庞大的愿景,它并不是作为一门仅仅针对客户端设计的语言。只是说后来web应用的流行,javascript作为浏览器端脚本语言而迅速传开,加上Netscape和微软的竞争将其过早的标准化。所以就导致了JS的诸多缺陷,其中一个就是模块化(但是你可以惊奇地发现其实javascript有将import,export等作为保留字,说明设计的时候其实是有考虑的,新的标准es6也让原生支持模块化了)。然后随着web应用越来越复杂,嵌入的javascript代码越来越多,还有node的兴起,模块化编程就变成了必须。
   所以就有了后来Dojo工具包和Google的Closure库支持的模块系统。还有两个非常通用的标准规范,CommonJS和AMD。这里就不展开说了,我们只需要知道,实现CommonJS规范的API是同步加载模块的,而实现AMD规范的API是则是异步加载模块。
   所以理论上来说,AMD规范的非阻塞加载更加适合浏览器端。而RequireJS就是AMD规范的最好实现。抄一段官方文档对RequireJS的描述:
   RequireJS 是一个JavaScript模块加载器。它非常适合在浏览器中使用, 它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node. 使用RequireJS加载模块化脚本将提高代码的加载速度和质量。
Why RequireJS?   所以,知道了RequireJS是干什么的,也差不多知道为什么我们要使用RequireJS了。不过还是总结一下用RequireJS的好处吧。
  • 异步“加载”。我们知道,通常网站都会把script脚本的放在html的最后,这样就可以避免浏览器执行js带来的页面阻塞。使用RequireJS,会在相关的js加载后执行回调函数,这个过程是异步的,所以它不会阻塞页面。
  • 按需加载。通过RequireJS,你可以在需要加载js逻辑的时候再加载对应 的js模块,这样避免了在初始化网页的时候发生大量的请求和数据传输,或许对于一些人来说,某些模块可能他根本就不需要,那就显得没有必要。
  • 更加方便的模块依赖管理。相信你曾经一定遇到过因为script标签顺序问题而导致依赖关系发生错误,这个函数未定义,那个变量undefine之类的。通过RequireJS的机制,你能确保在所有的依赖模块都加载以后再执行相关的文件,所以可以起到依赖管理的作用。
  • 更加高效的版本管理。想一想,如果你还是用的script脚本引入的方式来引入一个jQuery2.x的文件,然后你有100个页面都是这么引用的,那当你想换成jQuery3.x,那你就不得不去改这100个页面。但是如果你的requireJS有在config中做jQuery的path映射,那你只需要改一处地方即可。
  • 当然还有一些诸如cdn加载不到js文件,可以请求本地文件等其它的优点,这里就不一一列举了。
RequireJS 使用需要在页面中引入的文件 <script data-main="js/main" src="xxx/xxxx/require.js"></script>使用RequireJS,你只需要引入一个require.js即可。需要说明的是,一个比较好的实践,就是你的页面上面应该也只需要通过\<script\>标签引入这一个js即可。然后你这个页面的所有业务逻辑只需要在main.js里面写(data-main属性作用后面会有讲)就可以了。其它引用的依赖怎么办?当然是通过require按需引入啊!
Require基本概述其实Requirejs整个源文件包括注释就2000来行,其对外暴露的变量其实就三个,requirejs,require,define
这其中requirejs 只是require的一个别名,目的是如果页面中有require其它实现了,你还是能通过使用requirejs来使用requireJS API的(本文中没有相关冲突,所以还是使用require)。
所以这意味着作为入门,你只需要掌握require,require.config,define这三样就可以了。
本文将以介绍require,require.config,data-main,define的顺序来介绍RequireJS。让比较简单的RequireJS更加简单,争取让大家只看这篇文章就能用好RequireJS。至于RequireJS是如何解决循环依赖,对于没有实现amd的模块如何通过shim来导出,如何在node中使用等问题。本文并没有提及,详细有需要可以去官方查阅。
游客,如果您要查看本帖隐藏内容请回复

吾爱编程网 - 免责声明
1、吾爱编程网为非营利性网站,全站所有资料仅供网友个人学习使用,禁止商用
2、本站所有文档、视频、书籍等资料均由网友分享,本站只负责收集不承担任何技术及版权问题
3、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除下载链接并致以最深的歉意
4、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
5、一经注册为本站会员,一律视为同意网站规定,本站管理员及版主有权禁止违规用户
6、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和吾爱编程网的同意
7、吾爱编程网管理员和版主有权不事先通知发贴者而删除本文




上一篇:FIS3一个强大的前端工程构建工具的初级超级实用功能讲解视频教程
下一篇:利用seajs实现前端模块化开发提示框项目实战
收藏
收藏1
支持
支持
反对
反对
回复

使用道具 举报

沙发
farewell02 发表于 2017-11-20 13:18:11
不错哦。。。。
回复

使用道具 举报

板凳
Werthing 发表于 2017-11-29 18:59:52
jhljjjjjggggguuuuuuuu
回复

使用道具 举报

地板
yuwenfang 发表于 2017-12-7 15:25:22
11111111111
回复

使用道具 举报

5#
qixichen 发表于 2018-1-15 18:41:58
哈哈国防部你们换个环境
回复

使用道具 举报

6#
nicky_hb 发表于 2018-5-30 00:29:17
333333333333
回复

使用道具 举报

7#
jacks 发表于 2018-7-19 21:13:07
啥也不说了,楼主就是给力!支持吾爱编程网!
回复

使用道具 举报

8#
snipe 发表于 2018-8-7 22:04:26
不管你信不信,反正我是信了。支持吾爱编程网!
回复

使用道具 举报

9#
majq 发表于 2020-2-14 13:42:22
6666666666666
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

返回顶部 返回列表

平台简介

吾爱编程网:http://www.52pg.net/是IT技能学习交流平台,我们提供了丰富的移动端开发、php开发、web前端开发、android开发、Java开发、Python开发、大数据开发、区块链开发、人工智能开发以及html5等大量的实战视频教程资源。(如果我们有侵犯了您权益的资源请联系我们删除)

点击这里给我发消息|Archiver|手机版|小黑屋|站点地图|吾爱编程  |网站地图

Powered by Discuz! X3.2??? 2017-2020 Comsenz Inc.??吾爱编程网