TypeScript从入门到精通(二十三)namespace命名空间(下)

命名空间实现组件化:

上一篇文章实现了模块化和避免全局变量的污染,但是我们工作中分的要更细致一些,会单独写一个components的文件,然后进行组件化。

src目录下新建一个文件components.ts,编写代码如下:

namespace Components {
  export class Header {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Header";
      document.body.appendChild(elem);
    }
  }

  export class Content {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Content";
      document.body.appendChild(elem);
    }
  }

  export class Footer {
    constructor() {
      const elem = document.createElement("div");
      elem.innerText = "This is Footer";
      document.body.appendChild(elem);
    }
  }
}

每个类(class)都使用了export导出,导出后就可以在page.ts中使用这些组件了。
代码如下:

namespace Home {
  export class Page {
    constructor() {
      new Components.Header();
      new Components.Content();
      new Components.Footer();
    }
  }
}

这个时候使用tsc进行重新编译,但在预览时,你会发现还是会报错,找不到Components,想解决这个问题,我们必须要在index.html里进行引入components.js文件。

<script src="./build/page.js"></script>
<script src="./build/components.js"></script>
多TS文件编译成一个js文件:

直接打开tsconfig.json文件,然后找到outFile配置项,这个就是用来生成一个文件的设置,但是如果设置了它,就不再支持"module":"commonjs"设置了,我们需要把它改成"module":"amd",然后在去掉对应的outFile注释,设置成下面的样子。

{
  "outFile": "./build/page.js"
}

配置好后,删除掉build下的js文件,然后用tsc进行再次编译。

然后删掉index.html文件中的component.js,在浏览器里还是可以正常运行的。

子命名空间:

顾名思义,就是在命名空间里,还可以继续写命名空间,例如我在Components.ts文件下修改代码如下:

namespace Components {
    export namespace subspace{
        export class unordered{
            constructor(){
                const cul = document.createElement("ul")
                const cli = document.createElement("li")
                cli.innerHTML = `<p style="color:red">我是ul li标签</p>`
                cul.appendChild(cli)
                document.body.appendChild(cul)
            }
        }
    }
}

写完后在控制台再次编辑tsc,然后在浏览器中也是可以看到这样一段话的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值