成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

node 學(xué)習(xí)筆記(3)--Express

lewif / 649人閱讀

摘要:執(zhí)行安裝依賴項,然后執(zhí)行啟動程序。模板的內(nèi)容保存在內(nèi)存中,性能會得到顯著提升。視圖查找當(dāng)或被調(diào)用時,會先檢查是否有文件在這個絕對路徑上。代碼清單修改了之前的實現(xiàn),給出照片被上傳時提供的名稱,比如

Express起步

安裝Express

一個最小的Express 程序

生成程序開發(fā)框架

package.json文件


Express猜不出你要用依賴項的哪個版本,所以你最好給出模塊的主要、次要及修
訂版本號,以免引入意料之外的bug。比如明確給出"express":"3.0.0"

要添加模塊的最新版,比如這里的EJS,可以在安裝時給npm傳入--save標(biāo)記。

得到

不管express(1)什么時候生成package.json文件,你都需要安裝依賴項(如圖8-9所示)。執(zhí)行npm
install安裝依賴項,然后執(zhí)行node app.js啟動程序。在瀏覽器中訪問http://localhost:3000查
看程序

Express驅(qū)動配置系統(tǒng)

設(shè)置環(huán)境變量

這些環(huán)境變量會出現(xiàn)在你程序里的process.env對象中

盡管環(huán)境變量NODE_ENV源自Express,但現(xiàn)在很多Node框架都用它通知Node程序它在什么環(huán)
境中,默認為開發(fā)環(huán)境。

如代碼清單8-3所示, app.configure()方法接受一個表示環(huán)境的可選字符串,以及一個函
數(shù)。當(dāng)環(huán)境與傳入的字符串相匹配時,回調(diào)函數(shù)會被立即調(diào)用;

Express視圖系統(tǒng)配置

改變查找目錄

_dirname:

改變默認視圖模板引擎
因為原先你通 -e 創(chuàng)建的程序,它會默認 用ejs 作為視圖模板;
通過下面的設(shè)置可以改變默認視圖模板

用文件擴展名指定模板引擎
通過加后綴名的方式強制改變默認模板

視圖緩存

生產(chǎn)環(huán)境中會默認啟用view cache設(shè)定,并防止后續(xù)的render()調(diào)用執(zhí)行硬盤I/O。

模板的內(nèi)容保存在內(nèi)存中,性能會得到顯著提升。

啟用這個設(shè)定的副作用是只有重啟服務(wù)器才能讓模板文件的編輯生效,所以在開發(fā)時會禁用它。

視圖查找

當(dāng)res.render()或app.render()被調(diào)用時, Express會先檢查是否有文件在這個絕對路徑上。

接著會找視圖目錄設(shè)定的相對路徑。

Express會嘗試使用index文件

視圖顯示

虛假照片數(shù)據(jù)

列表路由

添加photos.list路由
在./app.js中引入photos模塊,訪問你剛剛寫好的exports.list函數(shù)。
為了在首頁/中顯示照片,要把photos.list函數(shù)傳給app.get()方法,它會把路徑/上的HTTP GET方法
映射到這個函數(shù)上

寫照片列表視圖的模板

將數(shù)據(jù)輸出到視圖中的方法

將本地變量直接傳給res.render()

用app.locals傳遞程序?qū)用娴淖兞?br> Express默認只會向視圖中輸出一個程序級變量, settings,這個對象中包含所有用app.set()設(shè)定的值。比 如app.set("title", "My Application")會把settings.title輸出到模板中


為了方便, app.locals也被做成了一個JavaScript函數(shù)。當(dāng)有對象傳入時,所有的鍵都會被合并
如果你有一個輸出了幾個函數(shù)的Node模塊helpers.js,可以像下面這樣把所有函數(shù)輸出到視圖中:

用res.locals傳遞請求層面的本地變量

處理表單和文件上傳

實現(xiàn)照片上傳功能總共分三步:
? 定義照片模型;
? 創(chuàng)建照片上傳表單;
? 顯示照片列表。

設(shè)定照片上傳目的地址的定制配置項

實現(xiàn)照片模型

Mongoose的模型上有所有的CRUD方法(Photo.create、 Photo.update、 Photo.remove
和Photo.find),所以這樣就搞定了。

創(chuàng)建照片上傳表單
你要把照片目錄傳給POST處理器,并返回一個路由回調(diào),以便處理器可以訪問這個目錄。
把新路由添加到app.js中,放在默認(/)路由下面:

處理照片提交

multipart()中間件(包含在bodyParser中),它會給你一個req.files對象,代表上
傳的文件,并把這個文件保存到硬盤中。

你可以通過req.files.photo.image訪問這個對象。上傳表單中的輸入域, photo[name],可以通過req.body.photo.name訪問到

顯示上傳照片列表
用Mongoose提供的Photo.find獲取你上傳的照片

創(chuàng)建資源下載

創(chuàng)建照片下載路由 /photo/:id/download
在模板中添加標(biāo)記:

app.js中,在路由定義中找個你喜歡的地方把下面這條路由加進去:

實現(xiàn)照片下載路由

設(shè)定下載的文件名
你可以用res.download()的第二個參數(shù)定義一個定制的文件名,在下載時取代默認的原始
文件名。代碼清單8-21修改了之前的實現(xiàn),給出照片被上傳時提供的名稱,比如Flower.jpeg

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/89364.html

相關(guān)文章

  • 基于 Vue2+Node+mongoDB 的前后端分離全棧練手小項目

    摘要:本文源碼簡介之前剛?cè)腴T并做好了一個簡而全的純?nèi)彝暗捻椖?,?shù)據(jù)都是本地模擬請求的詳情請移步這里為了真正做到數(shù)據(jù)庫的真實存取,于是又開始入門了并以此來為之前的頁面寫后臺數(shù)據(jù)接口。 本文源碼:Github 簡介: 之前剛?cè)腴Tvue并做好了一個簡而全的純vue2全家桶的項目,數(shù)據(jù)都是本地 json 模擬請求的;詳情請移步這里:vue-proj-demo 為了真正做到數(shù)據(jù)庫的真實存取,于是又...

    jay_tian 評論0 收藏0
  • AI開發(fā)書籍分享

    摘要:編程書籍的整理和收集最近一直在學(xué)習(xí)深度學(xué)習(xí)和機器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后也找了很多的書和文章,隨著不斷的學(xué)習(xí),也整理了下自己的學(xué)習(xí)筆記準(zhǔn)備分享出來給大家后續(xù)的文章和總結(jié)會繼續(xù)分享,先分享一部分的 編程書籍的整理和收集 最近一直在學(xué)習(xí)deep learning深度學(xué)習(xí)和機器學(xué)習(xí)的東西,發(fā)現(xiàn)深入地去學(xué)習(xí)就需要不斷的去提高自己算法和高數(shù)的能力然后...

    huayeluoliuhen 評論0 收藏0

發(fā)表評論

0條評論

lewif

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<