Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/cmorten/opine
Minimalist web framework for Deno ported from ExpressJS.
https://github.com/cmorten/opine
deno deno-doc deno-module denojs denoland express expressjs opine
Last synced: 7 days ago
JSON representation
Minimalist web framework for Deno ported from ExpressJS.
- Host: GitHub
- URL: https://github.com/cmorten/opine
- Owner: cmorten
- License: mit
- Created: 2020-05-19T10:20:52.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2024-01-28T09:41:46.000Z (about 1 year ago)
- Last Synced: 2024-10-29T17:11:38.773Z (3 months ago)
- Topics: deno, deno-doc, deno-module, denojs, denoland, express, expressjs, opine
- Language: TypeScript
- Homepage: https://github.com/cmorten/opine/blob/main/.github/API/api.md
- Size: 4.77 MB
- Stars: 854
- Watchers: 16
- Forks: 43
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS.md
- Security: SECURITY.md
Awesome Lists containing this project
README
Opine
A minimalist web framework for Deno ported from ExpressJS.
---
_**Now in maintenance mode:** Deno has introduced Node and NPM compat, [considering using Express itself in
Deno](https://deno.com/blog/v1.25#experimental-npm-support)!_```ts
import express from "npm:express";
```Express not working for you? [Raise an issue on Deno](https://github.com/denoland/deno/issues) and keep reading for Opine usage :tada:
---
## Table of Contents
- [Getting Started](#getting-started)
- [Installation](#installation)
- [Features](#features)
- [Documentation](#documentation)
- [Quick Start](#quick-start)
- [Philosophy](#philosophy)
- [Examples](#examples)
- [Contributing](#contributing)
- [License](#license)## Getting Started
```ts
import { opine } from "https://deno.land/x/[email protected]/mod.ts";const app = opine();
app.get("/", function (req, res) {
res.send("Hello World");
});app.listen(3000, () =>
console.log("server has started on http://localhost:3000 🚀")
);
```## Installation
This is a [Deno](https://deno.land/) module available to import direct from this
repo and via the [Deno Registry](https://deno.land/x).Before importing, [download and install Deno](https://deno.land/#installation).
You can then import Opine straight into your project:
```ts
import { opine } from "https://deno.land/x/[email protected]/mod.ts";
```Opine is also available on [nest.land](https://nest.land/package/opine), a
package registry for Deno on the Blockchain.```ts
import { opine } from "https://x.nest.land/[email protected]/mod.ts";
```## Features
- Robust routing
- Large selection of HTTP helpers including support for downloading / sending
files, etags, Content-Disposition, cookies, JSONP etc.
- Support for static serving of assets
- View system supporting template engines
- Content negotiation## Documentation
- [Opine Docs](https://github.com/cmorten/opine/blob/main/.github/API/api.md) -
usually the best place when getting started ✨
- [Opine Type Docs](https://cmorten.github.io/opine/)
- [Opine Deno Docs](https://doc.deno.land/https/deno.land/x/opine/mod.ts)
- [ExpressJS API Docs](https://expressjs.com/en/4x/api.html)
- [License](https://github.com/cmorten/opine/blob/main/LICENSE.md)
- [ExpressJS License](https://github.com/cmorten/opine/blob/main/EXPRESS_LICENSE.md)
- [Changelog](https://github.com/cmorten/opine/blob/main/.github/CHANGELOG.md)## Quick Start
The quickest way to get started with Opine is to utilize the
[Opine CLI](https://github.com/cmorten/opine-cli) to generate an application as
shown below:Install the executable. The executable's major version will match Opine's:
```bash
deno install -f -q --allow-read --allow-write --allow-net --unstable https://deno.land/x/[email protected]/opine-cli.ts
```And follow any suggestions to update your `PATH` environment variable.
Create the app:
```bash
opine-cli --view=ejs hello-deno && cd hello-deno
```Start your Opine app at `http://localhost:3000/`:
```bash
deno run --allow-net --allow-read --allow-env mod.ts
```## Philosophy
The [Express](https://github.com/expressjs/express) philosophy is to provide
small, robust tooling for HTTP servers, making it a great solution for single
page applications, web sites, hybrids, or public HTTP APIs.Opine aimed to achieve these same great goals, focussing on providing equivalent
robust tooling and features for Deno uses.Now Deno's [Node compatibility layer](https://deno.land/std/node/README.md) is
maturing sufficiently to support Express out of the box, Opine is operating
maintenance mode.## Examples
To run the [examples](./examples), you have two choices:
1. Run the example using Deno directly from GitHub, for example:
```bash
deno run --allow-net --allow-read https://raw.githubusercontent.com/cmorten/opine/main/examples/hello-world/index.ts
```1. Clone the Opine repo locally:
```bash
git clone git://github.com/cmorten/opine.git --depth 1
cd opine
```Then run the example you want:
```bash
deno run --allow-net --allow-read ./examples/hello-world/index.ts
```All the [examples](./examples) contain example commands in their READMEs to help
get you started for either of the above methods.## Contributing
[Contributing guide](https://github.com/cmorten/opine/blob/main/.github/CONTRIBUTING.md)
---
## License
There are several third party modules that have been ported into this module.
Each third party module has maintained it's license and copyrights. The only
exception is for Express, from which this entire module has been ported, whose
license and copyrights are available at [EXPRESS_LICENSE](./EXPRESS_LICENSE.md)
in the root of this repository, and cover all files within the [source](./src)
directory which not been explicitly licensed otherwise.All modules adapted into this module are licensed under the MIT License.
Opine is licensed under the [MIT License](./LICENSE.md).
Icon designed and created by
[Hannah Morten](https://www.linkedin.com/in/hannah-morten-b1218017a/).