前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS模块化概念理解 原

JS模块化概念理解 原

作者头像
lilugirl
发布2019-05-26 22:15:45
1.9K0
发布2019-05-26 22:15:45
举报
文章被收录于专栏:前端导学前端导学

为什么要模块化

模块化概念的引入主要是为了防止变量污染。

比如我们常常会遭遇下面代码中所遇到的问题。

模块化尝试

后来有人尝试用对象的方式来书写逻辑模块,但是这种写法有自己的弊端,比如这样的写法暴露了所有的模块成员,模块中的属性有被外部代码更改的风险。

最终人类找到了一种比较完美的方式解决变量污染问题,那就是用即时函数的方式书写

首先我们了解以下即时函数的几种常见写法

我们可以用下面这种形式包裹模块

在即时函数中返回一个对象 从而达到暴露共有属性/方法的目的 ,函数污染的问题被完美解决!!

即时函数模块化写法的应用场景

模块化编程的放大模式适用于模块的扩展场景

常见库的模块化实现原理

模块规范:CommonJS和AMD

node.js的模块系统,就是参照CommonJS规范实现的 在CommonJS中,有一个全局性方法require(),用于加载模块 CommonJS规范不适用于浏览器环境 浏览器端的模块,不能采用”同步加载"(synchronous),只能采用"异步加载"(asynchronous)

AMD Asynchronous Module Definition 是异步加载模块定义 浏览器端的应用适合AMD模块规范 主要有两个Javascript库实现了AMD规范:require.js和curl.js

require.js的用法

实现js文件的异步加载,避免网页失去响应 管理模块之间的依赖性,便于代码的编写和维护 http://requirejs.org/docs/download.html <script src="js/require.js" defer async="true" data-main=“js/main”></script> 模块必须采用特定的define()函数来定义

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要模块化
  • 模块化尝试
  • 最终人类找到了一种比较完美的方式解决变量污染问题,那就是用即时函数的方式书写
  • 即时函数模块化写法的应用场景
  • 模块规范:CommonJS和AMD
  • require.js的用法
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档