Skip to content

Latest commit

 

History

History

portela-examples

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

Book Deno Web Development

Deno project Directory portela-examples\ contains TypeScript examples presented in Portela's book Deno Web Development (Packt, 2021).

Chapter 1

http-server Example

Example http-server.ts makes use of the function serve from the remote http library. The import clauses looks as follows:

// file: http-server.ts
import { serve } from "https://deno.land/std@0.208.0/http/server.ts"
 
for await (const req of serve(":8080")) {
  req.respond({ body: "Hello deno" })
}

We can run http-server either from the Windows prompt or from a Unix shell:

  • We run the batch file http-server.bat from the Windows prompt. Note that the server process is started only once (it must be stopped manually) when we run the batch file several times:

    > http-server.bat
    [INFO] Start process listening on port 8080
    [INFO] Respond to the cURL request on port 8080
    Hello deno
     
    > http-server.bat
    [INFO] Respond to the cURL request on port 8080
    Hello deno
    
  • We run the shell script http-server.sh from a Unix shell (Cygwin, MinGW or Unix).

    > ./http-server.sh
    [INFO] Start process listening on port 8080
    [INFO] Respond to the cURL request on port 8080
    Hello deno
     
    > ./http-server.sh
    [INFO] Respond to the cURL request on port 8080
    Hello deno
    

http-server-deps Example

In this first variant of the above example we split the code into two files:

  • we add the file deps.ts which contains the original import clause(s)

     // file: deps.ts
     import { serve } from "https://deno.land/std@0.190.0/http/server.ts"
  • we modify the file https-server.ts which now refers to deps.ts in the import clause (thus hiding the details of the remote std/http library):

     // file: http-server.ts
     import { serve } from "./deps.ts"
      
     for await (const req of serve(":8080")) {
       req.respond({ body: "Hello deno" })
     }

http-server-import-maps Example

Example http-server-import-maps is the second variant of the original example presented earlier. Besides the two files http-server.ts and http-server.bat we also :

  • add the file import_map.json

     {
       "imports": {
         "http/": "https://deno.land/std@0.197.0/http/"
       }
     }
  • and update the file deps.ts with a user-defined name for the http library.

     // file: deps.ts
     export { serve } from "http/server.ts"

Example fetch-deno-logo download a SVG image (e.g. the Deno logo) from the Internet and prints the HTML code with the embedded image.

> fetch-deno-logo.bat
<html>
<img src="data:image/svg+xml;base64,PHN2ZwogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICB3aWR0aD0iNTEyIgogIGhlaWdodD0iNTEyIgogIHZpZXdCb3g9IjAgMCA1MTIgNTEyIgo+CiAgPHRpdGxlPkRlbm8gbG9nbzwvdGl0bGU+CiAgPG1hc2sgaWQ9ImEiPgogICAgPGNpcmNsZSBmaWxsPSJ3aGl0ZSIgY3g9IjI1NiIgY3k9IjI1NiIgcj0iMjMwIiAvPgogIDwvbWFzaz4KICA8Y2lyY2xlIGN4PSIyNTYiIGN5PSIyNTYiIHI9IjI1NiIgLz4KICA8cGF0aAogICAgbWFzaz0idXJsKCNhKSIKICAgIHN0cm9rZT0id2hpdGUiCiAgICBzdHJva2Utd2lkdGg9IjI1IgogICAgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIgogICAgZD0iTTcxIDMxOWwxNy02M00xMDcuOTY0IDE2MS4wOTVsMTctNjNNMzYuOTMgMjIxbDE3LTYzTTEyNS45NjQgMzg1bDE3LTYzTTE2MC4zNzIgNDg2LjgyOWwxNy02M00yMzAgNDU2LjMyOWwxNy02M00yMDYuMjU3IDkyLjU4N2wxNy02M00zMjYuMzk1IDE3My4wMDRsMTctNjNNNDUyLjE4MiAzMDQuNjkzbDE3LTYzTTQwOS4xMjQgMjIxbDE3LTYzTTI5OS4wMjcgNTQuNTU4bDE3LTYzTTQwMC42MjQgODYuMDU4bDE3LTYzIgogIC8+CiAgPHBhdGgKICAgIG1hc2s9InVybCgjYSkiCiAgICBmaWxsPSJ3aGl0ZSIKICAgIHN0cm9rZT0iYmxhY2siCiAgICBzdHJva2Utd2lkdGg9IjEyIgogICAgZD0iTTI1Mi4yMjUgMzQ0LjQxOGMtODYuNjUgMi42MS0xNDQuNTc2LTM0LjUtMTQ0LjU3Ni05NC4zNjMgMC02MS40OTQgNjAuMzMtMTExLjE0NSAxMzguMzUxLTExMS4xNDUgMzcuNjgzIDAgNjkuNTMyIDEwLjY1IDk0LjM5MiAzMC4wOTIgMjEuODgyIDE3LjExMyAzNy41MjEgNDAuNTI2IDQ1LjUxOSA2Ni4zMTIgMi41NzQgOC4zMDEgMjIuODYzIDgzLjc2NyA2MS4xMTIgMjI3LjI5NWwxLjI5NSA0Ljg2LTE1OS43OTMgNzQuNDQzLTEuMTAxLTguMDYzYy04Ljg1LTY0Ljc3OC0xNi41NDYtMTEzLjMzOC0yMy4wNzYtMTQ1LjYzNC0zLjIzNy0xNi4wMDQtNi4xNzgtMjcuOTYtOC43OS0zNS43OTQtMS4yMjctMy42ODItMi4zNTUtNi4zNjEtMy4zMDMtNy45NTJhMTIuNTYgMTIuNTYgMCAwMC0uMDMtLjA1eiIKICAvPgogIDxjaXJjbGUgbWFzaz0idXJsKCNhKSIgY3g9IjI2MiIgY3k9IjIwMyIgcj0iMTYiIC8+Cjwvc3ZnPg==" />
</html>

Chapter 2

wip

Chapter 4

wip

Chapter 5

wip


mics/July 2024