在JavaScript中实现脚本import指令

上一篇上一篇 | 下一篇下一篇发表时间:2007-10-1 14:10:30
在编写JavaScript时候,无论项目大小,都应该对所有*.js文件就行管理,尤其是面向对象的项目中。应该如Java一样,将每个类独立出来。但有个问题是JavaScript不支持脚本导入,这使得这个工作变得非常麻烦。
目前我找到了两种方式来做这个工作,即在JavaScript中模拟出import指令的功能。
  • XMLHTTPRequest对象 + eval();
  • 创建<script>标签以及src属性
两种方式各有千秋。dojo中实现了两个方法:
  • 模拟import的dojo.require();
  • 模拟package的dojo.provide();
研究了一下代码,不过还是没弄明白它是怎么来实现这个dojo.require()的,不过应该可以肯定的是它没有使用创建<script>的方法,因为在生成的页面中没有额外的<script>。
前一阵把神奇一刻的JavaScript都规整了一下,建了个DisneyBox类和众多的子类,脚本的导入使用了创建<script>的方法。那么现在就分别介绍一下两中方法吧,其实都是很简单的一些技巧。
XMLHTTPRequest对象 + eval()函数
这种方法的原理如下:

  1. 利用XMLHTTPRequest对象把*.js文件以文本方式加载进来,并保存在responseText中
  2. 使用eval()函数将responseText中的文本转换成JavaScript脚本
这样做的好处是载入的脚本立即可以执行,但有可能会遇到很多eval()函数的问题。
创建<script>标签
原理如下:

  1. 用document.createElement(’script’)方法创建一个script元素
  2. 设置script元素的type和src属性
  3. 将此script元素用appendChild()方法添加到HTML文档中
这种方法的好处是能够比较安全的导入脚本,不需要再利用eval()来解析,但这样会在HTML中引入过多的文件,而且会有其他一些问题。
这里还有一篇很值得看的文章:Qomolangma实现篇(一):内核载入模块system.js的实现。对这两种方法做了更详细的叙述。
JavaScript 2.0的提案中引入了package的概念,而且提供了package和import指令,拭目以待它的实现吧。
[本日志由 ui163 于 2007-10-1 14:10:30 编辑]
上一篇上一篇:关于DOM事件模型的两件事
下一篇下一篇:控制电脑关机或者重新启动的JS代码
文章来自:设计学院
收藏到网摘: 收藏到QQ书签
Tags:

相关内容

网站建设导航→

相关内容

版权隐私 ┊  免责声明  ┊ 友情链接 ┊  学院地图  ┊  关于设计学院

Copyrights©2007-2008 UI163.com All Rights Reserved

 豫ICP备07501346号