计时器setTimeout、和setInterval的区别:
1、setTimeout定时任务只执行一次就终止,而setInterval是执行多次且不会主动终止只有清除定时器 (clearInterval)才会终止
2、clearTimeout()clearInterval()都只能清除单个定时器
模块化开发
传统非模块化开发有如下的缺点
1、命名冲突
2、文件依赖
前端标准的模块化规范(代码加载需要服务端经过网络传发送到浏览器端 一般都是异步的)
1、AMD - requirejs
2、CMD - seajs
服务器端的模块化规范(服务端代码模块只需磁盘加载到内存 一般都是同步的)
1、CommonJS - Node.js
模块化相关的规则
1、如何定义模块:一个js文件就是一个模块,模块内部的成员都是相互独立的
2、模块成员的导出和引入
模块的导出和引入(推荐使用第一种方法)
1、变量的导出引入方式有两种:
1、exports.要导出的变量名 = 变量名 ag: exports.sum =sum
对应的在其他模块引入变量的方法是:
var module = require(’./demo02.js’) 在demo3.js中导入demo02.js这个模块
var ret = module.sum(12,13);
console.log(ret)
2、module.exports = 要导出的变量名 ag: module.exports = sum
对应的模块引入的方法是:
var module = require(’./demo02.js’) 在demo3.js中导入demo02.js这个模块
var ret = module(12,13); // module本身就是一种方法
console.log(ret)
3、使用global(这种方式很少用)
导出
var flag = 123
global.flag = flag
导入
require(‘demo01.js’);
console.log(global.flag)
demo01.js
sum = function(a, b){ return parseInt(a) + parseInt(b) } // 在当前模块中导出这个变量 // 导出方式一 // exports.sum = sum // 导出方式二 module.exports = sumdemo02.js
/* // 方式一引入sum方法(demo01模块中的代码都会被执行) var module = require("./demo01全局成员") var res = module.sum(10, 15) console.log(res) */ // 方式二(demo01模块中的代码都会被执行) var module = require("./demo01全局成员") res = module(10, 15) console.log(res)注意:
1、已被加载的模块会缓存
2、模板文件的后缀3种情况:.js .json .node
3、上述三种模块加载的优先级(不加文件后缀时):.js >. josn > .node