请问js模块化到底是什么?

2020-04-26 11:14发布

4条回答
我行其野
2楼 · 2020-04-26 11:27

在实际的开发过程中,经常会遇到变量、函数、对象等名字的冲突,这样就容易造成冲突,还会造成全局变量被污染;

同时,程序复杂时需要写很多代码,而且还要引入很多类库,这样稍微不注意就容易造成文件依赖混乱;

为了解决上面的的问题,我们才开始使用模块化的JS,所以说模块化的作用就是:

1、避免全局变量被污染

2、便于代码编写和维护


模块化一般用来模拟类的概念,这样我们就能把公有和私有方法还有变量存储在一个对象中

星期八
4楼 · 2020-04-26 16:56

不论是组件化还是模块化,都是为了让开发者能够更得去解决软件上的高耦合、低内聚(块间联系高,块内联系低)、无重用的代码问题。

●避免命名冲突(减少命名空间污染)

●灵活架构,焦点分离,方便模块间组合、分解

●多人协作互不干扰

●高复用性和可维护性


常用模块化为es6模块化和commonjs模块化

1.ES6带来了模块化,让javascript第一次支持了moduleES6的模块化分为导出(exportexport default)与导入(import)。

2.Node 应用由模块组成,采用 CommonJS 模块规范。每个文件就是一个模块,有自己的作用域。在一个文件里面定义的变量、函数、类,都是私有的,对其他文件不可见。


王可夫斯基
5楼 · 2020-04-26 20:18

模块化是指解决一个复杂问题时自顶向下逐层把系统划分成若干模块的过程,有多种属性,分别反映其内部特性。百度百科中,模块化的定义是:模块化是一种处理复杂系统分解为更好的可管理模块的方式。


简单的说,把一个复杂的东西分解成多个甚至多层次的组成部分,以一种良好的机制管理起来,就可以认为是模块化。而对于软件开发来说,函数(过程)就是最常见也是最基本的模块之一。而像 C 语系的多种语言,比如 C++、Java、C#、JavaScript(ES6+),都有块级作用域(对不起,ES6 以前的 JavaScript 无此作用域),使用大括号来分割块,这种块其实也可以看作是比函数更小的模块化,用于简单地组织极为紧凑的内部代码。JavaScript 在 ES6 以前虽然没有块级作用域,但是 IIFE 的广泛应用也能达到类似的效果。


function、class 和 module 都组织模块的不同方式,在 JavaScript 中 function 也可以模拟出类(早期 JavaScript 就是这么定义的,function 具有普通函数和构建函数两种形态,分别可以表示函数和类),而在 ES6 和模块化定义出现之前,JavaScript 中的模块几乎都是通过模块对象和工厂函数来实现的(参考 ReuqireJS 和 SeaJS)。


由于早期 JavaScript 的模块概念比较细,在单独的 Web 页面中写点小逻辑还是没什么问题,但随着 Web 应用的复杂化,以及 JavaScript 应用得越来越广(从前端到后端到移动端到桌面端……),细小的模块已经远远不能满足模块粒度划分的需求,因此才会出现 RequireJS 之类的模块化构架,用于将若干细小的模块组织起来(即加强模块化的管理),而当这种需求主变得必不可少之后,JavaScript 相关技术本身就必须考虑这个问题,以更底层的方式予以支撑,于是发展了 Node 的 CommonJS 模块以及包管理 NPM,以及 ES6 提出的更底层实现的 import/export。

相关问题推荐

  • 回答 120

    相对前几年来说,要高上不少了,毕竟入行的人也是越来越多了,基础的工作对应想要参与的人群基数越来越大,但是对于高端人才的需求还是很多,人才还是相对稀缺性的。所以,想要学web或者其他技术也一样,别等,别观望。web前端就业方向特别多包括web前端开发...

  • 回答 25

    相对定位和绝对定位是定位的两种表现形式,区别如下:一、主体不同1、相对定位:是设置为相对定位的元素框会偏移某个距离。2、绝对定位:absolute 脱离文档流,通过 top,bottom,left,right 定位。二、特点不同1、相对定位:在使用相对定位时,无论是否进行移...

  • 抓包是什么意思?2020-04-01 17:36
    回答 7
    已采纳

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。抓包可以通过抓包工具来查看网络数据包内容。通过对抓获的数据包进行分析,可以得到有用的信息。目前流行的...

  • 回答 89

    常用的前端框架有Bootstrap框架、React框架、Vue框架、Angular框架、Foundation框架等等

  • 回答 65
    已采纳

    前端是目的就业前景非常不错的一个计算机技术,但是自学的话还是有一定难度的,网络上自学是碎片化的,同时互联网技术跟新换代快,自己的话比较吃力也学习不到最新的技术。

  • SSR 是什么意思?2020-03-20 18:56
    回答 6

    SSR就是一台服务器,可以利用 SSR 在远程的服务器上配置 SSR,使其能够成为 SSR 节点,这样本地电脑或者其它设备利用 SSR 节点实现 VPN 或者远程上网及游戏加速等方面。ShadowsocksR(简称 SSR)是 Shadowsocks 分支,在 Shadowsocks 的基础上增加了一些数据...

  • 回答 52
    已采纳

    计算机培训方向比较多,建议找适合自己的方向选择培训编程类:JAVA、WEB、Python、C/C++、C#等测试类:软件测试运维类:云计算、网络安全设计类:UI设计、3D建模等

  • 回答 11

    1、代码判断xAxis: {type: 'time',splitLine: {show: false},interval: 3600, // 设置x轴时间间隔axisLabel: {formatter: function(value, index) {return liangTools.unix2hm(value)}}},首先要把xAxis 显示类型设置成time,然后设置对应X轴......

  • 回答 8

    HTML5 + CSS + JavaScript 开发 跨平台重用代码 

  • 回答 4

    采用rem单位自动响应,并提供独有栅格化系统快速定义宽高、边距节省css代码量,同时总结各大型移动端网页,提供一套ui颜色搭配规范,尺寸规范,字体规范等。

  • 回答 10

    iView UI、ioni、SUI

  • 回答 6

     jQTouch 

  • 回答 4

    如果只是普通的移动端用vue react 或者dva 如果是要编译成小程序什么的或者混生 就用uni-app(对应vue语法)taro(对应react) 或者纯原生 这个没有限制的,自己怎么舒服怎么来

  • 回答 4

    因为可以运用在网页和小程序的开饭中,而且开源,用着便宜,企业都很喜欢

  • 回答 10

    一、Visual Studio Code下载地址:https://code.visualstudio.com/微软在2015年4月30日Build 开发者大会上正式宣布了 Visual Studio Code 项目:一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。Visual Stud...

  • 回答 9

    jQuery自带淡入淡出效果 https://www.w3school.com.cn/jquery/jquery_fade.asp 看看这个 

没有解决我的问题,去提问