使用Node.js开发App的步骤
-
创建项目目录
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()
定义
配置要公开暴露的静态资源
语法
express. static(_ dirname +'/public')
返回值
示例
app.use(express.static(path.join(__dirname,"public")));
知识点2:创建数据库
方案一:创建本地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"] })
-
方案二:创建云数据库
- 登录Atlas账户
- 创建数据库:greenblong
- 创建用户:ge Htow123456
知识点3:连接字符串
定义
连接字符串特指在App开发过程中连接数据库的地址
语法
"协议://用户名:密码@数据库地址/数据库名"
云数据库复制的连接字符串
从云数据库复制的连接字符串:
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
本地数据库的连接
"mongodb://ge:Htow123456@127.0.0.1:27107/greenblong"
"mongodb://ge:Htow123456@localhost:27107/greenblong"
知识点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是一个ODM(对象数据模型)。(Object Data Model)
- 使用JS对象的语法来映射MongoDB数据库中的表和document
- collection:数据库中的表。
- Document: 表中的一条记录
- 使用JS对象的语法来映射MongoDB数据库中的表和document
Schema()
- Schema()是一个构造函数。
- Schema()构造函数用于创建实例对象。
- 每一个
schema
实例对象映射一个MongoDB数据库表。- 定义表中的document结构
语法
new Schema(obj,options)
new Schema({定义数据库表结构},{选项对象:描述前面的表})
返回值
返回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
}
},{})
-
写出NPM一键初始化项目的命令
Npm init --yes
-
express.static()方法的用途
配置要公开暴露的静态资源
-
写出数据库连接字符串的语法格式:
"协议://用户名:密码@数据库地址/数据库名"
-
Node和MongoDB的通信方式有哪两种?
MongDB模块、Mongoose模块
-
写出创建本地数据库的四步骤
①启动MongDB数据库
②连接数据库
③创建数据库
④创建数据库用户
-
和本地数据库进行交互的方式有哪两种?
可视化compass、非可视化mongosh
-
Schema()是干什么用的?
- Schema()是一个构造函数。
- Schema()构造函数用于创建实例对象。
- 每一个
schema
实例对象映射一个MongoDB数据库表。- 定义表中的document结构
-
创建一个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 文件名
知识点
学会安装nodemon npm install -g nodemon
-
mongoose是什么
函数库
-
Schema是什么
定义数据结构模型
-
model是什么
数据模型
app.get
- app:是express()构造函数的实例对象,它表示一个应用程序(app)
- GET:处理get请求
app.post()
post处理post请求
语法
app.post()
app.post()
张三的博客项目总结
- 请问项目用到了哪些技术?
- Node.js
- Modules:
- CommonJS的模块化
- ECMAScript Module
- Modules:
- Expresss()框架
- MongoDB数据库
- Mongoose库
- Schema()
- Model()
- MVC:APP的设计模式/思想
- Model:模型(数据)
- View:视图
- Controller:控制器
- BootStrap:构建布局
- EJS:视图模版
- Node.js
NPM VS NPX
Npm : Node.js的软件包管理器(Node.js Package Manager )
NPX: Node.js的软件包执行器 (Node.js Package Executor)
express Generator
定义
express Generator是快速生成Express APP的脚手架。
Node.js APP 的开发步骤
第1步:项目初始化
- 创建package.json文件
mkdir myApp
cd myApp
npm init -y
- 创建项目目录结构
myApp
- models:存放数据模型模块 module.exports = Blog
- views: 存放ejs视图文件
- controllers: 存放控制器:处理请求的回调
- routes: 存放路由表
- public: 存放静态资源(图片、css、js、字体)
- app.js: 主文件(App入口)
- package.json: 描述App(app的名字、描述、关键字、版本、第三方依赖)
第2步:安装项目所需模块
- 第三方模块
- express: 构建node.js APP
- mongoose: 与mongoDB通信
- Ejs:创建视图
- 内置模块
- path
- fs
- 本地模块
- Model: 如: Blog数据模型
第步:创建app.js的基本结构
App.js
//引入模块
//实例化App
const app = express()
//配置app实例
app.use('',callback) //为指定路径注册回调函数
app.set(key, value) //设置一个值,为以后调用
//连接数据库
const uri = ''
mongoose.connect(uri)
.then()
.catch()
//配置路由
node开发的特点是模块化开发