之前分别为大家介绍了有关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的依赖问题的更多相关文章

  1. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  2. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

  3. 学习笔记:Javascript 变量 包装对象

    学习笔记:Javascript 变量 包装对象 如下代码,可以输出字符的长度. var str = "Tony"; str.length; 这时再试试以下代码,返回是 undefi ...

  4. 【学习笔记】JavaScript的基础学习

    [学习笔记]JavaScript的基础学习 一 变量 1 变量命名规则 Camel 标记法 首字母是小写的,接下来的字母都以大写字符开头.例如: var myTestValue = 0, mySeco ...

  5. 微信小程序开发:学习笔记[5]——JavaScript脚本

    微信小程序开发:学习笔记[5]——JavaScript脚本 快速开始 介绍 小程序的主要开发语言是 JavaScript ,开发者使用 JavaScript 来开发业务逻辑以及调用小程序的 API 来 ...

  6. go微服务框架kratos学习笔记八 (kratos的依赖注入)

    目录 go微服务框架kratos学习笔记八(kratos的依赖注入) 什么是依赖注入 google wire kratos中的wire Providers injector(注入器) Binding ...

  7. 再起航,我的学习笔记之JavaScript设计模式01

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 在通 ...

  8. 【MarkMark学习笔记学习笔记】javascript/js 学习笔记

    1.0, 概述.JavaScript是ECMAScript的实现之一 2.0,在HTML中使用JavaScript. 2.1 3.0,基本概念 3.1,ECMAScript中的一切(变量,函数名,操作 ...

  9. 再起航,我的学习笔记之JavaScript设计模式02

    我的学习笔记是根据我的学习情况来定期更新的,预计2-3天更新一章,主要是给大家分享一下,我所学到的知识,如果有什么错误请在评论中指点出来,我一定虚心接受,那么废话不多说开始我们今天的学习分享吧! 我们 ...

随机推荐

  1. 《工作型PPT设计之道》培训心得

    参加包翔老师的“工作型PPT设计之道>培训,颇多心得,后来为部门新员工和同组同事做了转化培训,将心得整理成一份PPT讲义,效果颇佳.现将主要心得整理于此.因时间仓促,24条心得有拼凑之嫌,有待今 ...

  2. 【python】for循环一列

    a="哈哈哈哈,笑死我了"for i in a: print (i, end=' ') 结果 哈 哈 哈 哈 , 笑 死 我 了

  3. 简洁代码---python---string

    判断字符串是否是回文的,即是否中心对称的: >>>return s[::-1] == s 对称返回True, 否则返回False

  4. C++中弱符号(弱引用)的意义及实例

    今天读别人代码时看到一个“#pragma weak”,一时没明白,上网研究了一个下午终于稍微了解了一点C.C++中的“弱符号”,下面是我的理解,不正确的地方望大家指正. 本文主要从下面三个方面讲“弱符 ...

  5. 控制器 - URL routing HTTP module(一)

    URL routing HTTP module 负责处理检查入站请求的 URL,并将它们分派到最合理的处理器上.URL routing HTTP module 也替代了旧版本的 ASP.NET URL ...

  6. ORA-01033 ORA-01109 ORA-01034 ORA-12514 ORA-24324 ORA-01041 ORA-01157 ORA-01110

    客户数据库挂掉了 在plsql客户端使用普通账号登录时提示如下错误 因为好久没弄数据库了,慌了一小下. 接下来搜索过往的知识,回忆.在cli下输入了以下命令 sqlplus system/system ...

  7. ImageButton和Button区别

    一.基础准备       Imagebutton 继承 Imageview,就是用一个图标代表了一些文字,它没Android:text属性.它由Android:src指定图标的位置 android:s ...

  8. 浅析PC机串口通讯流控制

    转自浅析PC机串口通讯流控制 我们在串行通讯处理中,常常看到RTS/CTS和XON/XOFF这两个选项,这就是两个流控制的选项,目前流控制主要应用于调制解调器的数据通讯中,但对普通RS232编程,了解 ...

  9. 【HDU 2853】Assignment (KM)

    Assignment Problem Description Last year a terrible earthquake attacked Sichuan province. About 300, ...

  10. [topcoder]CorrectMultiplicationTwo

    http://community.topcoder.com/stat?c=problem_statement&pm=11609&rd=14547 http://apps.topcode ...