onvno / pokerface

日常技术文章阅读整理
3 stars 0 forks source link

20201109 - requirejs #97

Open onvno opened 3 years ago

onvno commented 3 years ago

在了解组件复用时,样式可以通过scoped进行隔离,那全局对象如何进行隔离。 了解了下requirejs的模块加载,可以实现全局的隔离:

··· <!DOCTYPE html>

Document

···

log打印记录

$ 3.5.1
$ 2.0.1

但是全局的window下直接使用的话,后加载的会覆盖前边的版本号。

参考:

onvno commented 3 years ago

requirejs的核心原理

1,概念

requireJS是基于AMD模块加载规范,使用回调函数来解决模块加载的问题。

2,原理 (如何动态加载的?)

requireJS是使用创建script元素,通过指定script元素的src属性来实现加载模块的。

3,特点

  1. 实现js文件的异步加载,避免网页失去响应

2,管理模块之间的依赖,便于代码的编写和维护

4,requireJS为何不会多次加载同一个文件?怎么理解内部机制?

模块的定义是一个function,这个function实际是一个 factory(工厂模式),这个 factory 在需要使用的时候(require("xxxx") 的时候)才有可能会被调用。因为如果检查到已经调用过,已经生成了模块实例,就直接返回模块实例,而不再次调用工厂方法了。

requireJS 的核心原理是什么?