Javascript模块化编程系列一: 模块化的驱动
发布日期:2021-07-01 05:47:14 浏览次数:2 分类:技术文章

本文共 1167 字,大约阅读时间需要 3 分钟。

Javascript 函数编程

初涉Javascript ,会以为Javascript 是面向过程的编程语言, 和C类似,使用函数来达成效果。

New Document

Javascript 对象编程

Javascript 本身是没有类的概念,但是确确实实是面向对象的编程语言。

更多相关请参见:

原型(prototype)可以让你直接给一个变量对象添加属性或是函数。

你也可以用以下方式来定义一个对象:

 更多相关,请参见:

模块化需求

不管是使用以上那种方式编程,js代码编写或导入的方式都是相同的。
或是写在 html 的<srcipt>标记块内,或是独立成js 文件,再导入到页面中。
当页面代码很多的时候,有可能还会拆分成多个js文件来导入。
如此,实际的开发中, 就有可能会遇到一些困扰:
困扰1.  变量值被意外篡改
使用函数化的方式的状况:  有可能我们会定义一些js全局变量, 这个全局变量会就被所有的function 用到, 如果这些function 本身又使用了同名的变量。我们知道,js 的变量无须定义就可以使用,最后,那个全局变量的值是什么,就真的很难知道和控制了。
使用对象的方式的状况: 对象内定义的属性和方法对外部来说都是可以获取和改变的, 这个对象也就没有私有变量之说了。而且,如果不同的js 中定义了同名的对象,就会出现覆盖的状况。对于开发和调试的困扰比较大。
困扰2. js 导入附带的问题
拆分成多个js导入,可能这些js直接有先后和依赖关系,顺序不对,有可能导致问题。
困扰3. 导入的文件量较大,页面载入较慢
现在的web开发,伴随着Ajax技术的盛行, 同一个页面需要展现的功能较多,很多时候都是局部的替换,更新,隐藏/展现功能。如此,单个页面的需要导入的js文件的量势必非常大。而这些文件是从服务端传输过来的。

模块化解决探求

针对这些问题,如何寻求一种比较好的解决方式?
  • 立即执行函数解决困扰1
New Document
通过以上方式, module1对象里的属性 _v1 就无法访问了。私有变量得以保护。
关于立即执行函数的介绍可以参考:

  • 使用带入参数方式解决困扰2(也称为放大模式, augmentation)
New Document
看以上代码, module2 是在module1 之上进行的扩展。
如果module2执行时, module1尚未准备好,就要使用宽放大模式了。
New Document

总结

此篇仅为抛砖引玉,介绍模块化动机的探讨和方案的预设, 在目前这个 js library 丰富的时代, 已经有一些很好的library 可以直接使用帮我们达成模块化的效果。
在此篇之后的后续章节会详细介绍

转载地址:https://oscar.blog.csdn.net/article/details/8902060 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Javascript模块化编程系列二: 模块化的标准化(CommonJS & AMD)
下一篇:[Ext JS6实战]动态数据绑定

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月02日 20时08分14秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章