文章目录
nodejs服务器
nodejs核心模块http
1、如果要使用node开启服务器,那么必须有HTTP功能。
let http = require( ' http ' ) //引入http模块 只要安装了node就有核心模块
http模块含有一个功能:http.createServer() //开启服务器
let httpObj = http..createServer((req, res ) => { //被用户请求该服务器时执行
//req表示前段到后台发送的信息
//res表示后台给前段返回的信息
res.send() //停止
})
2、监听访问地址
httpObj.listen(3000)
nodejs核心模块url
const http = require('http');
1、引入核心模块url
const url = require('url');
// url.parse(str[, bool]) //将url地址解析成为一个对象,bool代表可选参数,默认值为false,如果值为true,表示query选项是一个对象
http.createServer((req, res) => {
if (req.url !== '/favicon.ico') { //滤掉浏览器中的图标
//浏览器地址
// http://localhost:3000/login?username=wudaxun&password=123456
// const query = url.parse(req.url, true).query;
const { query } = url.parse(req.url, true); // es6中的解构赋值 和上面一行代码相同
res.writeHead(200, { //200代表请求成功
'Content-Type': 'text/html;charset=utf-8' //text/html 代表如果输出内容有标签,需要解析
})
// res.write(query); // write的参数必须是string或者buffer
res.write(JSON.stringify(query));
res.end();
}
}).listen(3000)
2、url.parse各种信息
url.parse(req.url, true).query获取到参数信息
url.parse(req.url, true).pathname获取到路由信息
url.parse(req.url, true).port获取到端口号
url.parse(req.url, true).protocol获取到协议信息
url.parse(req.url, true).hostname获取到域名信息
nodejs核心模块_querystring
1、querystring.parse(str) //将字符串形式的参数解析成为一个对象
例:
querystring.parse('course=node&class=1902')
输出结果为:{ course: 'node', class: '1902' }
const http = require('http');
const url = require('url');
const querystring = require('querystring');
// url.parse(str[, bool])
http.createServer((req, res) => {
if (req.url !== '/favicon.ico') {
// http://localhost:3000/login?username=wudaxun&password=123456
const { query } = url.parse(req.url); // "username=wudaxun&password=123456"
const obj = querystring.parse(query); // { username: 'wudaxun', password: '123456'}
res.writeHead(200, {
'Content-Type': 'text/html;charset=utf-8'
})
// res.write(query);
res.write(JSON.stringify(obj));
res.end();
}
}).listen(3000)
服务器相关知识
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。
在网络环境下,根据服务器提供的服务类型不同,分为文件服务器、数据库服务器、应用程序服务器、WEB服务器等
express基础
使用express创建服务器
1、安装express
npm install express --save
npm install express -S
npm i express -S
可以使用淘宝镜像cnpm代替npm
在控制台中输入如下指令,以后即可使用cnpm代替npm
npm install -g cnpm --registry=https://registry.npm.taobao.org
2、创建一个express服务器
创建一个文件夹expressserver,进入文件夹并且安装express
mkdir expressserver
cd expressserver
cnpm i express -S
3、创建index.js
const express = require('express'); // 第三方模块 // 实例化一个express对象
const app = express();
app.get('/', (req, res) => {
res.send('hello 1902');
})
app.get('/login', (req, res) => { res.send('登录') })
app.get('/test', (req, res) => { res.send('测试') })
app.listen(3000, () => {
console.log('your server is running at http://localhost:3000');
})
假设浏览器地址栏中地址为
http://localhost:3000/login?username=wudaxun&password=123
匹配的是/login这个路由
nodejs原生: url.parse(req.url, true).query
express: req.query
app.get('/login', (req, res) => {
console.log(req.query) res.send('登录')
})
express生成器直接生成项目 — 脚手架
通过应用生成器工具 express-generator 可以快速创建一个应用的骨架
express-generator 包含了 express 命令行工具
1、安装express项目生成器
cnpm i express-generator -g
2、使用命令创建项目
–view=ejs 并不是必须得加的,如果不加,最终默认的模板是jade语法,相比ejs语法,jade语法的学习成本更高
npm/cnpm start可以启动服务器,是因为package.json文件中scripts选项做了配置
express proname --view=ejs
cd proname
cnpm i
cnpm start (node ./bin/www)
3、项目目录结构
* bin
www // 服务器 运行的入口文件 npm start – node ./bin/www
* node_modules // 在项目中需要使用到的第三方模块
* public // 静态的资源文件夹
images
javascripts
stylesheets
* routes // 路由或者是接口的定义
index.js
users.js
* views // 路由所对应的页面
error.ejs
index.ejs
* app.js // 应用各种中间件,设置静态资源文件夹,注册各个路由或者接口
* package.json // 描述文件,列举了项目需要使用到的依赖以及运行命令、版本号等
ejs模板的用法
EJS 是一套简单的模板语言,帮你利用普通的 JavaScript 代码生成 HTML 页面。EJS 没有如何组织内容的教条;也没有再造一套迭代和控制流语法;有的只是普通的 JavaScript 代码而已。
1、routes/index.js
router.get('/', function(req, res, next) {
res.render('index', {
title: '<mark>Express</mark>',
list: [ 'a', 'b', 'c', 'd'],
flag: true
});
});
2、前端ejs模板中使用变量
<%- title %> // 解析
<%= title %> // 转义 --- 原样输出
3、给一个页面导入一个代码片段(首页中导入共同头部)--- 包含语法
<%- include('./header.ejs') %>
4、条件判断
<% if (!flag) { %>
<ul>
<li>week1</li>
</ul>
<% } %>
5、循环语句
<% for (var i = 0; i < list.length; i++) { %>
<p><%- list[i] %></p>
<% } %>
mongodb
1、常见命令
* 打开数据库连接池
* mongod --dbpath d:\data\db
* 打开数据库命令行终端
mongo
db
2、创建数据库或者连接数据库
use sh1906
db.getCollectionNames()
db.createCollection(colName, {capped: true, size: 20, max: 100})
3-1、增
db.col.insert({}) / db.col.insert([{},{}])
db.col.insertOne({}) / db.col.insertMany([{},{}])
3-2、删
db.col.deleteOne({key:value}) / db.col.deleteMany({key: value})
3-3、改
db.col.updateOne({key: value}, { $set: {key: value}}) // updateMany
db.col.updateOne({key: value}, { $inc: {key: 1}}) // updateMany
3-4、查
db.col.find()
db.col.find({}, {}).pretty()
db.col.find({key: value}, {}).pretty()
db.col.find({key: value, key: value}, {}).pretty() // 且
db.col.find({$or: [{key:value}, {key:value}]}, {}).pretty() // 或
db.col.find({},{}).sort({key: 1}) // 升序
db.col.find({key: {$gt: 20, $lt: 50}}, {}).pretty()
db.col.find({}, {}).count()