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
通过以上方式, module1对象里的属性 _v1 就无法访问了。私有变量得以保护。 关于立即执行函数的介绍可以参考:New Document
- 使用带入参数方式解决困扰2(也称为放大模式, augmentation)
看以上代码, module2 是在module1 之上进行的扩展。 如果module2执行时, module1尚未准备好,就要使用宽放大模式了。New Document
New Document
总结
此篇仅为抛砖引玉,介绍模块化动机的探讨和方案的预设, 在目前这个 js library 丰富的时代, 已经有一些很好的library 可以直接使用帮我们达成模块化的效果。 在此篇之后的后续章节会详细介绍转载地址:https://oscar.blog.csdn.net/article/details/8902060 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年05月02日 20时08分14秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Symbian 逐步深入(二)
2019-05-08
beij~~~
2019-05-08
酷宇通讯SDK学习手册
2019-05-08
突然停机导致的问题
2019-05-08
More 平台
2019-05-08
Symbian 逐步深入(一)
2019-05-08
Linux+C 开发基础
2019-05-08
ACE_SINGLE 的用途
2019-05-08
fedora7 安装 oracle10g、
2019-05-08
vmware 突然不能上网
2019-05-08
install openmotif
2019-05-08
oracle
2019-05-08
rpm no signed
2019-05-08
oracle 基本sql语句
2019-05-08
问题:
2019-05-08
linux 下安装那个oracle客户端版本的 在哪里配置tnsnames呢
2019-05-08
linux/window mysql 操作 和 问题
2019-05-08
硬件申请
2019-05-08
oracle
2019-05-08
SQL Server实现列的自动增长
2019-05-08