-
创建项目目录
mkdir myapp cd myapp # 合并以上两步骤 mkdir myapp && cd myapp
-
初始化
npm init --yes //目的:创建package.json文件,该文件记录了项目项目信息及项目中所有使用的模块。
-
创建项目结构
myapp - views - public - routes - package.json - package-lock.json - app.js
-
安装模块
npm install express
-
引入模块
const express = require('express')
-
写需求
.....
网站根目录
-
根目录
VS用户根目录
\ ~
查看当前位置: pwd
项目根目录:访问权限设置为公开的、任何人都可以访问的。
public目录
定义
Public 目录是Node.js中存放网站静态文件的目录。静态文件包括:
- 图片
- css文件
- js文件
- 字体文件
mkdir public && cd public
mkdir css js images
Public : 公共的、共同的、公开
express框架
- 框架的核心是构造函数express()
- Express() 构造函数用于创建一个APP实例(服务器类型的app)
- express是基于Node.js平台
- Node.js平台是运行js文件的。
- Node.js项目目录
- index.js app.js server.js
- views
- html视图模版
- ejs视图引擎
- html视图模版
- public
- 引入静态资源
- 普通项目目录
- index.html
- css
- style.css
- js
- Script.js
知识点1:express.static()
定义
用于公开暴露公开的静态资源
语法
返回值
示例
知识点2:创建数据库
方案1:创建本地mongodb数据库
-
启动mongodb数据库
# window系统 服务 => 右键 => 启动 # Mac OS brew services start mongodb/brew/mongodb-community
-
连接数据库(怎么和数据库通信?)
- 可以使用可视化软件Compass
- 非可视化软件:mongosh
mongosh "mongodb://localhost:27017"
-
创建数据库: zhangsanblog
使用compass手动创建
-
使用mongosh手动创建
use zhangsanblog
-
创建数据库用户
-
语法
Db.createUser({ user: 'zhangsan', pwd: '123456', roles: [{ role:"readWrite",db:"config"},"clusterAdmin"], roles: ["readWrite"] })
-
方案2:创建云数据库
- 登录Atlas账户
- 创建数据库 :excblog
- 创建用户:excDB 密码:wl060221
知识点3:连接字符串
定义
连接字符串特指在App开发过程中连接数据库的地址。
语法
"协议://用户名:密码@数据库地址/数据库名"
云数据库的连接字符串
从云数据库复制的连接字符串:
'mongodb+srv://<username>:<password>@zhangsanblog.4t6hj0s.mongodb.net/?retryWrites=true&w=majority'
用你的用户名和密码替换<username>和<password>
'mongodb+srv://excDB:wl060221@excblog.crob53e.mongodb.net/?retryWrites=true&w=majority'
本地数据库的连接字符串
"mongodb://excDB:wl060221@127.0.0.1:27107/excblog"
"mongodb://excDB:wl060221@localhost:27107/excblog"
知识点4:Node和MongoDB的通信
通信方式有两种:
- Mongodb模块:
- mongodb模块是Node.js原生提供的与mongoDB数据库通信的API。
- Mongoose模块:
- 是第三方提供的在Node平台与MongoDB数据库通信的方式。
- Mongoose是一个库。
- 库:就是函数的集合。
- Mongoose库包裹Node API。
知识点5:使用Mongoose模块连接数据库
const mongoose = require('mongoose')
mongoose.connect(uri)
.then((result) => {
console.log('数据库已经连接')
})
.catch( err => console.log(err))
mongoose是什么
- mongoose的核心是mongoose()构造函数
- mongoose是一个对象数据模型。(object Data Model)
- 使用JS对象的语法来映射MongoDB数据库中的表和document
- collection:数据库中的表。
- Document:表中的一条记录
- 使用JS对象的语法来映射MongoDB数据库中的表和document
Schema()
- Schema()是一个构造函数。
- Schema()构造函数用于创建实例对象。
- 每一个
schema
实例对象映射一个MongoDB数据库表。- 定义表中的document结构
语法
语法
new Shema(obj,options)
new Shema({定义数据表结构},{选项对象:描述前面的表})
返回值
返回Schema对象
示例:创建一个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
}
},{})})
连接数据库
打开app.js
文件