不久前在武汉这边找到了自己的第一份软件方面工作,当时还很欢喜,可惜最后因为家里的事情,公司的情况等等,最近又成了待业状态,正好安静的考虑一下以后怎么走,是考研还是继续找工作,非计算机专业学生自学找软件方面的工作真心困难。

  说了几句闲话,算是甩一甩心中的闷气。写这篇随笔算是为了复习一下js,也是呼应自己很久之前写的那篇漫话js的随笔。在html中,加载js文件的方式一般有两种,一种是以<script src="~/Scripts/xx.js" type ="text/javascript"></script>的标签的方式引入,另外一种就是以eval("xx")的方式执行。dojo1.6之前的加载方式使用的ajax+eval的方式来实现按需加载,之后遵循AMD范式,以html页中动态的添加script标签,同时配合加载完成事件来实现js模块的按需加载。二者最大的区别在于作用域,script标签中的js代码作用于顶级域,里面定义的函数和变量全局可见,而eval作用于执行域(w3c标准,各浏览器虽有差异但基本遵循)。根据某些测试(出自一篇介绍AMD文章,出处已经遗忘,期待补充),使用script方式的效率可以比eval高出20%-30%,而且script标签的方式可以享受浏览器的各种功能。所以现在主要框架使用的异步加载方式一般也是script标签的方式。

说完了方式,就是同步与异步的问题了。就我目前处理过的一些网页实例来说,异步的需求很少,毕竟没有多少经验,所以我也不好怎么说它的具体的适用范围是什么,只能说他适用于需求高度差异化的情景。目前还是同步的方式较多,即所有的js需求文件都写死在html文件中,jquery应该就属于这一类,它的各个模块高度内聚的放在一个文件中,然后使用(function(){})()的方式来世显现最小接口暴露和避免接口污染,不过使用闭包要当心内存占用的副作用,不必要的变量不要置放于闭包域中。哦,这里想说的是,ajax+eval也可以实现同步加载,只要将ajax的请求方式改为同步就行。

  最后是实现方式,pt标签的异步加载方式,核心有两个,一个是登记表,即文件加载状态、模块加载状态与文件与模块之间的关系登记,使用一个简单的模拟二维表就可以实现,另外一个就是onload/onreadystate事件的回调处理,这类代码园子里面已经很多,我就不贴了。

最新文章

  1. 介绍几个好用的vs插件
  2. 部署JProfiler监控tomcat
  3. 使用ExceptionHandlingScope进行高效的SharePoint CSOM编程
  4. 【BZOJ】【3166】【HEOI2013】Alo
  5. SPL 全面剖析
  6. 通过js判断手机访问跳转到手机站
  7. 转自 x_x_的百度空间 搞ACM的你伤不起
  8. [ES6] Promise
  9. [android]-如何在向服务器发送request时附加已保存的cookie数据
  10. JS编码解码详解
  11. MongoDB获得短暂的
  12. Java下一个简单的数据库分库帮助类
  13. jmeter利用自身代理录制电脑脚本(一)
  14. 关于view.py 中 ajax json 的用法
  15. JS-JS代码插入位置
  16. Vue.js系列之四计算属性和观察者
  17. IE7 css兼容问题
  18. C语言中static的作用及C语言中使用静态函数有何好处
  19. c# socket select 模型代码(u3d)
  20. 使用JAVA爬取网页图片

热门文章

  1. JavaScript中获取当前项目的绝对路径
  2. Linux应用环境
  3. ASP.NET MVC 文件上传和路径处理
  4. SQL Server日志文件庞大收缩方法(实测好用)
  5. iOS开发的一些奇巧淫技2
  6. ASP.NET Web API和ASP.NET Web MVC中使用Ninject
  7. $.each()遍历Json对象
  8. Tomcat 80 端口被占,解决方案
  9. PHP版本的区别
  10. 手机web下拉加载