模块化: 是具有特定功能的一个对象( 广义理解 )
模块定义的流程:
1.定义模块(对象)
2.导出模块
3.引用模块
好处:可以存储多个独立的功能块,复用性高
种类:
AMD( require.js)
CMD ( sea.js )
Common.js
CommonJs用在服务器端,AMD和CMD用在浏览器环境
AMD定义一个模块:使用define来定义,用require来使用模块
Common.js:Node.js使用了Common.js的规范
ES5及之前是如何实现模块化的?
通过RequireJS实现:
CommonJS和AMD,是模块化的标准规范,而RequireJS就是AMD规范的最好实现.实现CommonJS规范的API是同步加载模块的,而实现AMD规范的API是则是异步加载模块,异步加载即非阻塞加载,更加适合浏览器端。官方文档对RequireJS的描述:
RequireJS 是一个JavaScript模块加载器。它非常适合在浏览器中使用,但它也可以用在其他脚本环境, 就像 Rhino and Node.使用RequireJS加载模块化脚本将提高代码的加载速度和质量。
ES6是如何实现模块化的?
通过自带的实现:
es6原生支持模块化了,通过import导入模块,export导出模块。这两个单词一直作为保留字,如今赋予它应有的身份出现了,丰富了js语言功能。传统的模块模式基于闭包,返回的“公有API”。这个“公有API”带有对内部变量和功能拥有闭包的方法。它经常这样表达:
模块greetingfn的定义:外边套一层父函数
function myName(name) {
//父函数myName
function greetingfn() {
//子函数greetingfn
console.log( "myName " + name + "!" );
}
// 公有API---返回父函数里包裹的方法的指针。
return {
greetingfn: greeting
};
}
使用:
var me = myName( "macrolam" );
me.greetingfn(); // myName macrolam!
export的使用
export关键字要么放在一个变量或函数声明的前面,要么就对象形式导出,代码如下:
export function fn() {
// 导出函数
}
export var num = 42;
前端资料汇总
我一直觉得技术面试不是考试,考前背背题,发给你一张考卷,答完交卷等通知。
首先,技术面试是一个 认识自己 的过程,知道自己和外面世界的差距。
更重要的是,技术面试是一个双向了解的过程,要让对方发现你的闪光点,同时也要 试图去找到对方的闪光点,因为他以后可能就是你的同事或者领导,所以,面试官问你有什么问题的时候,不要说没有了,要去试图了解他的工作内容、了解这个团队的氛围。 找工作无非就是看三点:和什么人、做什么事、给多少钱,要给这三者在自己的心里划分一个比例。 最后,祝愿大家在这并不友好的环境下都能找到自己心仪的归宿。