4.3~4.8

使用Node.js開發(fā)App的步驟

  1. 創(chuàng)建項(xiàng)目目錄

    mkdir myapp
    cd myapp
    //合并以上兩步
    mkdir myapp && cd myapp
    
  2. 初始化

    npm init --yes //目的:創(chuàng)建package.json文件,該文件記錄了項(xiàng)目信息及項(xiàng)目中所有使用的模塊。
    
  3. 構(gòu)建項(xiàng)目結(jié)構(gòu)

    myapp
    - views
    - public
    - routes
    - package.json
    - package-lock.json
    - app.js
    
  4. 安裝模塊

    npm install express
    
  5. 引入模塊

    const express = require("express")
    
  6. 寫需求

    ......
    

網(wǎng)站根目錄

  1. 根目錄 VS 用戶根目錄

       \                  ~
    
  2. 查看當(dāng)前目錄:pwd

  3. 項(xiàng)目根目錄:訪問權(quán)限設(shè)置為公開、任何人都可以訪問的

public目錄

定義

Public 目錄是Node.js中存放網(wǎng)站靜態(tài)文件的目錄。靜態(tài)文件包括:

  • 圖片
  • css文件
  • js文件
  • 字體文件
mkdir public && cd public
mkdir css js images

Public : 公共的、共同的、公開

express框架

  • 框架的核心是構(gòu)造函數(shù)express()
  • Express() 構(gòu)造函數(shù)用于創(chuàng)建一個(gè)APP實(shí)例(服務(wù)器類型的app)
  • express是基于Node.js平臺
  • Node.js平臺是運(yùn)行js文件的。
  • Node.js項(xiàng)目目錄
    • index.js app.js server.js
    • views
      • html視圖模版
        • ejs視圖引擎
    • public
      • 引入靜態(tài)資源
  • 普通項(xiàng)目目錄
    • index.html
    • css
      • style.css
    • js
      • Script.js

知識點(diǎn)1:express.static()

定義

配置要公開暴露的靜態(tài)資源

語法

express. static(_ dirname +'/public')

返回值

示例

app.use(express.static(path.join(__dirname,"public")));

知識點(diǎn)2:創(chuàng)建數(shù)據(jù)庫

方案一:創(chuàng)建本地mongoDB數(shù)據(jù)庫

  1. 啟動mongodb數(shù)據(jù)庫

    # window系統(tǒng)
    服務(wù) => 右鍵 => 啟動
    # Mac OS
    brew services start mongodb/brew/mongodb-community 
    
  2. 連接數(shù)據(jù)庫(怎么和數(shù)據(jù)庫通信?)

    1. 可以使用可視化軟件Compass
    2. 非可視化軟件:mongosh
mongosh "mongodb://localhost:27017"
  1. 創(chuàng)建數(shù)據(jù)庫: zhangsanblog

    1. 使用compass手動創(chuàng)建

    2. 使用mongosh手動創(chuàng)建

      use zhangsanblog
      
  2. 創(chuàng)建數(shù)據(jù)庫用戶

    1. 語法

      Db.createUser({
        user: 'zhangsan',
        pwd: '123456',
        roles: [{ role:"readWrite",db:"config"},"clusterAdmin"],
        roles: ["readWrite"]
      })
      

方案二:創(chuàng)建云數(shù)據(jù)庫

  1. 登錄Atlas賬戶
  2. 創(chuàng)建數(shù)據(jù)庫:greenblong
  3. 創(chuàng)建用戶:ge Htow123456

知識點(diǎn)3:連接字符串

定義

連接字符串特指在App開發(fā)過程中連接數(shù)據(jù)庫的地址

語法

"協(xié)議://用戶名:密碼@數(shù)據(jù)庫地址/數(shù)據(jù)庫名"

云數(shù)據(jù)庫復(fù)制的連接字符串

從云數(shù)據(jù)庫復(fù)制的連接字符串:
mongodb+srv://ge:<password>@greenblong.7xfolev.mongodb.net/?retryWrites=true&w=majority
用你的用戶名和密碼替換<username>和<password>
mongodb+srv://ge:Htow123456@greenblong.7xfolev.mongodb.net/?retryWrites=true&w=majority

本地?cái)?shù)據(jù)庫的連接

"mongodb://ge:Htow123456@127.0.0.1:27107/greenblong"
"mongodb://ge:Htow123456@localhost:27107/greenblong"

知識點(diǎn)4:Node和MongoDB的通信

通信方式有兩種:

  • Mongodb模塊:
    • mongodb模塊是Node.js原生提供的與mongoDB數(shù)據(jù)庫通信的API。
  • Mongoose模塊:
    • 是第三方提供的在Node平臺與MongoDB數(shù)據(jù)庫通信的方式。
    • Mongoose是一個(gè)庫。
    • 庫:就是函數(shù)的集合。
    • Mongoose庫包裹Node API。

知識點(diǎn)5:使用Mongoose模塊連接數(shù)據(jù)庫

const mongoose = require('mongoose')

mongoose.connect(uri)
    .then((result) => {
        console.log('數(shù)據(jù)庫已經(jīng)連接')
    })
    .catch( err => console.log(err))

mongoose是什么

  • mongoose的核心是mongoose()構(gòu)造函數(shù)
  • mongoose是一個(gè)ODM(對象數(shù)據(jù)模型)。(Object Data Model)
    • 使用JS對象的語法來映射MongoDB數(shù)據(jù)庫中的表和document
      • collection:數(shù)據(jù)庫中的表。
      • Document: 表中的一條記錄

Schema()

  • Schema()是一個(gè)構(gòu)造函數(shù)。
  • Schema()構(gòu)造函數(shù)用于創(chuàng)建實(shí)例對象。
  • 每一個(gè)schema實(shí)例對象映射一個(gè)MongoDB數(shù)據(jù)庫表。
    • 定義表中的document結(jié)構(gòu)

語法

new Schema(obj,options)
new Schema({定義數(shù)據(jù)庫表結(jié)構(gòu)},{選項(xiàng)對象:描述前面的表})

返回值

返回schema對象

示例:創(chuàng)建一個(gè)blogSchema表,用來存儲博客的文章

const blogSchema = new Schema({
  title:{
    type: String,
    required: true
  },
  author:{
    type: String,
    required: true
  },
  snippet: {
    type: String,
    required: true
  },
  body:{
    type: String,
    required: true
  }
},{})
  1. 寫出NPM一鍵初始化項(xiàng)目的命令

    Npm init --yes

  2. express.static()方法的用途

    配置要公開暴露的靜態(tài)資源

  3. 寫出數(shù)據(jù)庫連接字符串的語法格式:

    "協(xié)議://用戶名:密碼@數(shù)據(jù)庫地址/數(shù)據(jù)庫名"

  4. Node和MongoDB的通信方式有哪兩種?

    MongDB模塊、Mongoose模塊

  5. 寫出創(chuàng)建本地?cái)?shù)據(jù)庫的四步驟

    ①啟動MongDB數(shù)據(jù)庫

    ②連接數(shù)據(jù)庫

    ③創(chuàng)建數(shù)據(jù)庫

    ④創(chuàng)建數(shù)據(jù)庫用戶

  6. 和本地?cái)?shù)據(jù)庫進(jìn)行交互的方式有哪兩種?

    可視化compass、非可視化mongosh

  7. Schema()是干什么用的?

    • Schema()是一個(gè)構(gòu)造函數(shù)。
    • Schema()構(gòu)造函數(shù)用于創(chuàng)建實(shí)例對象。
    • 每一個(gè)schema實(shí)例對象映射一個(gè)MongoDB數(shù)據(jù)庫表。
      • 定義表中的document結(jié)構(gòu)
  8. 創(chuàng)建一個(gè)user用戶表模型,字段:

    • username(必填),

    • password(必填)

    • email(可選),

    • phone(必填)

      const mongoose = require('mongoose');
      const {Schema} =  mongooseSchema({
        username: { type: String, required: true },
        password: { type: String, required: true },
        email: { type: String, required: true },
        phone: { type: String, required: true }
      })
      const User = mongoose.model('User', userSchema);
      module.exports = User;
      

自動刷新:node --watch 文件名

知識點(diǎn)

  1. 學(xué)會安裝nodemon npm install -g nodemon

  2. mongoose是什么

    函數(shù)庫

  3. Schema是什么

    定義數(shù)據(jù)結(jié)構(gòu)模型

  4. model是什么

     數(shù)據(jù)模型
    

app.get

  • app:是express()構(gòu)造函數(shù)的實(shí)例對象,它表示一個(gè)應(yīng)用程序(app)
  • GET:處理get請求

app.post()

post處理post請求

語法

app.post()
app.post()

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

  1. 請問項(xiàng)目用到了哪些技術(shù)?
    • Node.js
      • Modules:
        • CommonJS的模塊化
        • ECMAScript Module
    • Expresss()框架
    • MongoDB數(shù)據(jù)庫
    • Mongoose庫
      • Schema()
      • Model()
    • MVC:APP的設(shè)計(jì)模式/思想
      • 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步:項(xiàng)目初始化

  1. 創(chuàng)建package.json文件
mkdir myApp 
cd myApp
npm init -y
  1. 創(chuàng)建項(xià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)鍵字、版本、第三方依賴)

第2步:安裝項(xiàng)目所需模塊

  • 第三方模塊
    • express: 構(gòu)建node.js APP
    • mongoose: 與mongoDB通信
    • Ejs:創(chuàng)建視圖
  • 內(nèi)置模塊
    • path
    • fs
  • 本地模塊
    • Model: 如: Blog數(shù)據(jù)模型

第步:創(chuàng)建app.js的基本結(jié)構(gòu)

App.js

//引入模塊

//實(shí)例化App
const app = express() 

//配置app實(shí)例
app.use('',callback) //為指定路徑注冊回調(diào)函數(shù)
app.set(key, value) //設(shè)置一個(gè)值,為以后調(diào)用

//連接數(shù)據(jù)庫
const uri = ''
mongoose.connect(uri)
        .then()
        .catch()

//配置路由

node開發(fā)的特點(diǎn)是模塊化開發(fā)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1 命令行窗口 1.1. 命令行窗口(小黑屏)、CMD窗口、終端、shell 開始菜單 -> 運(yùn)行 -> cmd ...
    錦衣夜行001閱讀 1,899評論 0 1
  • 使用Node.js開發(fā)App的步驟 創(chuàng)建項(xiàng)目目錄mkdir myappcd myapp# 合并以上兩步驟mkdir...
    勞模閱讀 109評論 0 0
  • 使用Node.js開發(fā)App的步驟 創(chuàng)建項(xiàng)目目錄mkdir myappcd myapp# 合并以上兩步驟mkdir...
    勞模閱讀 130評論 0 0
  • 使用Node.js開發(fā)App的步驟 創(chuàng)建項(xiàng)目目錄mkdir myappcd myapp# 合并以上兩步驟mkdir...
    憂油魚閱讀 572評論 0 1
  • 創(chuàng)建項(xiàng)目目錄mkdir myappcd myapp# 合并以上兩步驟mkdir myapp && cd myapp...
    歸于無閱讀 417評論 0 0

友情鏈接更多精彩內(nèi)容