zoukankan      html  css  js  c++  java
  • 用模块化编程

    用模块化编程

    最近想边学边整一下模块化编程,那么先从为何要使用模块化编程说起吧,可能你刚听说模块化编程,也没有关系,本篇讲的是很基础的东西。

      一开始写代码的时候,我们可能只需要一个js文件,去实现一个很小的功能,比如下面这样:

    复制代码
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> javascript模块化 </title>
        <style type="text/css">
        </style>
      </head>
      <body>
        <script>
          function add(a, b) {
            return a + b;
          }
    
          var ans = [];
          for(var i = 0; i < 5; i++) {
            var a = Math.random();
            var b = Math.random();
            var c = add(a, b);
            console.log(c);
            ans.push(c);
          }
        </script>
      </body>
    </html>
    复制代码

      这段代码初始化了5个-2~2之间的数据,并存放在ans数组里。随着代码量的增加,你会渐渐发现把代码写在一个js文件中会很繁琐,于是我们写了好几个js文件,如上代码把函数写在一个script标签内,同时把初始化写在另一个script标签内,如下:

    复制代码
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> javascript模块化 </title>
        <style type="text/css">
        </style>
      </head>
      <body>
        <script>
          function add(a, b) {
            return a + b;
          }
        </script>
        <script>
          var ans = [];
          for(var i = 0; i < 5; i++) {
            var a = Math.random();
            var b = Math.random();
            var c = add(a, b);
            console.log(c);
            ans.push(c);
          }
        </script>
      </body>
    </html>
    复制代码

      我们把两个js片段写在了一个html文件中,但是通常我们不会这么做,我们会把它们写在两个js文件中然后在html中引用,这里就不提了。

      如上代码有什么问题吗?通常情况下,代码中的全局变量对我们来说是越少越好,但是如上代码暴露了a、b、c以及i四个我们不需要的全局变量,我们需要的只是一个初始化成功的ans数组以供后面的代码使用,也就是说第二个script的片段我们只需要一个ans变量的值,如何?一个很简单的方法便是写一个自动执行函数,因为只有函数里的变量才是局部变量:

    复制代码
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title> javascript模块化 </title>
        <style type="text/css">
        </style>
      </head>
      <body>
        <script>
          function add(a, b) {
            return a + b;
          }
        </script>
        <script>
          (function() {
            window.ans = [];
            for(var i = 0; i < 5; i++) {
              var a = Math.random();
              var b = Math.random();
              var c = add(a, b);
              ans.push(c);
            }
          }());
        </script>
        <script>
          console.log(a); // 报错
          console.log(b); // 报错
          console.log(c); // 报错
          console.log(i); // undefined
          for(var i = 0; i < 5; i++)
            console.log(ans[i])
        </script>
      </body>
    </html>
    复制代码

      第二个script标签内的代码便是一种简单的模块化机制,不同的是实际生产中通常将所需要的值直接返回或是暴露在接口下,而非采用全局变量的方式。我们看到用了模块化的写法,世界仿佛干净了许多,我们只需提供需要的变量,而不用去管其他的东西。

      简单了解了为何要使用模块化的原因,那么第二篇接着会来学习下模块化的几种经典写法~

  • 相关阅读:
    计算成像最新进展及应用
    计算成像资料笔记
    成像中的倏逝波与衍射极限
    Eclipse安装Activiti插件(流程设计器)
    Python3.x:代理ip刷评分
    Python3.x:代理ip刷点赞
    Python3.x:正则 re.findall()的用法
    Python3.x:python: extend (扩展) 与 append (追加) 的区别
    Python3.x:zip()函数
    Python3.x:获取代理ip以及使用
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/4393269.html
Copyright © 2011-2022 走看看