2.4.6 • Published 7 years ago

etmx v2.4.6

Weekly downloads
4
License
ISC
Repository
github
Last release
7 years ago

ETMX Typescritp Server Framework

Typescript node.js 服务器开发框架

声明

本人英文不好,莫笑。

Install(安装)

npm install -g etmx

Use ETMX(使用ETMX)

etmx create [project name]

Description(描述)

ETMX is a typescript server framework, base on express framework.

ETMX contains:

1、 Server(use this class to create a server)

2、 Router(use this class to create a router)

3、 RouterManager(use this class to manage routers)

4、 Database(use this class to handle database)

Configurations(配置)

ETMX use a .json file or a object like to configure server, configurations contains:

  • server ------ server base configurations

    	*  port ------ port of web server listen, default is 3000
    
    	 *  protocol ------ http or https, default is http
    
    	 *  https ------ if https protocol used, configure this field
    
    		 *   cert ------ ssl cert
    
    		 *   key ------ private key of cert
    
    	 *  path ------ this configurations contains used paths of server
    
    	 *   cache ------ path of cache directory, default is /temp/etmx
    
    	 *   static ------ path of static resources directory(s),
    
    	 *   view ------ path of view, if you don't hav views, ignore it
    
    	 *  cross ------ is cross-domain, default is false
    
    	 *  favicon ------ path of favicon image
    
    	 *  websocket ------ use web socket, default is false
    
    	 *  log ------ is request log show, default is true
  • database ------ database configurations

    	 *  type ------ database type, default is mysql, but now, only mysql can be used
    
    	 *  host ------ database host, default is localhost
    
    	 *  port ------ database port, this will use default port of database that you set
    
    	 *  user ------ database user
    
    	 *  password ------ password of database user
    
    	 *  db ------ database to use
    
    	 *  charset ------ charset of mysql to use, default is utf8
    
    	 *  timezone ------ timezone of mysql to use, default is local

Create Route(创建路由)

use Router class to create a router, example:

import {Router} from 'etmx';

let router = new Router();

router
	//set router name
	.name('/main')
	//hello world
	.get('/test', (req, res, next) => {
		res.end('Hello world');
	})
	//mysql query
	.get('/user/:number/:name', (req, res, next) => {
		// use router.mysql.xxxx to handle mysql
		// use easy to create a mysql connection, this method can release connection automatically when connection unused.
		router.mysql.easy(async mysql => {
			try {
				let data = await mysql.query('select * from ??', 'user');
				res.json(data);
			} catch (e) {
				console.log(e);
			}
		});
	});
//must use export default to export a router
export default router;

Create server(创建服务器)

Now, let's create a server and start it

import {Server, RouterManager} from 'etmx';
import * as path from 'path';

//set path of server configurations
Server.confdir = path.join(__dirname, './');
//set server root file directory
Server.rootdir = __dirname;

//create a server use etmx.json file
let server = new Server('etmx');

//set routers
server.routers = app => {
	//create a router manager whit directory of current file
	let manager = new RouterManager(__dirname);
	//use manager.router = xxxx to add a router
	[
		'./Main',
	].forEach(_r => manager.router = _r);
	//manager.routers to get all routers
	return manager.routers;
};

//use create method to create a server
server.create();

How to use websocket (websocket使用)

Etmx provide a easy way to create and manage websocket, to use websocket you should do:

  • open serverconfig set websocket field a true value
  • create a websocet handler
  • open your webserver entry file and add websocket handler

:::notice:if your webserver use https websocket is wss://, if http websocket is ws://

webscket setting like:

{
	"server": {
		"websocket":true
	}
}

websocket handler like:

import {WSHandler, WSManager} from './';


//this is websocket params
interface Props {
	uid:string,		//give a uid param to mark a user
	uname:string,	//user name
}

export class HandlerName extends WSHandler<Props> {

	onConnect() {
		//when a socket connect to server
		console.log(this.params.uid);
		//send a welcome message
		this.send({type:'welcome', message:'Welcome to join this room'});
	}

	onClose() {
		//when a socket closed
		//send a user leave message
		WSManager.handlers.forEach(handler=>{
			if(handler.params.uid == this.params.uid) return;
			handler.send({type:'leave', message:`[${this.params.uname}] left this room`})
		})
	}

	onMessage(message) {
		//when receive message
		//send message to all but myself
		WSManager.handlers.forEach(handler=>{
			if(handler.params.uid == this.params.uid) return;
			handler.send({type:'text', message:message});
		})
	}

}

the end, in entry file set

server.wsHandler = HandlerName;
2.4.6

7 years ago

2.4.5

7 years ago

2.4.4

7 years ago

2.4.3

7 years ago

2.4.2

7 years ago

2.4.1

7 years ago

2.4.0

7 years ago

2.3.2

7 years ago

2.3.1

7 years ago

2.3.0

7 years ago

2.2.8

7 years ago

2.2.7

7 years ago

2.2.6

7 years ago

2.2.5

7 years ago

2.2.4

7 years ago

2.2.3

7 years ago

2.0.1

7 years ago

2.0.0

7 years ago

1.2.3

7 years ago

1.2.2

7 years ago

1.2.1

7 years ago

1.2.0

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago