最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nodejs+express實(shí)現(xiàn)文件上傳下載管理網(wǎng)站

 更新時(shí)間:2017年03月15日 09:23:06   作者:Qcer  
這篇文章主要為大家詳細(xì)介紹了nodejs+express實(shí)現(xiàn)文件上傳下載管理的網(wǎng)站,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

nodejs+express-實(shí)現(xiàn)文件上傳下載管理的網(wǎng)站

項(xiàng)目Github地址:https://github.com/qcer/updo

后端:基于nodejs的express的web框架.

前端:bootstrap框架+vuejs、jquery等js庫

功能點(diǎn):

  1. dronzone.js實(shí)現(xiàn)文件拖拽上傳、下載,可自定義傳輸容量。
  2. vuejs實(shí)現(xiàn)表格雙向數(shù)據(jù)綁定。
  3. jquery.form.min.js表單插件,升級(jí)表單,實(shí)現(xiàn)表單提交回調(diào)。
  4. 純css+jQuery實(shí)現(xiàn)一鍵返回頂部。
  5. 簡單的ajax異步刷新。

項(xiàng)目結(jié)構(gòu)總覽:

app/:典型的MVC架構(gòu),其下包含模型(models),視圖(views),控制器(controller),不過此處沒有用到models層,完全是試圖與控制器進(jìn)行數(shù)據(jù)的交互。前端頁面用jade前端模板引擎編寫,因?yàn)閖ade可以很好的支持頁面的模塊化,套用bootstrap前端框架。

config/:應(yīng)用的配置目錄,包括靜態(tài)目錄的配置,數(shù)據(jù)庫的配置等,不多說。

freedom/:其下有兩個(gè)字子目錄(hidden/和upload/),其中hidden/目錄存放文件上傳后存放的目錄位置。

node_modules/:項(xiàng)目依賴的nodejs第三方模塊,不多說。

public/:存放靜態(tài)文件的目錄(css文件,js文件,圖片)。

詳細(xì)功能點(diǎn)描述:

1、左側(cè)導(dǎo)航欄選中背景加深

這部分實(shí)現(xiàn)是簡單粗暴,借助jQuery選擇器遍歷id為main-name下面的li標(biāo)簽當(dāng)li標(biāo)簽的子標(biāo)簽a的href屬性等于當(dāng)前頁面的href時(shí),首先去除兄弟li標(biāo)簽的active類,再添加當(dāng)前l(fā)i標(biāo)簽的class為active。

在某些情況下,也可以通過給a標(biāo)簽綁定點(diǎn)擊事件,當(dāng)發(fā)生點(diǎn)擊事件時(shí),設(shè)置li標(biāo)簽的class為active,但是此時(shí)a標(biāo)簽中帶有超鏈接,點(diǎn)擊之后,固然可以將li標(biāo)簽的class的active,但是隨即頁面發(fā)生跳轉(zhuǎn),頁面再次被刷新,效果消失。因此,通過jQuery改變頁面效果僅當(dāng)前頁面有效,一旦頁面刷新,便不再有效。

局部代碼:

2、文件列表實(shí)現(xiàn)

后臺(tái):

通過fs模塊的readdirSync同步函數(shù)讀取freedom/upload/目錄下的所有文件名,再根據(jù)文件名遍歷文件每個(gè)文件的詳細(xì)信息,此處調(diào)用fs模塊的statSync同步函數(shù)。

局部代碼:

重要的信息有累計(jì)毫秒數(shù)(valueOf()獲取),文件名,文件大小,文件最近改變時(shí)間(ctime)。最后在調(diào)用Array.sort()根據(jù)累計(jì)毫秒數(shù)降序排序。注意sort此時(shí)需要傳入自定義排序規(guī)則的回調(diào)函數(shù)。

前端:

前端列表以jade模板引擎和vuejs相結(jié)合,v-for指令遍歷從后端發(fā)送過來的列表數(shù)據(jù)列表,由于vuejs天生支持MVVC模式,視圖與數(shù)據(jù)模型的雙向數(shù)據(jù)綁定變得自然而然。刪除分別通過v-on指令綁定兩個(gè)點(diǎn)擊事件。

前端列表局部代碼:

vue實(shí)例代碼:

其中fileDelete()f方法通過post的方式發(fā)送數(shù)據(jù)到后端,后端響應(yīng)最新的文件列表數(shù)據(jù)回來,進(jìn)而更新model層的數(shù)據(jù),由于model層數(shù)據(jù)與視圖通過view-model層聯(lián)系實(shí)現(xiàn)綁定,文件列表內(nèi)容的改變會(huì)直接反映到網(wǎng)頁上,實(shí)現(xiàn)局部更新的效果。準(zhǔn)確的講,這里雖然實(shí)現(xiàn)了雙向綁定,實(shí)際上只用到了model向view方向的單項(xiàng)綁定。

fileDownload()方法則直接一文件名作為一個(gè)參數(shù),拼接一個(gè)url,重定到該url,后端更具該url調(diào)用下載方法即可。

刪除和下載的后臺(tái)代碼:

3、文件拖拽上傳

前端:

實(shí)現(xiàn)文件拖拽的效果借助于一個(gè)前端插件dronzone.js實(shí)現(xiàn),從前端層面看來,本質(zhì)上與表單上傳并無差異,都可以通過psot方法發(fā)送數(shù)據(jù)。

綁定一個(gè)上傳成功后的回調(diào)函數(shù),函數(shù)中通過post想后臺(tái)請(qǐng)求最新的文件列表數(shù)據(jù),更新vue實(shí)例的data屬性,view層通過數(shù)據(jù)綁定實(shí)現(xiàn)數(shù)據(jù)局部更新效果。

后端:

后端通過psot方法接受數(shù)據(jù),并通過multiparty第三方模塊接解析數(shù)據(jù),將前端發(fā)送過里的文件以一個(gè)隨即字符串作為文件名存放在freedom/upload/目錄下,在調(diào)用fs的renameSync方法更改為正確的文件名,最后記得調(diào)用res.end()結(jié)束傳輸連接,否則前端頁面一直處于等待狀態(tài)。

4、白板復(fù)制粘貼的功能

前端:

直接在表單中嵌入一個(gè)textarea標(biāo)簽,給按鈕綁定點(diǎn)擊事件實(shí)現(xiàn)提交,通過post方法向后端發(fā)送文本數(shù)據(jù),提交成功后通過Jquery實(shí)現(xiàn)局部異步刷新提交的內(nèi)容,顯示在頁面上。此處拋棄form默認(rèn)的提交功能,因?yàn)槟J(rèn)的提交動(dòng)作不能實(shí)現(xiàn)提交回調(diào)操作,自定義帶有異步回調(diào)的submit動(dòng)作。

局部代碼:

異步回調(diào)的submit有多重實(shí)現(xiàn)方式

方式一:通過jquery.form.min.js插件實(shí)現(xiàn)

方式二:DIY實(shí)現(xiàn)

但是此處有點(diǎn)不好地方在與,js代碼與html代碼存在耦合,通過vuejs來重構(gòu)可以實(shí)現(xiàn)兩者的解耦。

提交后臺(tái)代碼:

同時(shí)為了動(dòng)態(tài)增加textarea空間的功能,增加一個(gè)按鈕,并綁定點(diǎn)擊事件,通過jQuery實(shí)現(xiàn)。

5、一鍵返回頂部功能

存css實(shí)現(xiàn)+jquery實(shí)現(xiàn),

通過Jquery改變css屬性,控制器是否顯示,鼠標(biāo)滑過時(shí)的背景顏色變化,以及點(diǎn)擊時(shí)返回頂部的動(dòng)作。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Egg框架的功能、原理,以及基本使用方法概述

    Egg框架的功能、原理,以及基本使用方法概述

    這篇文章主要介紹了Egg框架的功能、原理,以及基本使用方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Egg框架的基本功能、原理、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2023-04-04
  • node.js連接mongoose數(shù)據(jù)庫方法詳解

    node.js連接mongoose數(shù)據(jù)庫方法詳解

    之前我們都是通過shell來完成對(duì)數(shù)據(jù)庫的各種操作的,在開發(fā)中大部分時(shí)候我們都需要通過程序來完成對(duì)數(shù)據(jù)庫的操作。而Mongoose就是一個(gè)讓我們可以通過Node來操作MongoDB的模塊
    2022-08-08
  • Node.js抓取中文網(wǎng)頁亂碼問題和解決方法

    Node.js抓取中文網(wǎng)頁亂碼問題和解決方法

    這篇文章主要介紹了Node.js抓取中文網(wǎng)頁亂碼問題和解決方法,本文講解了使用一些開源庫解決抓取中出現(xiàn)的亂碼問題,需要的朋友可以參考下
    2015-02-02
  • Node.js中的async?和?await?關(guān)鍵字微任務(wù)和宏任務(wù)

    Node.js中的async?和?await?關(guān)鍵字微任務(wù)和宏任務(wù)

    這篇文章主要介紹了Node.js中的async和await關(guān)鍵字微任務(wù)和宏任務(wù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • node.js文件的復(fù)制、創(chuàng)建文件夾等相關(guān)操作

    node.js文件的復(fù)制、創(chuàng)建文件夾等相關(guān)操作

    這篇文章主要給大家介紹了node.js文件的復(fù)制、創(chuàng)建文件夾等相關(guān)操作,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • nodejs檢測(cè)因特網(wǎng)是否斷開的解決方案

    nodejs檢測(cè)因特網(wǎng)是否斷開的解決方案

    這篇文章主要給大家介紹了關(guān)于nodejs如何檢測(cè)因特網(wǎng)是否斷開的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 關(guān)于Sequelize連接查詢時(shí)inlude中model和association的區(qū)別詳解

    關(guān)于Sequelize連接查詢時(shí)inlude中model和association的區(qū)別詳解

    這篇文章主要介紹了關(guān)于Sequelize連接查詢時(shí)inlude中model與association的區(qū)別,文中介紹的很詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Node.JS中的模塊、exports和module講解

    Node.JS中的模塊、exports和module講解

    這篇文章主要介紹了Node.JS中的模塊、exports和module講解,模塊分為兩類一類是核心模塊一類是文件模塊,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件

    node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件

    這篇文章主要介紹了node.js 基于 STMP 協(xié)議和 EWS 協(xié)議發(fā)送郵件的示例,幫助大家更好的理解和使用node.js,感興趣的朋友可以了解下
    2021-02-02
  • 前端node Session和JWT鑒權(quán)登錄示例詳解

    前端node Session和JWT鑒權(quán)登錄示例詳解

    關(guān)于前端鑒權(quán)登錄是比較常見的需求了,本文將從服務(wù)端渲染和前后端分離的不同角度下演示鑒權(quán),為大家介紹前端node Session和JWT鑒權(quán)登錄示例詳解
    2022-07-07

最新評(píng)論

古浪县| 綦江县| 精河县| 衡水市| 哈密市| 碌曲县| 新野县| 铁岭市| 邵阳县| 栾城县| 许昌县| 同心县| 赤壁市| 石楼县| 黄石市| 葵青区| 东台市| 封开县| 元江| 咸宁市| 保山市| 安西县| 苍南县| 阳春市| 荆门市| 黔江区| 望都县| 景宁| 元谋县| 长子县| 从江县| 怀化市| 营口市| 青川县| 江津市| 肇州县| 大宁县| 田林县| 金昌市| 兰西县| 左云县|