zoukankan      html  css  js  c++  java
  • module 和 component 的区别

    看到有人在扯 module 和 component 的区别,于是我也来插一句。对于 Web 前端项目而言,它们没有任何区别!所有对它们区别的高谈阔论都是瞎逼逼!为何 npm 的组件安装目录就叫 node_modules?而 bower 组件的安装目录叫做 bower_components 呢?
      其实 npm 安装和 bower 安装是一样的,很多人就是喜欢用 npm 不喜欢用 bower,于是整个项目就全是 node_modules。很多 bower 的包在 npm 中也能找到。所以说 module 和 component 只是个名字而已,「组件」和「模块」的概念如今已经模糊地融合在一起了 —— 即使它们曾经是不同的。
      然而在开完地图炮之后我就要开始瞎逼逼了!
      其实「组件」和「模块」本身是不同的东西,我强调的只是在 Web 前端这个氛围中它们是等价的而已。以前做 VB 的时候里面也有「组件」(当时叫「部件」)和「模块」。里面的组件和模块的区别就是黑盒和白盒的区别。组件是可以单独编译成一个动态链接库引入的,而模块通常是代码模块,只是提供一个代码片段(VB 中还有类模块,专门提供一个类)。
      以上这个解释显然带有微软色彩的,还可以用更抽象的语言来描述它。所谓组件就是可以在运行时加载的东西,而模块则是直接被引入到代码中编译的东西。这就是它们最初的本质区别。
      到了 Web 前端,一切就变得暧昧起来。因为前端代码本来就只有运行时没有编译时。或者即使有编译时也是人为加上的,和项目的打包规则有关。比如用 webpack 单入口模式打包,那么所有的东西都是模块而没有组件。如果是想 jQuery 插件那样直接通过 SCRIPT 标签加载脚本来增加插件,那么就属于组件(虽然一般称为 plugin 而不是 component)。

  • 相关阅读:
    JS 获取本月第一天零点时间戳并转化成yy-mm-dd
    JS 两个对象数组合并并去重
    element ui datePicker 设置当前日期之前的日期不可选
    整理一些vue elementui 问题 + 链接方法
    css 修改placeholder的颜色
    js循环内0.5s停止
    自定义border 为 dashed 时的虚线间距
    如何让浮动元素水平/垂直居中
    centos7.6设置sftp服务
    HikariCP Druid比较
  • 原文地址:https://www.cnblogs.com/luowei/p/13265790.html
Copyright © 2011-2022 走看看