Ajax 板


LINE

关於这个问题,我也是有相同的经验。最主要是因为javascript虽然可以单独 写成一个js档,再透过<script>标签读入,来达成某个程度上的程式码管理, 但是你必须清楚的知道每个独立的js档案是否有用到其他js档,如果有则必须 一并为需要的JS档加上<script>标签来读入。而不是像一般的程式语言有汇入 其他档案的语法,像c++的include或java的import可以使用,所以当一个专案 变得很大的时候,通常最後为了能让网页正确执行,都会把所有js档全部读入 或全部集中成一个js档,但日後的如果有更新,势必要再把所有档案集中压缩 一次。 针对这个问题我尝试用过动态产生<script>来模拟import的方法,但是很遗憾 的,javascript是个直译式的语言,所以他并不会等待<script>建立完成才继 续下一段程式码,以下面为例子,假设Include函式实作了一个功能: 建立<scirpt>,指定参数为url,并将<script>加入<head>的相关程式码。 global.js 定义了某些变数: ---------------------------------------------------------------- var name = 'Kai'; ---------------------------------------------------------------- index.html 的javascript内容: ---------------------------------------------------------------- <script src="http://localhost/js/Include.js"></script> <script> function sayHello()[ alert('hello, ' + name); } Include('http://localhost/js/global.js'); sayHello(); </script> ---------------------------------------------------------------- 我们尝试呼叫位於另一个js档案所宣告的name变数,你期望应该看到的是 hello, Kai 但是浏览器会很残酷的跟你说没有这个东东,跑出变数未定义的大错误,因为 sayHello()并不会等待 Include()的完成,就会立刻执行,这结果相当令人沮 丧,但是如果你尝试延迟执行函式: setTimeout('sayHello()', 1000); 你就能看到与预期相符的结果,表示档案确实是有被读入,也有完成程式码的 执行,但是我们没办法限制程式码的执行顺序。 最後透过不同的逻辑方式,我尝试成功实作了档案汇入的机制,当然在规则上 有其一定的限制,但在执行上确实能达到档案组织管理的好处,不妨可以参考 看看或互相交流讨论,提供更好的意见 专案位置 http://code.google.com/p/jclassscript/ -- 欢迎来我的网志看看 @ http://liaosankai.pixnet.net/blog --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.9.104.124
1F:→ TonyQ:如果说是本站的script ,不一定要script tag 载啊。:~ 09/25 20:23
2F:→ TonyQ:不过这比较建议是纯client side 没有任何 server 可以帮忙时 09/25 20:23
3F:→ TonyQ:不然从server 设定开发环境,设定打包js的程序,会比client 09/25 20:24
4F:→ TonyQ:有效率很多,毕竟省了 request 。 09/25 20:24
5F:→ TonyQ:如果可以把所有档案压缩一次变成自动化而且几秒钟内就可以解 09/25 20:24
6F:→ TonyQ:决的事情,通常就不会觉得它讨厌了。:D 09/25 20:25
7F:→ liaosankai:感谢你的建议,我能了解你的说法。但我只是很单纯的想 09/25 22:14
8F:→ liaosankai:尝试实作出类似的功能,或许等到javascript2.0出来 09/25 22:15
9F:→ liaosankai:这些都已经实作,而且一定会在更好 09/25 22:17
10F:→ liaosankai:但是就目前来说,提出可能解决的方法或许是比较有趣的 09/25 22:24
11F:→ liaosankai:关於效能并不是主要的考量,只要在能接受的范围就好 09/25 22:25
12F:→ TonyQ:yep 可行解一向都是有趣的,不过描述一个 solution 应该是优 09/25 23:08
13F:→ TonyQ:缺点跟适用情境并提的。因为其实效能是不是在能接受的范围是 09/25 23:08
14F:→ TonyQ:很难说的一件事情。 09/25 23:09
15F:→ TonyQ:不过话说回来,我倒比较希望 browser 对 connection 的 09/25 23:10
16F:→ TonyQ:support 可以好一点,让我们可以真的把js的模组化又不伤本XD 09/25 23:10
17F:→ TonyQ:有一些fw有类的功能,像是 rails 因为他是由 rails去产生 09/25 23:13
18F:→ TonyQ:script tag, 所以他可以写多个 js , debug时执行分开没压缩 09/25 23:13
19F:→ TonyQ:的,但是 deploy 时会自动打包成 all.js 而且自动指过去 09/25 23:14
20F:→ TonyQ:另外这方案最大的缺点在於要完全重写既有的东西,去配合你 09/25 23:18
21F:→ TonyQ:的结构,作为一个玩具可以,不过作为一个solution,我想它给 09/25 23:20
22F:→ TonyQ:的诱因并不大。 09/25 23:20
23F:→ TonyQ:oops , 我发现我在一年半前就对你说过一样的话了...XD 09/25 23:22
24F:→ TonyQ:好吧 那当我没说。XD 09/25 23:22
25F:→ TonyQ:想到另一个可行解,using js 这只plug-in 可以用来管理 09/25 23:44
26F:→ TonyQ:js 的 dependency ,几年前有在project用过。XD 09/25 23:45
27F:→ TonyQ:http://0rz.tw/nIP2Q 这是介绍跟usage. 09/25 23:47
28F:推 mesak:http://tinyurl.com/y8ry8dt 10/11 18:01







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW站内搜寻

TOP