2023-04-16

張三的博客項目總結(jié)

請問項目用到了哪些技術(shù)攻晒?

  • Node.js
  • Modules
  • CommonJS的模塊化
  • ECMAScript Module
  • Expresss()框架
  • MongoDB數(shù)據(jù)庫
  • Mongoose庫
  • Schema()
  • Model()
  • MVC:APP的設計模式/思想
    • Model:模型(數(shù)據(jù))
    • View:視圖
    • Controller:控制器
  • BootStrap:構(gòu)建布局
  • EJS:視圖模版
  • NPM VS NPX
    • Npm : Node.js的軟件包管理器(Node.js Package Manager )
    • NPX: Node.js的軟件包執(zhí)行器 (Node.js Package Executor)

express Generator

定義:

express Generator是快速生成Express APP的腳手架泼掠。
Node.js APP 的開發(fā)步驟

第1步:項目初始化

創(chuàng)建package.json文件(模塊包肌访,管理項目用到模板)

mkdir myApp 
cd myApp
npm init --yes
npm init -y第2步. 創(chuàng)建項目目錄結(jié)構(gòu)

myApp

  • models:存放數(shù)據(jù)模型模塊 module.exports = Blog
  • views: 存放ejs視圖文件
  • controllers: 存放控制器:處理請求的回調(diào)
  • routes: 存放路由表
  • public: 存放靜態(tài)資源(圖片妙同、css坝咐、js唧垦、字體)
  • app.js: 主文件(App入口)
  • package.json: 描述App(app的名字、描述煤禽、關(guān)鍵字、版本岖赋、第三方依賴)第3步:安裝項目所需模塊 一鍵安裝npm i express mongoose ejs express-ejs-layouts
    • express
    • mongoose
    • ejs
    • express-ejs-layouts

第4步:引入模塊(注意順序引入)

用戶界面

node.js

內(nèi)置模板

  • path:用于處理(拼接)路徑段檬果;
  • fs:用于處理文件系統(tǒng);
  • http:用于創(chuàng)建服務器;

第三方模板

  • express: 構(gòu)建node.js APP;
  • mongoose: 與mongoDB通信;
  • Ejs:創(chuàng)建視圖;嵌入式Javasript的hitml模板 -<% %>:注入動態(tài)數(shù)據(jù)(變量唐断、對象名选脊、函數(shù)名、語句)
  • nodemon:開發(fā)?
  • express--ejs-layouts:用于構(gòu)建視圖的模板脸甘;

第一步:安裝npm install ejs

  • 本地模塊
  • Model: 如: Blog數(shù)據(jù)模型
  • 模塊化 html沒有模塊的概念
  • css使用@import導入css模塊
  • 不要把所以的css都寫在一個文件里
  • 謹慎使用@import 規(guī)則(1.必須放在css文件首行 2.注意:不要引入字體)
  • @import會發(fā)起請求
  • ES 6使用 import 和export導入模塊
  • 第5步:創(chuàng)建app.js的基本結(jié)構(gòu)
 App.js
//引入模塊
const express=require('express')
//實例化App
const app = express() 
//配置app實例
app.use('',callback) //為指定路徑注冊回調(diào)函數(shù)
app.set(key, value) //設置一個值恳啥,為以后調(diào)用
//連接數(shù)據(jù)庫
const uri = ''
mongoose.connect(uri)
        .then()
        .catch()
//配置路由網(wǎng)站的基本·原理
搭建一個網(wǎng)站,需要做的三件事:
買一個域名:域名是ip地址的別名丹诀。域名管理面板下設置
域名解析:把ip地址綁定到域名上钝的;
買一個服務器:
每個服務器都是一個ip地址。
ip地址綁定一個域名铆遭。
編寫一套程序: -靜態(tài)網(wǎng)頁語言:HTMl css
動態(tài)網(wǎng)頁語言:index.pjp 硝桩、 index.jsp、 index.asp枚荣、 
默認頁:index.html index.thm index.php
網(wǎng)站工作原理
網(wǎng)站分為兩種: 靜態(tài)網(wǎng)站:沒有用到數(shù)據(jù)庫碗脊,我的數(shù)據(jù)寫死html頁面里;
html 不支持變量 動態(tài)網(wǎng)站:數(shù)據(jù)從數(shù)據(jù)里注入到頁面里橄妆;

<%- body %> : 寫了<%- body %>就相當于在其他文件里寫在body下的內(nèi)容都可以在這里接收到

<%- %>:輸出標簽

<%= %>:輸出字符串

// Task模型定義了許多和數(shù)據(jù)庫通信的方法:
// Task.find() 查詢?nèi)繑?shù)據(jù)
// Task.findById() 查詢指定ID的數(shù)據(jù)
// Task.save() 存儲數(shù)據(jù)
// Task.findByIdAndDlete() 根據(jù)指定ID刪除數(shù)據(jù)
// Task.findByIdAndUpdate() 根據(jù)指定ID修改數(shù)據(jù)

express的認識?

是什么

  • 基于Node.js平臺的框架

組成部分

  • Express()構(gòu)造函數(shù)
  • app實例對象
  • req請求對象
  • res響應對象
  • router對象(路由對象)

用途

  • 用于創(chuàng)建一個基于Node.js的應用程序(APP)
  • 主要用途:處理請求和響應

工作原理

  • 通過( router )建立( views(視圖) )和( mdel(數(shù)據(jù)) )之間的通信

請求方式

  • < from >表單只能發(fā)起兩種請求
  • GET請求:獲取數(shù)據(jù)的請求
  • POST請求:添加數(shù)據(jù)的請求

發(fā)起delete請求

  • 方法1.通過href發(fā)起一個GET請求衙伶,在服務端拿到id,根據(jù)id刪除數(shù)據(jù)
  • 方式2:使用Fetch API發(fā)起delete請求

語法

//注意:必須從瀏覽器端發(fā)起fetch請求
fetch('請求地址',{選項對象})
fetch('請求地址',{
    method: "DELETE"
})在服務端處理請求
router.delete('請求地址',(req,res) => {
    
})
發(fā)起put請求

什么是session

  • session指HTTP客戶端和服務端的會話祈坠。(瀏覽器 <==> 服務器)

Session的用途

  • HTTP是無狀態(tài)的
  • session用于處理HTTP通信狀態(tài)問題

session和cookkie的區(qū)別

  • session存儲在服務器的內(nèi)存里,cookie存儲在客戶端的瀏覽器里
  • 瀏覽器端的cookie是通過服務端的session創(chuàng)建的

在服務器創(chuàng)建session的語法

app.use(session({
     secret:'任意字符串',//secret:用于創(chuàng)sessionID(秘鑰)矢劲,sessionID存儲在瀏覽器的cookie里      
     cookie:{
         maxAge:毫秒數(shù),//maxAge決定了cookie的有效期
       }赦拘,
     resave:布爾值,//當session發(fā)生變化是是否需要重新存儲。建議flase
     saveUninitialized:布爾值//如果未完成初始化是否創(chuàng)建session卧须,建議true
 }))

express-session模塊如何創(chuàng)建cookie?

  • app.use(session({})) 創(chuàng)建一個session對象另绩,cookie是通過session對象創(chuàng)建的

記住一句話

在服務器端創(chuàng)建session,就在瀏覽器植入了一個cookie

  • 瀏覽器端的cookie只存儲sessionID花嘶,不存儲任何其他數(shù)據(jù)
  • sessionID是通過secret屬性生成一個加密的隨機的唯一的ID
  • 只要cookie植入完成笋籽,瀏覽器端發(fā)起的任何請求都會自動攜帶sessionID

所有的中間件函數(shù)都必須執(zhí)行next()函數(shù):跳轉(zhuǎn)到下一個中間件函數(shù)

req.session的用途是什么?

  • req.session用于向服務端的Session對象添加額外信息
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市椭员,隨后出現(xiàn)的幾起案子车海,更是在濱河造成了極大的恐慌,老刑警劉巖隘击,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件侍芝,死亡現(xiàn)場離奇詭異,居然都是意外死亡埋同,警方通過查閱死者的電腦和手機州叠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凶赁,“玉大人咧栗,你說我怎么就攤上這事∈蓿” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵咏窿,是天一觀的道長。 經(jīng)常有香客問我集嵌,道長,這世上最難降的妖魔是什么纸淮? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮咽块,結(jié)果婚禮上绘面,老公的妹妹穿的比我還像新娘。我一直安慰自己晚凿,他們只是感情好,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布瘦馍。 她就那樣靜靜地躺著歼秽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪情组。 梳的紋絲不亂的頭發(fā)上燥筷,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天,我揣著相機與錄音院崇,去河邊找鬼肆氓。 笑死,一個胖子當著我的面吹牛底瓣,可吹牛的內(nèi)容都是我干的谢揪。 我是一名探鬼主播,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼捐凭,長吁一口氣:“原來是場噩夢啊……” “哼拨扶!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起茁肠,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤患民,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后垦梆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體酒奶,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年奶赔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片杠氢。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡站刑,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鼻百,到底是詐尸還是另有隱情绞旅,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布温艇,位于F島的核電站因悲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏勺爱。R本人自食惡果不足惜晃琳,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧卫旱,春花似錦人灼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至适贸,卻和暖如春灸芳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拜姿。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工烙样, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砾隅。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓误阻,卻偏偏與公主長得像晴埂,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子儒洛,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Express是Node社區(qū)里的超級明星惊完,他的作者TJ Holowaychuk也因此成為了社區(qū)里大紅大紫的開發(fā)者处硬。...
    2MuchT閱讀 3,002評論 1 30
  • node.js 介紹 node.js是什么 node.js 是一個開發(fā)平臺,就像java開發(fā)平臺...何為開發(fā)平臺...
    小淺_閱讀 1,162評論 0 6
  • 張三的博客項目總結(jié) 請問項目用到了哪些技術(shù)荷辕? Node.js Modules CommonJS的模塊化 ECMAS...
    吃個板栗閱讀 37評論 0 0
  • Twitch 商城網(wǎng)站 介紹: 1疮方、Node.js搭建的網(wǎng)站,采用Mongodb數(shù)據(jù)庫2骡显、后臺框架 借用了 exp...
    Junting閱讀 910評論 0 0
  • Node.js的誕生 Nodejs的創(chuàng)始人Rayn Dahl發(fā)現(xiàn)PHP這種腳本語言,在處理網(wǎng)頁請求的時候承边,隨著訪問...
    我愛開發(fā)閱讀 698評論 0 0