Nodejs和Mongodb

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()
发布了4 篇原创文章 · 获赞 19 · 访问量 235

猜你喜欢

转载自blog.csdn.net/Jiwangwang/article/details/99711280
今日推荐