版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、HTML5離線功能介紹HTML5是目前正在討論的新一代 HTML標(biāo)準(zhǔn),它代表了現(xiàn)在 Web領(lǐng)域的最新發(fā)展方向。在HTML5標(biāo) 準(zhǔn)中,加入了新的多樣的內(nèi)容描述標(biāo)簽,直接支持表單驗(yàn)證、視頻音頻標(biāo)簽、網(wǎng)頁(yè)元素的拖拽、離線存儲(chǔ) 和工作線程等功能。其中一個(gè)新特性就是對(duì)離線應(yīng)用開發(fā)的支持。在開發(fā)支持離線的 Web應(yīng)用程序時(shí),開發(fā)者通常需要使用以下三個(gè)方面的功能:1. 離線資源緩存:需要一種方式來(lái)指明應(yīng)用程序離線工作時(shí)所需的資源文件。這樣,瀏覽器才能在 在線狀態(tài)時(shí),把這些文件緩存到本地。此后,當(dāng)用戶離線訪問(wèn)應(yīng)用程序時(shí),這些資源文件會(huì)自動(dòng)加載,從而讓用戶正常使用。HTML5中,通過(guò)cache manifest
2、 文件指明需要緩存的資源,并支持自動(dòng)和手動(dòng)兩種緩存更新方式。2. 在線狀態(tài)檢測(cè):開發(fā)者需要知道瀏覽器是否在線,這樣才能夠針對(duì)在線或離線的狀態(tài),做岀對(duì)應(yīng) 的處理。在 HTML5中,提供了兩種檢測(cè)當(dāng)前網(wǎng)絡(luò)是否在線的方式。3. 本地?cái)?shù)據(jù)存儲(chǔ):離線時(shí),需要能夠把數(shù)據(jù)存儲(chǔ)到本地,以便在線時(shí)同步到服務(wù)器上。為了滿足不同的存儲(chǔ)需求,HTML5 提供了 DOM Storage 和 Web SQL Database兩種存儲(chǔ)機(jī)制。前者提供了易用的key/value對(duì)存儲(chǔ)方式,而后者提供了基本的關(guān)系數(shù)據(jù)庫(kù)存儲(chǔ)功能。盡管HTML5還處于草稿狀態(tài),但是各大主流瀏覽器都已經(jīng)實(shí)現(xiàn)了其中的很多功能。Chrome、Firefo
3、x、Safari和Opera的最新版本都對(duì) HTML5離線功能提供了完整的支持。IE8也支持了其中的在線狀態(tài)檢 測(cè)和DOM Storage 功能。下面將具體介紹HTML5離線功能中的離線資源緩存、在線狀態(tài)檢測(cè)、DOMStorage和 Web SQL Database ,最后通過(guò)一個(gè)簡(jiǎn)單的Web程序說(shuō)明使用 HTML5開發(fā)離線應(yīng)用的方法?;仨?yè)首離線資源緩存為了能夠讓用戶在離線狀態(tài)下繼續(xù)訪問(wèn) Web應(yīng)用,開發(fā)者需要提供一個(gè) cache manifest文件。這個(gè)文 件中列岀了所有需要在離線狀態(tài)下使用的資源,瀏覽器會(huì)把這些資源緩存到本地。本節(jié)先通過(guò)一個(gè)例子展 示cache manifest文件的用途
4、,然后詳細(xì)描述其書寫方法,最后說(shuō)明緩存的更新方式。cache mani fest示例我們通過(guò) W3C提供的示例來(lái)說(shuō)明。Clock Web 應(yīng)用由三個(gè)文件 “clock.html、” “clock.css和“clock.js組成。清單1. Clock 應(yīng)用代碼<!- clock.html ->v!DOCTYPE HTML><html><head><title>Clock</title><script src="clock.js"></script><li nk rel二"
5、stylesheet" href="clock.css"></head>vbody><p>The time is: <output id="clock"></output></p></body> </html>/* clock.css */output font: 2em san s-serif; /* clock.js */setTimeout(fu nctio n () docume nt.getEleme ntByld('clock
6、39;).value = new Date。;當(dāng)用戶在離線狀態(tài)下訪問(wèn)“clock.html時(shí),頁(yè)面將無(wú)法展現(xiàn)。為了支持離線訪問(wèn),開發(fā)者必須添加cachemanifest文件,指明需要緩存的資源。這個(gè)例子中的 cache manifest 文件為“clock.manifest,它聲明了 3個(gè)需要緩存的資源文件“clock.html、“clock.css和“clock.js?!鼻鍐?2. clock.manifest代碼CACHE MANIFESTclock.htmlclock.cssclock.js添加了 cache manifest文件后,還需要修改“clock.html,"把<
7、;html> 標(biāo)簽的manifest屬性設(shè)置為“clock.manifest。修改后的 “ clock.html代碼如下。清單 3.設(shè)置 manifest 后的 clock.html 代碼<!- clock.html ->v!DOCTYPE HTML><html mani fest二"clock.ma ni fest"><head><title>Clock</title><script src="clock.js"></script><li nk rel
8、二"stylesheet" href二"clock.css"</head><body><p>The time is: voutput id="clock"></output></p>v/body>v/html>修改后,當(dāng)用戶在線訪問(wèn) “clock.html時(shí),瀏覽器會(huì)緩存 “clock.html、“clock.css和“clock.js文件;而當(dāng)用戶離線訪問(wèn)時(shí),這個(gè)Web應(yīng)用也可以正常使用了。cache mani fest格式下面說(shuō)明書寫 cache man
9、ifest 文件需要遵循的格式。1. 首行必須是 CACHE MANIFEST。2. 其后,每一行列岀一個(gè)需要緩存的資源文件名。3. 可根據(jù)需要列岀在線訪問(wèn)的白名單。白名單中的所有資源不會(huì)被緩存,在使用時(shí)將直接在線訪問(wèn)。聲明白名單使用 NETWORK :標(biāo)識(shí)符。4. 如果在白名單后還要補(bǔ)充需要緩存的資源,可以使用CACHE :標(biāo)識(shí)符。5. 如果要聲明某 URI不能訪問(wèn)時(shí)的替補(bǔ) URI ,可以使用FALLBACK :標(biāo)識(shí)符。其后的每一行包含兩個(gè)URI,當(dāng)?shù)谝粋€(gè) URI不可訪問(wèn)時(shí),瀏覽器將嘗試使用第二個(gè)URI。6. 注釋要另起一行,以 #號(hào)開頭。清單4的代碼中給出了 cache manifest中
10、各類標(biāo)識(shí)符的使用示例。清單 4. cache manifest示例代碼CACHE MANIFEST#上一行是必須書寫的。images/so un d-ic on.pngimages/backgro un d.p ngNETWORK:comm.cgi#下面是另一些需要緩存的資源,在這個(gè)示例中只有一個(gè)css 文件。CACHE:style/default.cssFALLBACK:/files/projects /projects更新緩存應(yīng)用程序可以等待瀏覽器自動(dòng)更新緩存,也可以使用Javascript接口手動(dòng)觸發(fā)更新。1. 自動(dòng)更新瀏覽器除了在第一次訪問(wèn)Web應(yīng)用時(shí)緩存資源外,只會(huì)在 cache m
11、anifest文件本身發(fā)生變化時(shí)更新緩存。而 cache manifest中的資源文件發(fā)生變化并不會(huì)觸發(fā)更新。2. 手動(dòng)更新開發(fā)者也可以使用window.applicationCache的接口更新緩存。方法是檢測(cè)window.applicationCache.status 的值,如果是 UPDATEREADY,那么可以調(diào)用 window.applicationCache.update()更新緩存。示范代碼如下。清單5手動(dòng)更新緩存if (wi ndow.applicatio nCache.status = win dow.applicatio nCache.UPDATEREADY)win dow
12、.applicati on Cache.updateO;回頁(yè)首在線狀態(tài)檢測(cè)如果 Web應(yīng)用程序僅僅是一些靜態(tài)頁(yè)面的組合,那么通過(guò)cache manifest緩存資源文件以后,就可以支持離線訪問(wèn)了。但是隨著互聯(lián)網(wǎng)的發(fā)展,特別是Web2.0概念流行以來(lái),用戶的提交的數(shù)據(jù)漸漸成為互聯(lián)網(wǎng)的主流。那么在開發(fā)支持離線的Web應(yīng)用時(shí),就不能僅僅滿足于靜態(tài)頁(yè)面的展現(xiàn),還必需考慮如何讓用戶在離線狀態(tài)下也可以操作數(shù)據(jù)。離線狀態(tài)時(shí),把數(shù)據(jù)存儲(chǔ)在本地;在線以后,再把數(shù)據(jù)同步到服務(wù) 器上。為了做到這一點(diǎn),開發(fā)者首先必須知道瀏覽器是否在線。HTML5提供了兩種檢測(cè)是否在線的方式:navigator.online 和 on
13、line/offline 事件。1. navigator.onLinenavigator.onLine屬性表示當(dāng)前是否在線。如果為 true,表示在線;如果為 false,表示離線。當(dāng)網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí),navigator.onLine的值也隨之變化。開發(fā)者可以通過(guò)讀取它的值獲取網(wǎng)絡(luò)狀態(tài)。2. online/offline 事件當(dāng)開發(fā)離線應(yīng)用時(shí),通過(guò)navigator.onLine獲取網(wǎng)絡(luò)狀態(tài)通常是不夠的。開發(fā)者還需要在網(wǎng)絡(luò)狀態(tài)發(fā)生變化時(shí)立刻得到通知,因此HTML5還提供了 online/offline 事件。當(dāng)在線/離線狀態(tài)切換時(shí),online/offline 事件將觸發(fā)在 body 元素上
14、,并且沿著document.body、document 和window 的順序冒泡。因此,開發(fā)者可以通過(guò)監(jiān)聽(tīng)它們的online/offline 事件來(lái)獲悉網(wǎng)絡(luò)狀態(tài)?;仨?yè)首DOM Storage在開發(fā)支持離線功能的 Web應(yīng)用時(shí),開發(fā)者需要在本地存儲(chǔ)數(shù)據(jù)。當(dāng)前瀏覽器支持的cookie雖然也可以用來(lái)存儲(chǔ)數(shù)據(jù),但是cookie長(zhǎng)度非常小(通常幾k),而且功能有限。因此,HTML5中新引入了DOMStorage機(jī)制,用于存儲(chǔ) key/value對(duì),它的設(shè)計(jì)目標(biāo)是提供大規(guī)模、安全且易用的存儲(chǔ)功能。DOM Storage 分類DOM Storage 分為兩類:sessionStorage 和localSt
15、orage。除了以下區(qū)別外,這兩類存儲(chǔ)對(duì)象的功能是 完全一致的。1. sessionStorage用于存儲(chǔ)與當(dāng)前瀏覽器窗口關(guān)聯(lián)的數(shù)據(jù)。窗口關(guān)閉后, sessionStorage 中存儲(chǔ)的數(shù)據(jù)將無(wú)法使用。2. localStorage用于長(zhǎng)期存儲(chǔ)數(shù)據(jù)。窗口關(guān)閉后,localStorage中的數(shù)據(jù)仍然可以被訪問(wèn)。所有瀏覽器窗口可以共享localStorage的數(shù)據(jù)。DOM Storage 接口每一個(gè) Storage 對(duì)象都可以存儲(chǔ)一系列 key/value 對(duì),Storage 接口定義為:in terface Storage read only attribute un sig ned long
16、len gth;getter DOMString key(in unsigned long index);getter any getltem(in DOMStri ng key);setter creator void setItem(in DOMString key, in any data);deleter void removeItem(in DOMStri ng key);void clear。;其中最常用的接口是getltem 和setitem 。 getltem 用于獲取指定 key的value,而 setitem 用于設(shè)置指定 key 的 value。DOM Storage 示
17、例這里給出一個(gè)使用了 sessionStorage 的例子,localStorage 的用法與它相同。首先使用SetItem添加了 一個(gè)名為“userNamW的項(xiàng),它的值是 “developerworks ”然后,調(diào)用getItem 得到“userNamW的值,并且 彈出提示框顯示它。最后,調(diào)用removeItem 刪除“userNamW。清單6 DOM Storage示例代碼<!DOCTYPE HTML<html><body><script>/ 在 sessionStorage中定義'userName' 變量sessi on Stor
18、age.setitem('userName', 'developerworks');/ 訪問(wèn)'userName' 變量alert("Your user is: " + sessi on Storage.getltem('userName');/ 最后刪除'userName'sessi on Storage.removeltem('userName');</script></body></html>回頁(yè)首Web SQL Database除了 DO
19、M Storage 以外,HTML5中還有另外一種數(shù)據(jù)存儲(chǔ)方式Web SQL Database 。它提供了基本的關(guān)系數(shù)據(jù)庫(kù)功能,支持頁(yè)面上的復(fù)雜的、交互式的數(shù)據(jù)存儲(chǔ)。它既可以用來(lái)存儲(chǔ)用戶產(chǎn)生的數(shù)據(jù),也可以作為從服務(wù)器獲取數(shù)據(jù)的本地高速緩存。例如可以把電子郵件、日程等數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。Web SQLDatabase支持?jǐn)?shù)據(jù)庫(kù)事務(wù)的概念,從而保證了即使多個(gè)瀏覽器窗口操作同一數(shù)據(jù),也不會(huì)產(chǎn)生沖突。Web SQL Database基本用法1. 創(chuàng)建和打開數(shù)據(jù)庫(kù)使用數(shù)據(jù)庫(kù)的第一步是創(chuàng)建并打開數(shù)據(jù)庫(kù),API是openDatabase 。當(dāng)數(shù)據(jù)庫(kù)已經(jīng)存在時(shí),openDatabase僅僅打開數(shù)據(jù)庫(kù);如果這個(gè)
20、數(shù)據(jù)庫(kù)不存在,那么就創(chuàng)建一個(gè)空數(shù)據(jù)庫(kù)并且打開它。openDatabase 的定義是:Database ope nDatabase(in DOMStri ng name, in DOMStri ng versio n,in DOMString displayName, in unsigned long estimatedSize,in opti onal Databasecallback creati on Callback);name :數(shù)據(jù)庫(kù)名。version :數(shù)據(jù)庫(kù)版本。displayName :顯示名稱。estimatedSize :數(shù)據(jù)庫(kù)預(yù)估長(zhǎng)度(以字節(jié)為單位)。creationCa
21、llback :回調(diào)函數(shù)。1. 執(zhí)行事務(wù)處理在打開數(shù)據(jù)庫(kù)以后,就可以使用事務(wù)API transaction。每一個(gè)事務(wù)作為操作數(shù)據(jù)庫(kù)的原子操作,不會(huì)被打斷,從而避免了數(shù)據(jù)沖突。transaction的定義是:void tran sacti on (i n SQLTra nsacti on Callback callback,in opti onal SQLTra nsacti on ErrorCallback errorCallback,in optio nal SQLVoidCallback successCallback);callback :事務(wù)回調(diào)函數(shù),其中可以執(zhí)行SQL語(yǔ)句。erro
22、rCallback :出錯(cuò)回調(diào)函數(shù)。 successCallback :執(zhí)行成功回調(diào)函數(shù)。2. 執(zhí)行SQL語(yǔ)句在事務(wù)的回調(diào)函數(shù)callback中,可以執(zhí)行 SQL語(yǔ)句,API是executeSQL。executeSQL 的定義是:void executeSql(in DOMStri ng sqlStateme nt,in opti onal ObjectArray argume nts, in opti onal SQLStateme ntCallback callback,in optio nal SQLStateme ntErrorCallback errorCallback);sqlSt
23、atement : SQL 語(yǔ)句。arguments : SQL語(yǔ)句需要的參數(shù)。callback :回調(diào)函數(shù)。 errorCallback :出錯(cuò)回調(diào)函數(shù)。Web SQL Database 示例下面通過(guò)一個(gè)例子說(shuō)明Web SQL Database 的基本用法。它首先調(diào)用openDatabase創(chuàng)建了名為“fooDB'的數(shù)據(jù)庫(kù)。然后使用transaction執(zhí)行兩條SQL語(yǔ)句。第一條 SQL語(yǔ)句創(chuàng)建了名為“foo的表,第二條SQL語(yǔ)句向表中插入一條記錄。清單 7 Web SQL Database示例代碼var db = ope nDatabase('fooDB',
24、9;1.0', 'fooDB', 2 * 1024);db.tra nsact ion(fun cti on (tx) tx.executeSql('CREATE TABLE IF NOT EXISTS foo (id uni que, text)');tx.executeSql('INSERT INTO foo (id, text) VALUES (1, "foobar")'););回頁(yè)首離線應(yīng)用示例最后,通過(guò)一個(gè)例子來(lái)說(shuō)明使用HTML5開發(fā)離線應(yīng)用的基本方法。這個(gè)例子會(huì)用到前面提到的離線資源緩存、在線狀態(tài)檢測(cè)和DO
25、M Storage 等功能。假設(shè)我們開發(fā)一個(gè)便簽管理的Web應(yīng)用程序,用戶可以在其中添加和刪除便簽。它支持離線功能,允許用戶在離線狀態(tài)下添加、刪除便簽,并且當(dāng)在線以后能夠 同步到服務(wù)器上。1. 應(yīng)用程序頁(yè)面這個(gè)程序的界面很簡(jiǎn)單,如圖1所示。用戶點(diǎn)擊“New Note”按鈕可以在彈出框中創(chuàng)建新的便簽,雙擊某便簽就表示刪除它。圖1.應(yīng)用程序頁(yè)面New Note Meeting Dinrier NBA Game這個(gè)頁(yè)面的源文件是index.html,它的代碼如清單8所示。清單8頁(yè)面HTML代碼<html man ifest二"no tes.ma nifest"><
26、;head><script type二"text/javascript" src="server.js"></script><script type二"text/javascript" src="data.js"></script><script type二"text/javascript" src="UI.js"></script><title>Note List</title&
27、gt;</head><body onl oad = "Sy ncWithServer()">vin put type二"butto n" value二"New Note" on click二"newNote()"><ul id="list">v/ul>v/body>v/html>在body中聲明了一個(gè)按鈕和一個(gè)無(wú)序列表。當(dāng)按下“New Note"按鈕時(shí),newNote函數(shù)將被調(diào)用,它用來(lái)添加一條新的便簽。而無(wú)序列表初始為空,它
28、是用來(lái)顯示便簽的列表。2. cache manifest 文件定義cache manifest文件,聲明需要緩存的資源。在這個(gè)例子中,需要緩存“index.html、”“server.js、"“data.js和"“Ul.js等"4 個(gè)文件。除了前面列出的“index.html外;“server.js、“data.js和“ Ul.js分別包含服務(wù)器相關(guān)、數(shù)據(jù)存儲(chǔ)和用戶界面代碼。cache manifest文件定義如下。清單 9 cache manifest 文件CACHE MANIFESTin dex.htmlserver.jsdata.jsUl.js3. 用戶界面
29、代碼用戶界面代碼定義在 UI.js中。清單10用戶界面代碼UI.jsfun cti on n ewNote()var title = wi mpt("New Note:"); if (title)add(title);function add(title)/ 在界面中添加addUIItem(title);/在數(shù)據(jù)中添加addDataItem(title);fun cti on remove(title)/從界面中刪除removeUIItem(title);/從數(shù)據(jù)中刪除removeDataItem(title);function addUIItem(titl
30、e)var item = docume nt.createEleme nt("li");item.i nn erHTML二title;var list = docume nt.getEleme ntByld("list");list.appe ndChild(item);fun cti on removeUIItem(title)var list = docume nt.getEleme ntByld("list");for (var i = 0; i < list.childre nen gth; i+) if(list.ch
31、ildre ni.i nn erHTML = title)list.removeChild(list.childre n i);UI.js中的代碼包含添加便簽和刪除便簽的界面操作。o 添加便簽2. 用戶點(diǎn)擊“ New Note按鈕,newNote 函數(shù)被調(diào)用。3. newNote 函數(shù)會(huì)彈出對(duì)話框,用戶輸入新便簽內(nèi)容。newNote 調(diào)用add函數(shù)。4. add函數(shù)分別調(diào)用addUIItem 和addDataltem添加頁(yè)面元素和數(shù)據(jù)。addDataltem代碼將在后面列岀。5. addUIItem函數(shù)在頁(yè)面列表中添加一項(xiàng)。并指明ondblclick事件的處理函數(shù)是remove ,使得雙擊操作
32、可以刪除便簽。o 刪除便簽7. 用戶雙擊某便簽時(shí),調(diào)用remove函數(shù)。8. remove函數(shù)分別調(diào)用 removeUIItem 和removeDataltem刪除頁(yè)面元素和數(shù)據(jù)。removeDataltem將在后面列出。9. removeUIItem函數(shù)刪除頁(yè)面列表中的相應(yīng)項(xiàng)。數(shù)據(jù)存儲(chǔ)代碼數(shù)據(jù)存儲(chǔ)代碼定義在data.js中。清單11數(shù)據(jù)存儲(chǔ)代碼data.jsvar storage = win dow'localStorage'fun cti on addDataltem(title)if (n avigator.o nLine) /在線狀態(tài)addServerltem(titl
33、e);else / 離線狀態(tài)var str = storage.getltem("toAdd");if(str = n ull)str = title;elsestr = str + "," + title;storage.setItem("toAdd", str);fun cti on removeDataltem(title)if (n avigator.o nLi ne) /在線狀態(tài)removeServerItem(title);else / 離線狀態(tài)var str = storage.getItem("toRemov
34、e");if(str = n ull)str = title;elsestr = str + "," + title;storage.setItem("toRemove", str);fun ctio n Syn cWithServer()/如果當(dāng)前是離線狀態(tài),不需要做任何處理if (n avigator.o nLine = false)retur n;var i = 0;/和服務(wù)器同步添加操作var str = storage.getltem("toAdd");if(str != n ull)var addltems =
35、str.split(",");for(i = 0; i<addltemsen gth; i+)addDataltem(addltemsi); storage.removeItem("toAdd");/和服務(wù)器同步刪除操作str = storage.getItem("toRemove");if(str != n ull)var removeltems = str.split(",");for(i = 0; i<removeltemsen gth; i+)removeDataItem(removeItems
36、i);storage.removeItem("toRemove");/刪除界面中的所有便簽var list = docume nt.getEleme ntByld("list");while(listastChild != list.firstElementChild)list.removeChild(list.lastChild);if(list.firstEleme ntChild)list.removeChild(list.firstEleme ntChild);/從服務(wù)器獲取全部便簽,并顯示在界面中var allItems = getServerItems();if(allltems !=&
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個(gè)人車位出租合同樣本(2篇)
- 服裝公司辦公室裝修合同
- 商業(yè)地產(chǎn)租賃居間協(xié)議樣本
- 保健食品配送合同范本
- 2025年度信息安全保密技術(shù)合作開發(fā)合同
- 人工智能監(jiān)理居間合同
- 服裝批發(fā)市場(chǎng)物流合同
- 橡膠行業(yè)融資居間合同范例
- 2025年度安防產(chǎn)品區(qū)域代理及市場(chǎng)推廣合同
- 2025年度信息安全保密合作協(xié)議
- GB/T 27697-2024立式油壓千斤頂
- 《消防機(jī)器人相關(guān)技術(shù)研究》
- 游泳館安全隱患排查
- 《媒介社會(huì)學(xué)》課件
- 項(xiàng)目設(shè)計(jì)報(bào)告范文高中
- 成人手術(shù)后疼痛評(píng)估與護(hù)理團(tuán)體標(biāo)準(zhǔn)
- zemax-優(yōu)化函數(shù)說(shuō)明書
- 2021年《民法典擔(dān)保制度司法解釋》適用解讀之擔(dān)保解釋的歷程
- 第02講 導(dǎo)數(shù)與函數(shù)的單調(diào)性(學(xué)生版)-2025版高中數(shù)學(xué)一輪復(fù)習(xí)考點(diǎn)幫
- 《醫(yī)療機(jī)構(gòu)工作人員廉潔從業(yè)九項(xiàng)準(zhǔn)則》專題解讀
- 湖南財(cái)政經(jīng)濟(jì)學(xué)院《常微分方程》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論