简述前端模块化发展史,前端开发要学哪些课程

17 阅读3分钟

通过自带的实现:

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;

// 导出变量

var arr = [1,2,3];

export { arr };

import使用

要导入一个模块,使用import语句

如果你想要导入一个模块的API中的特定命名成员到你的顶层作用域,使用这种语法:

import { foo, bar, baz } from "foo";

被罗列的标识符foo,bar和baz必须匹配在模块的API上的命名导出(这里将会发生静态分析和错误断言)。它们在你当前的作用域中被绑定为顶层标识符。

import { foo } from "foo";

foo(); 对于一个小项目,没有多少页面(十几个)的PC端站点,没必要进行前端模块化开发;但是从维护性角度来说还是采用模块化好些。对于一个大项目,数据交互功能性动画频发的站点js代码大量涌现还是模块化更优。

这里分享一份由字节前端面试官整理的「2021大厂前端面试手册」,内容囊括Html、CSS、Javascript、Vue、HTTP、浏览器面试题、数据结构与算法。全部整理在下方文档中,共计111道

HTML

  • HTML5有哪些新特性?

  • Doctype作⽤? 严格模式与混杂模式如何区分?它们有何意义?

  • 如何实现浏览器内多个标签页之间的通信?

  • ⾏内元素有哪些?块级元素有哪些? 空(void)元素有那些?⾏内元 素和块级元素有什么区别?

  • 简述⼀下src与href的区别?

  • cookies,sessionStorage,localStorage 的区别?

  • HTML5 的离线储存的使用和原理?

  • 怎样处理 移动端 1px 被 渲染成 2px 问题?

  • iframe 的优缺点?

  • Canvas 和 SVG 图形的区别是什么?

JavaScript

  • 问:0.1 + 0.2 === 0.3 嘛?为什么?

  • JS 数据类型

  • 写代码:实现函数能够深度克隆基本类型

  • 事件流

  • 事件是如何实现的?

  • new 一个函数发生了什么

  • 什么是作用域?

  • JS 隐式转换,显示转换

  • 了解 this 嘛,bind,call,apply 具体指什么

  • 手写 bind、apply、call

  • setTimeout(fn, 0)多久才执行,Event Loop

  • 手写题:Promise 原理

  • 说一下原型链和原型链的继承吧

  • 数组能够调用的函数有那些?

  • PWA使用过吗?serviceWorker的使用原理是啥?

  • ES6 之前使用 prototype 实现继承

  • 箭头函数和普通函数有啥区别?箭头函数能当构造函数吗?

  • 事件循环机制 (Event Loop)

开源分享:docs.qq.com/doc/DSmRnRG…