jsweb v0.3.20
- jsWeb - Simple Web Server with Javascript
jsWeb is a program to simplify web api based on express development. After installed jsweb, just write the express request handle js file and put them to the correctly directlry. Start with command:
#+BEGIN_SRC sh
jsweb /path/to/site/home jsweb --site=/path/to/site/home --port=8888
#+END_SRC
Features
- Everythings of web site in single folder.
- Multiple port support, each port is a standalone process
- Auto reload, Add/Modify/Delete api file doesn't need restart server
- Async init script loaded before real api method load to prepare system like database object or connection
- Https support
- Virtual host support
- Mustache template support buildin
- Cluster support
- Parameter URL support
- TLS session resume support
- Installation
#+BEGIN_SRC sh $ sudo npm install jsweb -g #+END_SRC
- =jsweb= is not a nodejs module but a system tools to run your web.
- Run the demos
#+BEGIN_SRC sh $ git clone https://github.com/jsplne/jsweb-demo $ jsweb jsweb-demo/static $ jsweb jsweb-demo/api-server $ jsweb jsweb-demo/vhost #+END_SRC
- Namings
#+BEGIN_SRC sh name[(tag[;tag...])] #+END_SRC
** tags for port folder
- =https= This is a https port
tags for root folder
- =api= Root folder =.js= file treat as server side script, if =index.js= exists, website homepage will be the result of =index.js=
tags for inside folder
- =api= Folder contain api script. all =.js= inside this folder will be called as api call, include subfolders.
- =param= Folder correspond URL position will be inteperate as req.params object member, folder name as the member name, URL path will be the value
- =final= Match rest of url after final tag as req.params.final
tags for api =.js= file
- GET api will called for correspond http method, if omit, all method will called.
- POST
- PUT
- ... all valid HTTP method
- Runtime data structure
System information share with request callback via : =req.jw=
#+BEGIN_SRC javascript req.jw = { app : // system object } #+END_SRC
- Enable/Disable file
Set/clear file execute flag of files to enable/disable init file or web api file to be load.
- Directory structure (single site)
See jsweb-demo
- https certificate file generate
#+BEGIN_SRC shell cd /path/to/https-port/config $ openssl genrsa -out jsweb.key 1024 $ openssl req -new -key jsweb.key -out jsweb.ca $ openssl x509 -req -in jsweb.ca -signkey jsweb.key -out jsweb.cert #+END_SRC
- Cluster support
Set port-config.json under the port folder with key/value: ="cluster" : true=
** port-config.json
#+BEGIN_SRC json { "bind" : "127.0.0.1", "cluster" : true, "tls" { "key" : "/path/to/key/file", default to "cert" : "/path/to/cert/file", "ca" : "/path/to/ca/file", "rejectUnauthorized" : true | false, "requestCert" : true | false } } #+END_SRC
- About parameter URL
- =api's= priority is higher than param =param= folder - -
- =index.js= under =param= folder will be called when url point to that folder
- =param= can set multiple level.
- =param= folder examples
#+BEGIN_SRC sh
/root/org(param)/user(param)/device(param)/index.js
/root/org(param)/user(param)/device(param)/index.js
#+END_SRC
About Views
Put variables you want to reder within view to =res.locals= and =res.render(...)=
- =req.jw= object
- =req.jw.port.home=
- =req.jw.port.port=
- =req.jw.port.protocol=
- =req.jw.port.tags=
- =req.jw.port.config=
- =req.jw.home=
- =req.jw.root=
- =req.jw.lib=
- =req.jw.config=
- =req.jw.hostname=
=/jsweb-config=
- =debug= : true or fasle
- =cluster= : true or fase
- =public= : array
9 months ago
9 months ago
9 months ago
3 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
5 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago
8 years ago