Re: [問題] 有架構化的Java Script
關於這個問題,我也是有相同的經驗。最主要是因為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="" rel="nofollow">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
→
09/25 20:23, , 1F
09/25 20:23, 1F
→
09/25 20:23, , 2F
09/25 20:23, 2F
→
09/25 20:24, , 3F
09/25 20:24, 3F
→
09/25 20:24, , 4F
09/25 20:24, 4F
→
09/25 20:24, , 5F
09/25 20:24, 5F
→
09/25 20:25, , 6F
09/25 20:25, 6F
→
09/25 22:14, , 7F
09/25 22:14, 7F
→
09/25 22:15, , 8F
09/25 22:15, 8F
→
09/25 22:17, , 9F
09/25 22:17, 9F
→
09/25 22:24, , 10F
09/25 22:24, 10F
→
09/25 22:25, , 11F
09/25 22:25, 11F
→
09/25 23:08, , 12F
09/25 23:08, 12F
→
09/25 23:08, , 13F
09/25 23:08, 13F
→
09/25 23:09, , 14F
09/25 23:09, 14F
→
09/25 23:10, , 15F
09/25 23:10, 15F
→
09/25 23:10, , 16F
09/25 23:10, 16F
→
09/25 23:13, , 17F
09/25 23:13, 17F
→
09/25 23:13, , 18F
09/25 23:13, 18F
→
09/25 23:14, , 19F
09/25 23:14, 19F
→
09/25 23:18, , 20F
09/25 23:18, 20F
→
09/25 23:20, , 21F
09/25 23:20, 21F
→
09/25 23:20, , 22F
09/25 23:20, 22F
→
09/25 23:22, , 23F
09/25 23:22, 23F
→
09/25 23:22, , 24F
09/25 23:22, 24F
→
09/25 23:44, , 25F
09/25 23:44, 25F
→
09/25 23:45, , 26F
09/25 23:45, 26F
→
09/25 23:47, , 27F
09/25 23:47, 27F
推
10/11 18:01, , 28F
10/11 18:01, 28F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 4 之 5 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章