前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >笔记:总结require和import的区别

笔记:总结require和import的区别

作者头像
yuezhongbao
发布2019-03-13 15:33:18
7790
发布2019-03-13 15:33:18
举报
文章被收录于专栏:前端实习日记前端实习日记

require是这个老一辈码农们在es6规范之前的规范中使用的命令,之前的规范有CommonJS规范、AMD、CMD、还有一个UMD,那为什么是require不是别的呢,因为方便在node中使用。

好的,这又引入了一个问题,Q1CommonJS规范、AMD、CMD、还有一个UMD他们的区别又是什么,说实话我接在他们之后才接触的前端,我也没怎么用过,也没有什么话语权,只能上网翻看其他文章粗略理解记忆,对这个概念先保持不陌生的状态。(有的面试官还爱问,举个例子,你没用过html前几个版本,人家问你Html5的优点,你没用过老版本,你怎么说,说不出来能说明你h5用的不熟?),言归正传,require和import有几点差异: require使用于CommonJS规范,import使用于ES6规范,两者区别实质上是两种规范的区别:

  • 1.CommonJS(require)
    • 1.对基本类型,属于复制;a = require(b),b会被a缓存。
    • 2.对于复杂数据类型,属于浅拷贝,浅拷贝的话就存在一个问题,修改a的话b也会被修改。(Q2又引出一个问题:怎么阻止这种情况发生?)。
    • 3*.在使用require命令加载模块时,就会运行整个模块的代码(同步加载)。
    • 4.使用require命令加载加载过的模块时,不会再执行一次而是从缓存中取,除非清除缓存。
  • 2.ES6模块(import)
    • 1.import属于【动态只读引用】,即import a from ba是只读变量,不论基本数据类型还是复杂数据类型。
    • 2*.import虽然写在文件顶部,但是脚本执行时,在碰到这个只读变量的时候,才执行被加载的模块(异步加载)。
    • 3.对于动态来说,原始值发生变化,import加载的值也会发生变化。不论基本类型还是复杂类型。
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档