diff options
author | Luca Casonato <lucacasonato@yahoo.com> | 2020-05-07 00:21:13 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-06 18:21:13 -0400 |
commit | 34ec3b225425cecdccf754fbc87f4a8f3728890d (patch) | |
tree | 35db52bf25ccf64425692116197df61a69ea8838 /docs/introduction.md | |
parent | 846c049c9b3ab36d0893292a204c4d0a18de4c8e (diff) |
Multi page manual (#5110)
Diffstat (limited to 'docs/introduction.md')
-rw-r--r-- | docs/introduction.md | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/docs/introduction.md b/docs/introduction.md new file mode 100644 index 000000000..091cc7d6c --- /dev/null +++ b/docs/introduction.md @@ -0,0 +1,84 @@ +# Introduction + +Deno is a JavaScript/TypeScript runtime with secure defaults and a great +developer experience. + +It's built on V8, Rust, and Tokio. + +## Feature Highlights + +- Secure by default. No file, network, or environment access (unless explicitly + enabled). +- Supports TypeScript out of the box. +- Ships a single executable (`deno`). +- Has built-in utilities like a dependency inspector (`deno info`) and a code + formatter (`deno fmt`). +- Has + [a set of reviewed (audited) standard modules](https://github.com/denoland/deno/tree/master/std) + that are guaranteed to work with Deno. +- Scripts can be bundled into a single javascript file. + +## Philosophy + +Deno aims to be a productive and secure scripting environment for the modern +programmer. + +Deno will always be distributed as a single executable. Given a URL to a Deno +program, it is runnable with nothing more than +[the ~15 megabyte zipped executable](https://github.com/denoland/deno/releases). +Deno explicitly takes on the role of both runtime and package manager. It uses a +standard browser-compatible protocol for loading modules: URLs. + +Among other things, Deno is a great replacement for utility scripts that may +have been historically written with bash or python. + +## Goals + +- Only ship a single executable (`deno`). +- Provide Secure Defaults + - Unless specifically allowed, scripts can't access files, the environment, or + the network. +- Browser compatible: The subset of Deno programs which are written completely + in JavaScript and do not use the global `Deno` namespace (or feature test for + it), ought to also be able to be run in a modern web browser without change. +- Provide built-in tooling like unit testing, code formatting, and linting to + improve developer experience. +- Does not leak V8 concepts into user land. +- Be able to serve HTTP efficiently + +## Comparison to Node.js + +- Deno does not use `npm` + - It uses modules referenced as URLs or file paths +- Deno does not use `package.json` in its module resolution algorithm. +- All async actions in Deno return a promise. Thus Deno provides different APIs + than Node. +- Deno requires explicit permissions for file, network, and environment access. +- Deno always dies on uncaught errors. +- Uses "ES Modules" and does not support `require()`. Third party modules are + imported via URLs: + + ```javascript + import * as log from "https://deno.land/std/log/mod.ts"; + ``` + +## Other key behaviors + +- Remote code is fetched and cached on first execution, and never updated until + the code is run with the `--reload` flag. (So, this will still work on an + airplane.) +- Modules/files loaded from remote URLs are intended to be immutable and + cacheable. + +## Logos + +These Deno logos, like the Deno software, are distributed under the MIT license +(public domain and free for use) + +- [A hand drawn one by @ry](https://deno.land/images/deno_logo.png) + +- [An animated one by @hashrock](https://github.com/denolib/animated-deno-logo/) + +- [A high resolution SVG one by @kevinkassimo](https://github.com/denolib/high-res-deno-logo) + +- [A pixelated animation one by @tanakaworld](https://deno.land/images/deno_logo_4.gif) |