posts - 82, comments - 269, trackbacks - 0, articles - 1
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          JS沒有直接提供import這個(gè)功能,我想肯定有人遇到過(guò)這類問(wèn)題。用baidu搜索了一下,找到了一些但都比較亂,看不太明白,郁悶了2天,后來(lái)想一想用google搜索一下。結(jié)果找到了幾個(gè)網(wǎng)頁(yè)講的蠻清楚的。

          http://www.cryer.co.uk/resources/javascript/script17_include_js_from_js.htm

          然后做了一個(gè)簡(jiǎn)單的實(shí)驗(yàn)。發(fā)現(xiàn)效果不錯(cuò)。


          順便介紹一下應(yīng)用場(chǎng)景,就好像設(shè)計(jì)模式一樣,一個(gè)東西總要有他的應(yīng)用場(chǎng)景,平常我們開發(fā)時(shí),直接在網(wǎng)頁(yè)里面通過(guò)“<SCRIPT src="include.js"></SCRIPT>”這種方式添加JS好的很嘛,干嘛要費(fèi)力引入這種新的方式呢。

          在開發(fā)JS框架時(shí)肯定是要用到這種方法,開發(fā)框架時(shí)你要求開發(fā)者使用你的庫(kù),但要同時(shí)引入好幾個(gè)文件,這樣會(huì)給人帶來(lái)很不好的體驗(yàn)。

          另外一種就是我現(xiàn)在遇到的:我寫了幾個(gè)頁(yè)面,針對(duì)這些頁(yè)面引入的所有JS函數(shù)我全部在一個(gè)JS文件中了。但我出于調(diào)試的需要,我要引入一個(gè)JS庫(kù)(firebuglite),這個(gè)庫(kù)專門用來(lái)打印log,如果不引入的話,我寫的這些JS就會(huì)出錯(cuò),也就是我要找出哪些頁(yè)面引用了我的這個(gè)JS文件。然后在所有的頁(yè)面通過(guò)<SCRIPT src="include.js"></SCRIPT> 的方式來(lái)添加這個(gè)打印log的庫(kù)。

          我當(dāng)時(shí)就想,既然只有我的這個(gè)JS文件要用,我干嘛不通過(guò)include直接把它包含進(jìn)來(lái),這樣就只要添加一處就行了,不要在每個(gè)頁(yè)面都去添加,一不小心就忘記加錯(cuò)了,或者是將來(lái)不要了,又忘記刪除,留下一推垃圾。這就是我之所以使用include的原因。或者是別人引用了我的包,而我不知道,這樣也會(huì)形成錯(cuò)誤,如果使用這種include就不會(huì)這樣了。

          ?

          ?

          示例下載地址:http://www.aygfsteel.com/Files/itspy/AJAX.rar

          firebuglite:http://www.getfirebug.com/docs.html

          因?yàn)槭褂昧讼鄬?duì)目錄來(lái)include,最好全部解壓縮之后才能運(yùn)行,不能直接在壓縮包中運(yùn)行。


          核心代碼:
          function IncludeJavaScript(jsFile)
          {
          ? document.write('<script type="text/javascript" src="'
          ??? + jsFile + '"></script>');
          }


          評(píng)論

          # re: JS實(shí)現(xiàn)include功能(提供完整的示例下載)  回復(fù)  更多評(píng)論   

          2007-03-21 13:23 by boolean
          prototype effect早就這么用了,建議看一眼

          另外我一般把要用的js寫到一個(gè)模版里(取名commonjs.htm),具體內(nèi)容如下:
          #set($arr = "prototype,effect,system")
          #set($split = ",")
          #set($split = $split.ToCharArray())
          #set($arr = $arr.Split($split))
          #foreach($script in $arr)
          <script src="/js/${script}.js"></script>
          #end
          然后把這個(gè)文件加入到通用部件(如footer.htm)中
          $vh.Include($ctx, "/include/commonjs.htm")

          # re: JS實(shí)現(xiàn)include功能(提供完整的示例下載)  回復(fù)  更多評(píng)論   

          2007-03-21 18:05 by itspy
          @boolean


          prototype effect早就這么用了,建議看一眼

          不好意思,能不能告訴我在哪?我沒找到prototype里面有effect,能給個(gè)URL嗎?

          # re: JS實(shí)現(xiàn)include功能(提供完整的示例下載)  回復(fù)  更多評(píng)論   

          2007-09-10 14:31 by leonzhu
          還是同樣的問(wèn)題。
          file2.js 通過(guò) document.write 引用 file1.js 時(shí),并不能立即調(diào)用 file1.js 中的函數(shù)。file1.js 的 parse 發(fā)生在 file2.js 之后
          主站蜘蛛池模板: 兴国县| 乌拉特中旗| 湖州市| 上犹县| 綦江县| 万源市| 松江区| 沙坪坝区| 舟山市| 邵阳市| 射阳县| 句容市| 大关县| 大田县| 明溪县| 三明市| 铁岭市| 怀柔区| 四平市| 阜平县| 墨竹工卡县| 鹰潭市| 黑山县| 洛扎县| 上饶市| 宝应县| 山阳县| 广宁县| 江山市| 交城县| 丹江口市| 嘉定区| 富川| 凯里市| 池州市| 炎陵县| 新和县| 大丰市| 屯昌县| 汾西县| 石狮市|