從零開(kāi)始學(xué)習(xí)jQuery (八) 插播:jQuery實(shí)施方案
一.摘要
本系列文章將帶您進(jìn)入jQuery的精彩世界, 其中有很多作者具體的使用經(jīng)驗(yàn)和解決方案, 即使你會(huì)使用jQuery也能在閱讀中發(fā)現(xiàn)些許秘籍.
本篇文章屬于臨時(shí)插播, 用于介紹我在本公司的jQuery實(shí)施方案.
二.前言
有了前幾章扎實(shí)的基礎(chǔ)知識(shí)我們已經(jīng)可以在項(xiàng)目中投入使用jQuery了.再繼續(xù)深入學(xué)習(xí)jQuery前插播一下我的jQuery實(shí)施方案.
每個(gè)公司的情況都不同.比如我們公司的頁(yè)面文件都為用戶控件, 物理路徑和虛擬路徑?jīng)]有絕對(duì)的關(guān)系, 所以無(wú)法使用相對(duì)路徑(否則生產(chǎn)環(huán)境中會(huì)找不到文件). 項(xiàng)目繁多, 同一個(gè)虛擬目錄的不同文件夾對(duì)應(yīng)不同項(xiàng)目工程等等.
此方案并不是通用的, 但是有些方法可以借鑒, 同時(shí)也是希望能和大家一起討論幫忙指正.
三.類庫(kù)文件管理方案
存放根路徑: src\Assembly\resource.eLong.Web.Files\Resource\JSLib\jquery\
引用根路徑: http://resource.elong.com/JSLib/jquery/
壓縮版本引用路徑: http://resource.elong.com/JSLib/jquery/jquery-min-lastest.js
根路徑文件列表:
在每一個(gè)Web工程項(xiàng)目下面建立js文件夾, 放置 jquery-vsdoc-lastest.js 文件:
說(shuō)明:
首先將所有版本的jQuery類庫(kù)放到靜態(tài)服務(wù)器上, 并且按照文件夾存放類庫(kù)文件. 但是會(huì)選出來(lái)一個(gè)最新版本作為引用并且放置在根目錄.
根目錄下面包含如下文件:
名稱 | 內(nèi)容 | 說(shuō)明 |
文件夾1.3.2 | 按照版本號(hào)組織的jQuery類庫(kù). | 對(duì)于1.3.2即以后的每個(gè)jquery版本, 會(huì)按照文件夾存放類庫(kù)文件. 但是會(huì)用最新的穩(wěn)定版本覆蓋各lastest名稱的js文件. |
文件夾plugin | 存放插件的文件夾 | 將各種插件以文件夾的形式存放到此路徑下 |
jquery.extend-lastest.js | elong自己擴(kuò)展的jQuery方法 | 未來(lái)我們將打造自己的javascript類庫(kù).其中有一些核心的類庫(kù)放在此文件中. 相當(dāng)于我們自己的工具類庫(kù). 通過(guò)擴(kuò)展jQuery實(shí)現(xiàn). 主要分為工具函數(shù)和包裝集函數(shù)兩類. |
jquery-lastest.js | jQuery未壓縮類庫(kù)最新版本 | 最新的穩(wěn)定版本的jQuery原始類庫(kù). |
jquery-min-lastest.js | jQuery壓縮類庫(kù)最新版本 | 最新的穩(wěn)定版本的jQuery壓縮類庫(kù). |
jquery-vsdoc-lastest.js | jQuery智能提示類庫(kù)最新版本 | 最新的穩(wěn)定版本的jQuery智能提示類庫(kù). |
為了在開(kāi)發(fā)時(shí)實(shí)現(xiàn)智能感知, 還需要將智能感知版本放置在每個(gè)web項(xiàng)目的js文件夾中. 因?yàn)閃eb項(xiàng)目眾多所以請(qǐng)以后第一個(gè)使用者建立此文件夾并放入文件.
四.類庫(kù)引用方案
在所有的頁(yè)面head中, 最先引用jQuery的類庫(kù), 使用絕對(duì)路徑:
http://resource.elong.com/JSLib/jquery/jquery-min-lastest.js
然后通過(guò)if(fasle)引入智能提示版本的腳本塊. 路徑使用"~"從根目錄開(kāi)始查找. 我在各個(gè)頻道的項(xiàng)目源代碼中統(tǒng)一建立js文件夾并且放置jquery-vsdoc-lastest.js最新的智能感知版本類庫(kù). 注意此文件不需要打包上傳, 僅用于開(kāi)發(fā)時(shí)的智能提示.
這樣可以確保編譯后的頁(yè)面只引入了壓縮版本的jQuery類庫(kù).
示例代碼:
<head runat="server"> <title>jQuery 引用方案</title> <script type="text/javascript" src="http://resource.elong.com/JSLib/jquery/jquery-min-lastest.js"></script> <% if (false){%> <script src="~/js/jquery-vsdoc-lastest.js" type="text/javascript"></script> <% }%> </head>
說(shuō)明:
在我們的網(wǎng)站中, 靜態(tài)文件存儲(chǔ)在另外一個(gè)二級(jí)域名resource.elong.com下, 使用了CDN. 為了保證測(cè)試環(huán)境和正式環(huán)境一致只能使用絕對(duì)路徑引用jQuery庫(kù). 但是使用絕對(duì)路徑引用jQuery智能提示版本后不會(huì)出現(xiàn)腳本智能提示. 所以我們通過(guò)此特性直接引用絕對(duì)路徑的壓縮版本jQuery類庫(kù), 從而巧妙的解決了1.3.2壓縮版本引入后智能提示系統(tǒng)出錯(cuò)的問(wèn)題.
雖然動(dòng)態(tài)頁(yè)面可以通過(guò) if(false) 取消引入智能提示版本類庫(kù), 但是在HTML頁(yè)面上就無(wú)法使用服務(wù)器語(yǔ)句塊.所以對(duì)于HTML頁(yè)面需要在開(kāi)發(fā)完畢程序發(fā)布前手工刪除智能提示版本的引用.
五.開(kāi)發(fā)使用方案
jQuery是腳本庫(kù)而不是腳本框架, 無(wú)法限制使用者如何使用, 所以很容易讓頁(yè)面上的腳本變得混亂.
在沒(méi)有找到何時(shí)的腳本管理框架前, 使用如下方式在頁(yè)面上使用腳本:
1. 在頁(yè)面底部添加<script>區(qū)域, 兩個(gè)function分別放置 "事件綁定" 和 "加載時(shí)執(zhí)行" 的語(yǔ)句. 即使在加載時(shí)執(zhí)行的javascript也必須要保證DOM加載完畢后執(zhí)行. 所以兩個(gè)function都被嵌套在$()中保證在DOM加載完畢后調(diào)用.
2. 應(yīng)盡量避免在頭部加載腳本. 必須在頭部加載的可以在頁(yè)面head中添加一個(gè)script區(qū)域.
3."自定義函數(shù)"要放在"事件綁定"和"加載時(shí)執(zhí)行"語(yǔ)句塊之上, 并且不需要包含在$()中.
下面是一個(gè)完整頁(yè)面的示例代碼:
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>jQuery 引用方案</title> <script type="text/javascript" src="http://resource.elong.com/JSLib/jquery/jquery-min-lastest.js"></script> <% if (false){%> <script src="~/js/jquery-vsdoc-lastest.js" type="text/javascript"></script> <% }%> <script type="text/javascript"> //必須放在頭部加載的語(yǔ)句塊. 盡量避免使用 </script> </head> <body> <div id="divMsg">Hello World!</div> <input id="btnShow" type="button" value="顯示" /> <input id="btnHide" type="button" value="隱藏" /><br /> <input id="btnChange" type="button" value="修改內(nèi)容為 Hello World, too!" /> <script type="text/javascript" > //用戶自定義方法 function demoMethod(event) { $("#divMsg").hide(500); } //事件綁定 $(function() { $("#btnShow").bind("click", function(event) { $("#divMsg").show(500); }); $("#btnHide").bind("click", demoMethod); $("#btnChange").bind("click", function(event) { $("#divMsg").html("Hello World, too!"); }); }); //加載時(shí)執(zhí)行的語(yǔ)句 $(function() { $("#btnShow").attr("value", "被修改后的顯示按鈕") }); </script> </body> </html>
六.總結(jié)
在確認(rèn)了沒(méi)有公布任何保密信息后, 我發(fā)表了本文. 沒(méi)有太多技術(shù)含量, 主要是針對(duì)所在公司推廣jQuery的具體實(shí)施方法.
另外我一直想找一個(gè)成型的腳本框架用來(lái)組織管理各種js類庫(kù)和js文件. 這都需要在以后的工作中探索.
作者:張子秋
出處:http://www.cnblogs.com/zhangziqiu/
- 從零開(kāi)始學(xué)習(xí)jQuery (一) 開(kāi)天辟地入門篇
- 從零開(kāi)始學(xué)習(xí)jQuery (二) 萬(wàn)能的選擇器
- 從零開(kāi)始學(xué)習(xí)jQuery (三) 管理jQuery包裝集
- 從零開(kāi)始學(xué)習(xí)jQuery (四) jQuery中操作元素的屬性與樣式
- 從零開(kāi)始學(xué)習(xí)jQuery (五) jquery事件與事件對(duì)象
- 從零開(kāi)始學(xué)習(xí)jQuery (六) jquery中的AJAX使用
- 從零開(kāi)始學(xué)習(xí)jQuery (七) jQuery動(dòng)畫(huà)實(shí)現(xiàn) 讓頁(yè)面動(dòng)起來(lái)
- 從零開(kāi)始學(xué)習(xí)jQuery (九) jQuery工具函數(shù)
- 從零開(kāi)始學(xué)習(xí)jQuery (十) jQueryUI常用功能實(shí)戰(zhàn)
- 從零開(kāi)始學(xué)習(xí)jQuery (十一) 實(shí)戰(zhàn)表單驗(yàn)證與自動(dòng)完成提示插件
- jQuery的學(xué)習(xí)步驟
相關(guān)文章
jquery中獲得$.ajax()事件返回的值并添加事件的方法
如果想獲得$.ajax()中返回的值,直接用在success:funciton(){return xx} 是不可以的,要想獲得xx的值,要在script中,使用全局變量。利用全局變量引出xx的值。2010-04-04jQuery-App輸入框?qū)崿F(xiàn)實(shí)時(shí)搜索
這篇文章主要為大家詳細(xì)介紹了jQuery-App輸入框?qū)崿F(xiàn)實(shí)時(shí)搜索,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11jQuery實(shí)現(xiàn)為L(zhǎng)I列表前3行設(shè)置樣式的方法【2種方法】
這篇文章主要介紹了jQuery實(shí)現(xiàn)為L(zhǎng)I列表前3行設(shè)置樣式的方法,結(jié)合實(shí)例形式分析了css控制及jQuery元素獲取2種實(shí)現(xiàn)方法,需要的朋友可以參考下2016-09-09利用JQuery+EasyDrag 實(shí)現(xiàn)彈出可拖動(dòng)的Div,同時(shí)向Div傳值,然后返回Div選中的值
JQuery是一個(gè)優(yōu)秀的Javascript類庫(kù),使得我們?cè)?jīng)對(duì)JavaScript的痛恨不再,越來(lái)越喜歡上了JavaScript,而且更好的是他的plugin眾多.2009-10-10jQuery 中msgTips 頂部彈窗效果實(shí)現(xiàn)代碼
最近發(fā)現(xiàn)好多網(wǎng)站都采用頂部彈窗,并且不用用戶手動(dòng)去點(diǎn)擊確定。感覺(jué)這樣很方便用戶,下面小編把實(shí)現(xiàn)代碼分享給大家,感興趣的的朋友一起看看吧2017-08-08jQuery實(shí)現(xiàn)Ajax功能分析【與Flask后臺(tái)交互】
這篇文章主要介紹了jQuery實(shí)現(xiàn)Ajax功能,結(jié)合實(shí)例形式分析了jQuery ajax功能實(shí)現(xiàn)方法以及與Flask后臺(tái)進(jìn)行交互的相關(guān)操作技巧,需要的朋友可以參考下2019-06-06jQuery noConflict() 方法用法實(shí)例分析
這篇文章主要介紹了jQuery noConflict() 方法用法,結(jié)合實(shí)例形式分析了jQuery noConflict() 方法基本功能、用法及操作注意事項(xiàng),需要的朋友可以參考下2020-05-05jquery 取子節(jié)點(diǎn)及當(dāng)前節(jié)點(diǎn)屬性值
本節(jié)主要介紹了jquery如何取子節(jié)點(diǎn)及當(dāng)前節(jié)點(diǎn)屬性值,需要的朋友可以參考下2014-07-07jQuery validate 中文API 附validate.js中文api手冊(cè)
jQuery validate 中文API 附validate.js中文api手冊(cè)2010-07-07