express 源码实现(一)

express 源码实现(一)

1.首先说一下大概使用方式

const express = require('express'); 

const app = express(); // 执行函数返回一个app 应用
// 发起get 请求
app.get('/', function(req, res) {
	// 结束 返回内容
    res.end('home')
})
app.get('/about', function(req, res) {
    res.end('about')
})
// 监听 3000 端口
app.listen(3000,function () {
	// 成功后的回调函数
    console.log(`server start 3000`)
});

2.express 主要分三大部分
①创建应用层(包应用层)
②应用层(包路由层)
③路由层
2.1 实现组织建构
①创建应用层js文件

express.js 入口文件 创建createApplication构造函数,也就是创建应用层

const  Application = require('./application')
	function createApplication (){

	    const app = new Application();// 这个是应用层
	    return app
	}

创建应用层application.js 文件;
首要任务:
1.创建http 服务

	const http = require('http');
	const Router = require('./router');
	function Application(){
		// 这里创建一个router 实例,因为我只是创建应用层,路由的事件不归我管,交给专人处理
		this._router = new Router()
	}
	// 创建服务
	Application.protoType.listen = function(...args){// 接受参数,端口号,以及回调函数
		const server = http.createServer((req, res)=>{
		//请求到来时的回调函数,里面有请求方法,请求路径等等
		// 既然有请求方法请求路径,那我们可以根据这两个条件判断执行用户具体哪个回调函数
		  // 有可能路由系统无法处理,就让应用自己来处理
        function done() {
            res.end(`Cannot ${req.method} ${req.url}`)
        }
        // 交给路由来匹配规则
        this._router.handle(req, res, done)
		})
		server.listen(...args);
	}
	// 创建请求
	Application.protoType.get= function(path,handler){
		this._router.get(path,handler)
	}
	module.exports = Application;

2.创建router 函数,处理请求
router.js

	const url = require('url');
	function Router(){
		// 存储	Application 发过来 请求以及回调函数
		this.stack = [];
	}
	Router.protoType.get = function(path,handler){
		this.stack.push({path,handler,method:'get'})
	}
	Router.protoType.handle= function(path,handler){
		let { pathname } = url.parse(req.url);
    	let requestMethod = req.method.toLowerCase();
	    for (let i = 0; i < this.stack.length; i++) {
	        let { path, method, handler } = this.stack[i]
	        if ((pathname == path) && method === requestMethod) {
	            return handler(req, res);
	        }
	    }
	    	done();
	}

module.exports = Router;
### 回答1: Vue Express MySQL项目源码是一个使用Vue.js、Express和MySQL构建的全栈应用程序的代码库。该应用程序提供了一个用户管理系统,允许用户注册、登录和管理他们的个人资料。 项目的文件结构通常分为前端和后端两部分。前端使用Vue.js来构建用户界面,包括注册和登录表单、个人资料页面以及其他相关页面。前端文件夹中包含各种Vue组件,用于显示数据、处理用户输入以及与后端API进行通信。 后端使用Express框架来处理路由和请求,与MySQL数据库进行交互。后端文件夹中包含各种路由文件,用于处理用户注册、登录和个人资料的请求。此外,还有一个名为"db.js"的文件,用于建立与MySQL数据库的连接,并执行相关的数据库操作。 在前端和后端之间进行通信时,通常使用axios库来发送异步请求。前端组件会将用户提交的注册和登录数据发送到后端,后端将验证这些数据,并根据情况返回成功或失败的响应。用户登录成功后,后端将生成一个JSON Web Token(JWT),以便在后续的请求中进行身份验证。 此外,该项目还可以包括密码加密、表单验证、拦截器、错误处理等功能,以提高安全性和用户体验。 总之,Vue Express MySQL项目源码提供了一个完整的全栈应用程序的实现,具有用户注册、登录和管理功能,通过使用Vue.js、Express和MySQL等技术,能够实现前后端的数据交互和业务逻辑处理。 ### 回答2: Vue+Express+MySQL是一种常见的全栈开发技术栈,用于构建基于Web的应用程序。该技术栈的项目源码包括了前端vue框架、后端express框架以及数据库MySQL的代码。 Vue是一种流行的JavaScript框架,用于构建交互式的前端界面。Vue具有简单易学的API和灵活的组件化架构,使得开发者可以更快速地构建响应式的用户界面。 Express是一个基于Node.js的后端框架,用于构建和管理服务器端应用。Express具有轻量级、灵活和可扩展的特点,支持开发REST API和处理HTTP请求。 MySQL是一种关系型数据库管理系统,用于存储和管理数据。它具有开源、高性能和可靠的特点,广泛应用于各种规模的应用程序。 在Vue+Express+MySQL项目源码中,前端代码主要是使用Vue框架编写的组件和页面,用于实现用户界面和与后端交互。例如,可以编写Vue组件来呈现数据、处理用户输入和发起HTTP请求。 后端代码主要是使用Express框架编写的路由和逻辑处理部分,用于处理前端发起的HTTP请求并返回数据。例如,可以编写Express路由来处理用户登录请求、查询数据库并返回结果。 数据库部分主要是使用MySQL数据库来存储和管理数据。例如,可以创建表格来存储用户信息、商品信息等,并通过使用MySQL查询语言来实现数据的增删改查等操作。 综上所述,Vue+Express+MySQL项目源码包括了前端Vue代码、后端Express代码和数据库MySQL的代码,通过这些代码可以实现一个完整的全栈应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值