使用require.js编写模块化JS】的更多相关文章

layout: post title: 使用requirejs编写模块化代码 category: javascript date: 2016-10-22 00:00:00 tags: javascript requirejs 写在前面 最早接触javascript的时候,javascript代码直接扔在script标签里面就完事了. 反正代码不多,交互简单,逻辑不难,和HTML混在一起也未尝不可. 后来交互越来越复杂,代码越多越多了,我们就开始把JS代码独立到了单独的JS文件中. 公共的库引用在…
一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载这一个文件就够了.后来,代码越来越多,一个文件不够了,必须分成多个文件,依次加载.下面的网页代码,相信很多人都见过. <script src="1.js"></script> <script src="2.js"></script> <script src="3.js"></s…
一.AMD规范探索 1.AMD规范(即异步模块加载机制) 我们在接触js的时候,一般都是通过各种function来定义一些方法,让它们帮我们做一些事情,一个js可以包含很多个js,而这些function都是单独存在. 在开发的时候我们会将几个function组合成一个功能,我们称这个功能的几个function为一个模块. 1.1.模块化JS 现在AMD规范定义了这种模块对象,我们称之为直接对象,用于封装这个模块种所有变量和方法. 举个例子: <span style="font-size:1…
在JavaScript模块化和闭包和JavaScript-Module-Pattern-In-Depth这两篇文章中,提到了模块化的基本思想,但是在实际项目中模块化和项目人员的分工,组建化开发,打包发布,性能优化,工程化管理都有密切的关系,这么重要的事情,在JavaScript大行其道的今天,不可能没有成熟的解决方案,所以从我的实践经验出发,从模块化讲到工程化,分享一下自己的经验. 这篇文章主要是讲require.js和r.js在项目中的使用,不会涉及到工程化问题,对此熟悉的看官可以略过此文.对…
问题由来,为什么要前端模块化管理: 假设我们有个组件名为Acomponent.js, 是架构封装的,里面依赖另一个公司公用库common.js: 那我们引入Acomponent.js的时候,怎么知道要引入common.js? 看文档? demo写的往往忘掉写这些,如果类似common.js太多,那只能引入后人工排错; 事实上作为一个使用方,我并不想关心这些: java 的maven和.net的Nuget 的引入,就是为了解决相互依赖这种问题: 使用方引入一个包,并不需要挨个引入它需要的包,完全自…
浏览器端的模块,不能采用"同步加载"(synchronous),只能采用"异步加载"(asynchronous).这就是AMD规范诞生的背景. AMD是"Asynchronous Module Definition"的缩写,意思就是"异步模块定义". 它采用异步方式加载模块,模块的加载不影响它后面语句的运行. 所有依赖这个模块的语句,都定义在一个回调函数中,等到加载完成之后,这个回调函数才会运行. 目前,主要有两个Javasc…
一.Require.js及AMD Require.js:是一个非常小巧的JavaScript模块载入框架,是AMD规范最好的实现者之一. AMD(Asynchronous Module Definition):异步模块定义规范(AMD)制定了定义模块的规则,这样模块和模块的依赖可以被异步加载.这和浏览器的异步加载模块的环境刚好适应(浏览器同步加载模块会导致性能.可用性.调试和跨域访问等问题). // AMD规范 // 第一个参数,id,是个字符串.它指的是定义中模块的名字,这个参数是可选的.如果…
参考http://ourjs.com/detail/52ad26ff127c76320300001f Offcial Site http://requirejs.org/ 下载http://requirejs.org/docs/download.html  需要require.js才能正确执行require 和 define 为什么需要模块化JS  下面是ourJS的说法 这样的写法有很大的缺点.首先,加载的时候,浏览器会停止网页渲染,加载文件越多,网页失去响应的时间就会越长:其次,由于js文件…
由于改文章有点大,部分代码格式有点问题,编辑之后博客园莫名其妙推出,有问题可以留言沟通.   什么是Node? 它是一个在浏览器之外可以解析和执行javascript代码的运行环 境,或者说是一个运行时平台,理论意义上就是javascript语言 在服务器端的运行环境. 由于Google V8引擎执行JavaScript的速度非常快,node作者把Chrome的v8引擎单独的移植了出来,Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行的更好. 基于这个引擎之 上…
记得前两天自己写一个动画首页,动画很复杂,我用的fullpage虽然相对比较简单,但是每个页面的animation各有差异,需要相对控制,估计有上千行的js代码,写的心情乱糟糟的. 如何让代码量巨大,而且可以方便的管理,不会出现命名的冲突,代码结构乱七八糟问题,让代码设计结构清晰明了,这是一个巨大的需求 其实这就是一个需求分析和解决方案实施的过程. function m1(){ //... } function m2(){ //... } 一般人没有什么面向对象和模块化的概念会这么去写.确实js…