吾爱编程

标题: 利用requirejs实现前端模块化开发hao123项目实战 [打印本页]

作者: admin    时间: 2017-10-27 15:52
标题: 利用requirejs实现前端模块化开发hao123项目实战
课程目标:
利用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的好处吧。
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中使用等问题。本文并没有提及,详细有需要可以去官方查阅。


作者: farewell02    时间: 2017-11-20 13:18
不错哦。。。。
作者: Werthing    时间: 2017-11-29 18:59
jhljjjjjggggguuuuuuuu
作者: yuwenfang    时间: 2017-12-7 15:25
11111111111
作者: qixichen    时间: 2018-1-15 18:41
哈哈国防部你们换个环境
作者: nicky_hb    时间: 2018-5-30 00:29
333333333333
作者: jacks    时间: 2018-7-19 21:13
啥也不说了,楼主就是给力!支持吾爱编程网!
作者: snipe    时间: 2018-8-7 22:04
不管你信不信,反正我是信了。支持吾爱编程网!
作者: majq    时间: 2020-2-14 13:42
6666666666666




欢迎光临 吾爱编程 (http://www.52pg.net/) Powered by Discuz! X3.2