JS 模块化- 01 模块化前传 (举例:高质量男和拼团名媛相亲)

JS 模块化 01 - 模块化前传

前端技术的发展不断融入了很多后端的思想,逐步形成前端的 ”四个现代化“:工程化、模块化、规范化、流程化。这个主题介绍 模块化 ,主要内容包括模块化前传(早期模块化的实现)、模块化的四个规范(Common JS、AMD、CMD、ESM)。本文就聊聊早期的模块化。

1. 原始时代 - 无模块

十多年前,工程师们一般都不好意思说自己会 JS 语言,太 Low逼 —— 大神们随便翻翻书,几下就可以把什么元素显示隐藏、表单校验等需求的 JS 脚本写出来了。反正在这群家伙眼里,写 JS、CSS 的人不是程序员,而是美工(仅仅是在过去的那个年代二逼们才会这么说)。代码中都从到尾都是逻辑代码,一堆变量函数和流程控制语句( if/else/for/switch… ),JS 脚本是从上到下顺序执行,反正功能给你堆出来了,至于会带来什么后果,关我屁事,有接盘侠去弄。。。

二逼的人直接就在 HTML 文件中写 JS 代码;自我感觉良好一些的大神就独立一个 JS 文件,然后在 HTML 页面上通过

例如人类高质量男士阿三和拼团名媛阿花相亲,无模块时代就会这么写:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>模块化 - 无模块化的原始时代</title>
</head>
<body>
<h1>模块化 - 无模块化的原始时代</h1>
</body>
<script>
    /** 人类高质量男士-姓名 */
    let manName = '阿三'

    /** 人类高质量男士-自我介绍 */
    function manIntro() {
     
        console.log('我是人类高质量男士,我叫', manName)
    }

    /** 拼团名媛-姓名 */
    let womanName = '阿花'

    /** 拼团名媛-自我介绍 */
    function womanIntro() {
     
        console.log('我是拼团名媛,我叫', womanName);
    }

    /** 约会 */
    function dating () {
     
        console.log('在无模块化的原始社会')
        console.log('两人开始约会....')

        manIntro()
        womanIntro()
    }

    // 调用约会函数,让两人真正开始约会
    dating()
</script>
</html>

在浏览器中直接运行,浏览器控制台显示结果:

无模块化原始时代运行结果

在上面的代码中,如果 dating 函数定义在 manIntro 函数或 womanIntro 前,就会执行失败。所以 JS 的执行顺序是非常重要的。

2. 石器时代 - 全局函数

后端大神写后端代码,大多围绕着类和对象展开,每个类都可以写在一个独立的文件中,还能提取一些公共的工具类之类的,于是他们就想这个思路能否用于 JS 呢? 于是就诞生了全局函数方式。

将不同功能的函数和变量拆分到不同的 JS 文件中,在入口 HTML 文件中按照顺序,通过 script 标签依次引入这些 JS 文件。

于是案例就可以抽取为三个 JS 文件:人类高质量男士 - man.js,拼团名媛 - woman.js,约会 - dating.js。 这三个 JS 文件就是石器时代模块化的雏形了。代码实现如下:

人类高质量男士 man.js


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员优雅哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值