Deno初体验:一个简单的MVC案例
Deno 是一个 JavaScript/TypeScript 的运行时,默认使用安全环境执行代码,有着卓越的开发体验。Deno 含有以下功能亮点:
默认安全。外部代码没有文件系统、网络、环境的访问权限,除非显式开启。
支持开箱即用的 TypeScript 的环境。
只分发一个独立的可执行文件(deno)。
有着内建的工具箱,比如一个依赖信息查看器(deno info)和一个代码格式化工具(deno fmt)。
有一组经过审计的 标准模块,保证能在 Deno 上工作。
脚本代码能被打包为一个单独的 JavaScript 文件。
Deno 是一个跨平台的运行时,即基于 Google V8 引擎的运行时环境,该运行时环境是使用 Rust 语言开发的,并使用 Tokio 库来构建事件循环系统。
着手进入Demo的Hello World开发!
如何安装 Deno:https://github.com/denoland/deno_install
安装后在控制台中输入 deno --version 查看版本号,如果有显示则为安装正常!
初体验 Deno MVC 案例:
resources.ts
/**公共资源引用 */ export * from "https://deno.land/x/[email protected]/mod.ts"; export * from "https://deno.land/x/[email protected]/mod.ts";
database.ts
/**MySQL 数据库连接 请按照自有数据库对应相关库名*/
import { Database } from "../resources.ts";
const defaultMySQLOptions = {
database: "test", // mysql 数据库
host: "127.0.0.1", // mysql host
username: "root", // mysql 帐号
password: "root", // mysql 密码
port: 3306, // mysql 端口
};
const getMySQLConnection = (options = {}, debug = false): Database => {
const connection: Database = new Database(
{
dialect: "mysql",
disableDialectUsageDeprecationWarning: true,
debug,
},
{
...defaultMySQLOptions,
...options,
},
);
return connection;
};
export { getMySQLConnection };server.ts
/**服务入口 */
import { Application } from "./resources.ts";
import ArticleController from "./controller/article.ts";
import TimeController from "./controller/time.ts";
const app = new Application();
const port = 8000;
app
.static("/", "./public") // 静态资源
// 相关API
.get("/api/nowtime", TimeController.getNowTime)
.get("/api/article", ArticleController.findAll) // 测试URL:http://localhost:8000/api/article?limit=15
.get("/api/article/:id", ArticleController.findById) // 测试URL:http://localhost:8000/api/article/1
.start({ port: port }); // 启动端口
// 首页地址 http://localhost:8000/index.html
console.log(
`start successfully. you can visit it on http://localhost:${port}`,
);index.html首页样式预览
完整demo下载:
链接:https://gitee.com/wolf18/deno_mvc
声明:版权所有,违者必究 | 如未注明,均为原创 | 本网站采用 BY-NC-SA 协议进行授权
转载:转载请注明原文链接,违者必究 - :https://www.wolfcode.net/info/219/


