seaJs学习笔记之javascript的依赖问题
之前分别为大家介绍了有关javascript中的冲突和性能问题,今天为大家介绍一下有关javascript中的依赖问题。我们将继续就之前javascript中性能问题继续介绍。
先来回顾一下性能问题的解决方法,那就是按需引入js文件。那么这样按需引入会不会存在问题呢?今天我们为大家继续揭晓答案。先看如下页面。
多文件HTML代码
<!doctype html>
<html dir="ltr" lang="zh-CN">
<head>
<meta charset="utf-8">
<title>梦龙小站</title>
</head>
<body>
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript" src="c.js"></script>
<script type="text/javascript" src="d.js"></script>
</body>
</html>
如上面所示。如果按照上面的方法拆分的话,那么页面中可能会引入很多js文件。如果这四个文件若没有互相依赖的关系的话,这还算勉强过得去。但是如果b.js会依赖a.js的话,那么就会出现依赖的问题。 如果b.js依赖a.js的话,那么b.js只能写在a.js下面,不能写在a.js的上面。如果b.js写在了a.js之上,这顺序就会出现问题了。那么现在还没看到问题,我们现在就举一个具体的问题,来说明一下依赖问题,几个js文件的话就有可能出现问题。
比如A小伙伴儿写了个js文件叫“b.js”,怎么使用呢,调用一下就可以使用了。然后A小伙伴儿把写好的a.js文件给其他小伙伴儿去用。B小伙伴儿就用了a.js文件。B小伙伴儿把b.js引入页面当中,接下来在页面中调用一下就可以了。看着好像没有什么问题,但是却出问题了。B小伙伴儿就去查找问题,查清楚了。a.js若想简单调用的话,必须依赖b.js才能正常使用。这时候B小伙伴儿问A小伙伴儿是否是缺少js文件,A小伙伴儿突然想起来少了个a.js文件。
依赖问题HTML代码
<!doctype html>
<html dir="ltr" lang="zh-CN">
<head>
<meta charset="utf-8">
<title>梦龙小站</title>
</head>
<body>
<!-- 使用b.js -->
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript">
//进行调用,却发现有问题了
b();
</script> <!-- b.js依赖了a.js,把a.js引入页面中 -->
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
<script type="text/javascript">
//好用了
meng();
</script>
</body>
</html>
过了一段时间,可能产品发生了变化,新加了一些需求。要把meng函数的效果变得复杂一些,新加了一些功能。需要再依赖c.js才能完成这个效果。这时候,A小伙伴儿还得告诉B小伙伴儿文件还需要再依赖c.js才能正常使用。B小伙伴儿需要再给每一个文件添加c.js。这时候B小伙伴儿已经很不爽了,因为不仅在一个页面调用这些js,而是在很多个页面调用了这个js,需要各个页面手动添加c.js,这样才会保证没有问题。
这时候,产品又要该需求了。现在不去依赖a.js了,功能上要减少一些。这时候a.js存在页面中,那肯定是很耗资源的。A小伙伴儿又告诉了B小伙伴儿,把a.js从页面中去掉吧,要不然也是多余的。B小伙伴儿又把a.js从页面中去掉了。去掉之后,发现meng函数出问题了。这meng函数不是不依赖a.js了么,怎么去掉又出问题了。结果发现,页面中其他js比如d.js依赖a.js。又不得不把a.js重新添加到页面中。
其实几个js文件,我们就可以发现,js文件互相依赖,会存在很严重的维护问题。这就是javascript中的依赖问题,导致我们经常的在加班处理这些问题。如果有一个更好的解决方案,来处理javascript中的冲突、性能和依赖问题的话,让更多的时间进行开发工作而不是修改问题。多出来的时间可以干一些有意义的事情。Js模块化就是用来解决javascript中冲突、性能和依赖问题的。
seaJs学习笔记之javascript的依赖问题就先为大家介绍到这里,有关模块化怎么书写,敬请关注梦龙小站接下来有关seaJs的更新。
seaJs学习笔记之javascript的依赖问题的更多相关文章
- seaJs学习笔记2 – seaJs组建库的使用
原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- 学习笔记:Javascript 变量 包装对象
学习笔记:Javascript 变量 包装对象 如下代码,可以输出字符的长度. var str = "Tony"; str.length; 这时再试试以下代码,返回是 undefi ...
- 【学习笔记】JavaScript的基础学习
[学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...
- 微信小程序开发:学习笔记[5]——JavaScript脚本
微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...
- go微服务框架kratos学习笔记八 (kratos的依赖注入)
目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...
- 再起航,我的学习笔记之JavaScript设计模式01
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 在通 ...
- 【MarkMark学习笔记学习笔记】javascript/js 学习笔记
1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...
- 再起航,我的学习笔记之JavaScript设计模式02
我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...
随机推荐
- Java RMI(远程方法调用)开发
参考 https://docs.oracle.com/javase/7/docs/platform/rmi/spec/rmi-arch2.html http://www.cnblogs.com/wxi ...
- eclipse中DDMS的LOGcat只有一列level
拷贝来源:http://www.cnblogs.com/kobe8/p/4620785.html http://stackoverflow.com/questions/25010393/eclipse ...
- PHP下拉框选择的实现方法
实现 第一种PHP下拉框实现方法: < ?php //提交下拉框; //直接饱触发onchange事件的结果 $id=$_GET['myselect']; // myselect 为locati ...
- [swift] NSClassFromString 无法获得该类
在写OC的时候需要用 NSClassFromString(classStringName)获得一个类,如果存在就用这个类型来声明一个对象, 但是在swift的时候却往往得不到这个类,为什么呢? 从截图 ...
- 启动Tomcat出现Using CATALINA_BASE
有一次命令行启动Tomcat的时候,出现: Using CATALINA_BASE: "D:\apache-tomcat-6.0.35"Using CATALINA_HOME: & ...
- 【原】jQuery编写插件
分享一下编写设置和获取颜色的插件,首先我将插件的名字命名为jquery.color.js.该插件用来实现以下两个功能1.设置元素的颜色.2.获取元素的颜色. 先在搭建好如下编写插件的框架: ;(fun ...
- leetcode 组合题
1.Subsets 代码1: class Solution { public: vector<vector<int> > subsets(vector<int> & ...
- Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flas
转自Ubuntu 14.04安装Chromium浏览器并添加Flash插件Pepper Flash Player Chromium谷歌的开源浏览器将不再支持Netscape浏览器插件API,Adobe ...
- Eclipse怎样导入github上的项目
国外有些比较好的源代码网站,经常需要从这些网站上导入项目到eclipse中,我最近就发现github.com这个网站上有很多开源项目.这里就以从github网站上导入项目到eclipse中为例来详细的 ...
- malloc(0)的问题
http://blog.csdn.net/js_xj/article/details/5826042 解答: 首先来解释malloc(0)的问题,这个语法是对的,而且确实也分配了内存,但是内存空间是0 ...