node创建web服务的相关知识

常用知识

  1. 创建 Web 服务器
  //创建一个 Web 服务器
  var http = require('http')
  var server = http.createServer()   
  server.on(function (req,res) {
  	console.log('收到客户端的请求了,请求路径是:' + req.url)
  	if (req.url === '/'){
  	   res.write('hello world')
  	   res.end()
  	 }else if (req.url === '/login'){
  	 	res.end('login page')
  	 }
  })
  
  // 绑定端口号,启动服务器
  server.listen(3000, function () {
 	 console.log('App running at 3000...')
  })

在这里就不说get、post请求。因为开发都是用框架的,没有框架写起来太麻烦了。下面就express框架来讲讲。
2. 利用express创建web服务器
首先下载express npm i express 然后加载express

var express = require('express')
var app = express()
var bodyParser = require('body-parser')   //加载post请求要的中间件
//配置post请求要的中间件
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.get('/',function(req,res){
	console.log(req.query) //获取get请求提交的数据
	//以下响应只能写一个,一个请求只能响应一次
	res.send('hello world')  //响应数据
	res.status(200).json({name:value})  //响应数据
	res.redirect('/login')  //重定向
})
app.post('/',function(req,res){
	//post 请求要使用到中间件bodyParser,要加载进来
	console.log(req.body)   //获取post请求提交的数据
})

express开放静态资源:

//第一个参数不写时,请求的url也就没有,是虚拟的路径
app.use('/public/',express.static(path.join(__dirname,'./public/')))

333
3. 文件读写
文件的有两个模块很重要分别是fs path 这两个模块
文件的读出:

fs.readFile(path.join(__dirname,'test.txt'),'utf-8',function(err,data){
	if (err) {
		return console.log(err)
	}
	console.log(data) //如果没有utf-8那个参数的话,要打印data.toString()
})

文件的写入:

fs.writeFile(path.join(__dirname,'test.txt'),'hello world',function(err){
	if (err) {
		return console.log(err)
	}
})

当然还有许多的操作文件的方法,详情请移步 API文档

__dirname  //动态获取当前文档的绝对路径
__filename  //动态获取当前文档的绝对路径包括文件名
path.parse('filepath')   
//返回filepath的一路径对象 ,
//对象属性 dir:不包文件名扩展名的路径;  base:文件名扩展名;name:文件名;ext:扩展名;root:/

444
4.一些常用到的第三方模块

express-session   //session工具
//先下载 npm i express-session
//然后引包 var session = require('express-session')
//配置 app.use(session({secret: 'hello',resave: false,saveUninitialized: false}))
//使用 req.session
art-template    //模板引擎
//先下载 npm i art-template  express-art-template
//配置 app.engine('html', require('express-art-template'))
//配置app.set('views', path.join(__dirname, './views/')) //默认从views 目录获取
//使用 res.render('index.html')
connect-busboy  //node接收文件
//先下载 npm i connect-busboy
//然后引包var busboy = require('connect-busboy')
//配置 app.use(busboy{})
//使用
 req.busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
      file.on('end', function () {
      //数据库操作
       })
  });
req.pipe(req.busboy);

555
5.模块化开发`

项目目录

app.js //入口文件 不处理路由 处理全局的配置、路由挂载
public //这个目录是用户资源  css、js、img
models   //数据模型,也就是数据库的表 user.js、orders.js
views    //页面文件 index.html 、login.html
routes   //路由处理  
static    //静态资源文件 
//---------------------------路由挂载------------------------
//处理路由文件routes/user.js
var router = express.Router()
router.get('/',function(){})
module.exports = router
//app.js
var user = require('./routes/user')
app.use(user)

666
6. MongoDB

var mongoose = require('mongoose')   //利用第三方模块mongoose
mongoose.connect('mongodb://localhost/test',{ useNewUrlParser: true }) //test为数据库,没有会自动创建
var Schema = mongoose.Schema
var userSchema = new Schema({
    email:{
        type:String,
        required:true
    }
    //填写相关数据
})
module.exports = mongoose.model('User',userSchema)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值