今天详细的了解了javascript模块化编程,javascript模块规范有两种:"CommonJS"和"AMD"。
CommonJS中有一个全局性方法require(),主要用于加载模块,例如:var show= require(‘jia‘);jia.add(3,3);//6 。这里我们只需要知道require()用于加载模块就好了。由于模块都是放在服务器端,不能让浏览器处于“假死”状态,所以不能采用“同步加载(synchronous)”,只能采用“异步加载(asynchronous)”。
AMD:就是异步模块加载;采用异步方式加载模块,模块加载时不会影响后面语句的执行。AMD也要采用require()语句,但是需要两个参数,第一个参数就是数组,数组里面的元素就是要加载的模块;第二个参数就是加载成功之后的回调函数。列如:require([‘jia‘],function(jia){jia.add()3,3});
现在ADM有一种比较流行的框架:require.js;他解决了一些问题:1、实现JS文件异步加载,避免网页失去响应;2、管理模块之间的依赖,便于代码的编写和维护。运用也很方便,就像调用js文件一样直接调用,若有自己的JS文件show,可以直接添加一个属性“data-main”,其作用是指定网页程序的主模块,如下:<script src="js/require.js" data-main="js/show"></script>。我们的主模块编写也就要require()函数,如下:require([‘A‘,‘B‘],function(A,B){自编代码});
require.js加载模块采用了AMD规范,所以模块就要采用“define()”函数定义;define(function(){});如果这个模块还依赖了其他模块,那define()函数的第一个参数必须是数组,指明该模块的依赖性。
知乎项目今天还在继续完成,到了最关键的地方了,就是首页数据加载,然后从数据库中读取数据显示在界面上;如果用PHP将读取的数据插入到HTML中,但是当界面滚动条滑到最下面时,分页的页数不知道传回读取数据的语句中,让其页数增加;若是用JS文件加载,JS文件对象不好建,执行AJAX时,要在里面拼很多代码,看起来代码就很杂乱,不简洁方便;这个问题还有待解决;其他就没有什么问题了。
原文:http://www.cnblogs.com/luolianlu/p/5013919.html