Coder Social home page Coder Social logo

markserv / markserv Goto Github PK

View Code? Open in Web Editor NEW
509.0 12.0 81.0 7.51 MB

🏁 serve markdown as html (GitHub style), index directories, live-reload as you edit

Home Page: https://f1lt3r.io

License: MIT License

CSS 49.45% JavaScript 32.85% HTML 17.70%
markdown markserv markserv-cli files-served livereload html md server live-reload github

markserv's Introduction

Markserv Logo

🏁 serve markdown as html (GitHub style), index directories, and live-reload as you edit

Gitter CHANGELOG Build Status Coverage Status All Contributors Npm Version XO code style Known Vulnerabilities

Markserv Demo

✨ Features

  • Markdown content rendered as HTML
  • GitHub flavor CSS and Syntax Highlighting
  • Just in Time Templating: Markdown, HTML & LESS
  • LiveReload as you edit
  • Directory indexes
  • MIME Type file support

Supporting: MathJax, Chinese Characters, Table of Contents, Tables, Heading Anchors

Markserv directory index

💻 Installation

# NPM
$ npm i -g markserv

# Yarn
$ yarn global add markserv

🕹️ Usage

To start Markserv from the CLI

# Open closest README.md
$ readme

# Open file
$ markserv README.md

# Open a directory
$ markserv node_modules

Markserv CLI Splash

Start Markserv and open a file or directory.

# File
$ markserv ./path/to/file.md

# Directory
$ markserv ./

Start Markserv and open the closest README.md file in the browser:

$ readme

⚡ Live Reload

To see real-time updates as you save your markdown files, you will need to install the LiveReload plugin for your browser:

With the Live Reload plugin installed and turned on, you should see the page reloading as you save your Markdown file.

Markserv Live Reload

🔗 Markdown Links

You can link to an external Markdown file in the same way that you use GitHub Wiki links. You can use the example code here to see how external links work.

Example code:

[Skateboarding Dog!](tests/Linked-Markdown-Example.md)

Example link:

Skateboarding Dog!

⏱️ Just in Time Templating

Markserv allows you to include nested content. Templates are fetched and rendered when you request them in your browser. The maxDepth of includes is set to 10.

If you would like to look at an example, you can look in the tests/templates directory of this repo.

To see the server output of this templating example:

$ git [email protected]/f1lt3r/markserv.git
$ cd markserv
$ markserv tests/templates/index.html

Include Markdown

Note: Any markdown files that you include will be transformed to HTML.

Where foo/bar/baz/qux.md equals:

## Qux

And Markserv renders the following content:

# Include Markdown
{markdown: foo/bar/baz/qux.md}

The server response will be:

<h1>Include Markdown</h1>
<h2>Foo Bar</h2>

Include HTML

Where foo/bar/baz/qux.html equals:

<h2>Qux</h2>

And Markserv renders the following content:

# Include Markdown
{html: foo/bar/baz/qux.html}

The server response will be:

<h1>Include Markdown</h1>
<h2>Qux</h2>

Include LESS

Note: Any LESS files that you include will be transformed to CSS.

Where foo/bar/baz/qux.css equals:

@link-color: green;
a {color: @link-color}

And Markserv renders the following content:

<style>{less: foo/bar/baz/qux.css}</style>

The server response will be:

<style>
a {
  color: #008000;
}
</style>

🎌 Flags

To list the options/flags for the markserv CLI tool:

$ markserv --help

Changing the HTTP Port

You can change the HTTP Port like this:

markserv -p 80

Making Markserv available to external networks

In some cases localhost might be the address on which the server is listening, in which case it is hard to make the site available to external networks even with the right IP. Use the following as an example to make sure the server is accessible from external networks:

markserv -p 8642 -a 0.0.0.0

Above example runs the server on port 8642 and it can be accessed from external networks using public IP of the machine on which the server is running. If you want the server to keep running in a seperate thread even when you log out, use this:

nohup markserv -p 8642 -a 0.0.0.0 &

This will make the server instance persistent and will be available to access even when you log out or even when your ssh session closes (in case you are accessing a remote machine through ssh to set up markserv server)

💘 Credits

Contributors

Thanks goes to these wonderful people (emoji key):


Alistair MacDonald

💻

陳瀛洲

💻

Kefei Lu

💻

Zhenfei You

💻

Andrew

💻

Daniel Perez

💻

Sushruth Shastry

💻

Patryk Rzucidło

💻

EstebanMarin

💻

Matthew Reishus

📖

Daniel Wennberg

💻

Pete Hodgson

💻

Deleted user

📖

Liam Dawson

💻

This project follows the all-contributors specification. Contributions of any kind welcome!

markserv's People

Contributors

alistair-hmh avatar anslzo avatar chenyingchou avatar danhper avatar danielwe avatar estebanmarin avatar f1lt3r avatar imyzf avatar kflu avatar liamdawson avatar moredip avatar mreishus avatar ptkdev avatar sushruth avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

markserv's Issues

Provide additional color themes

It'd be nice to include at least an additional dark theme with markserv, just for the eye, and expose that via a command line switch.

Math errors with newlines and standalone $'s

  • Newlines \\ within math environments are replaced by single backslashes:
$$
\begin{matrix}
  a & b \\
  c & d
\end{matrix}
$$

renders to

$$
\begin{matrix}
a &amp; b \
c &amp; d
\end{matrix}
$$

I.e., the substitutions \ -> <br> and \\ -> \ are performed even inside math environments, resulting in incorrect math expressions after MathJax processing.

  • Dollar signs that are clearly not math environment delimiters are treated as such:
I earned $10 and spent $5.

10 and spent is processed as math by MathJax. (Note, for example, that pandoc defines rules for when a pair of dollar signs should be treated as a math environment, see https://pandoc.org/MANUAL.html#math).

One solution could be to use the markdown-it-mathjax plugin, which takes care of all of this. However, that appears to require enabling the '\\(','\\)' inline math delimiters, which were disabled in #14.

Provide an option to view raw

I do not serve my markdown files from my own machine. I set up a server instance in my company's cloud to host my markdown. I would really like an option to "download" or "view raw" of the rendered markdown I am looking at. Any chance you may implement this?

Table of content generation does not respect headers in includes

First off, thanks for this amazing piece of software! I am currently setting up a wiki and would like to utilize the include (markdown) feature in combination with the table of content generation.

The behavior I see currently is as follows.
When declaring the [[TOC]] directive it will not take into account any headers that are specified in one of the include directives.

A small sample:
README.md

# Table of Contents

[[TOC]]

{markdown: DESCRIPTION.md}

DESCRIPTION.md

# Test

In this example, only the Table of Contents header will be included in the generated Table of Contents block. The markdown of the includes is rendered fine. Not sure if this is a limitation of markdown, but I was curious whether this is something that is possible to implement.

Kind regards

Doesn't work with nodejs 7.4.0

node --version
v7.4.0

markserv

Socket.prototype.__proto__ = EventEmitter.prototype;
                                         ^

TypeError: Cannot read property 'prototype' of undefined
    at Object.<anonymous> (/home/rods/.asdf/installs/nodejs/7.4.0/.npm/lib/node_modules/markserv/node_modules/websocket.io/lib/socket.js:49:42)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/home/rods/.asdf/installs/nodejs/7.4.0/.npm/lib/node_modules/markserv/node_modules/websocket.io/lib/protocols/drafts.js:12:14)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)

With node 6.9.x works fine.

feature request: table

I'm using the chrome extentios named "Markdown Preview Plus" on my local PC. There's a feature called table, it's very convenience when read the .md docs.

Could you pls add this feature to markserv ?

Thank you for your great software!

2018-05-03 16_09_13-greenshot

Ctrl + C does not work in docker

Simplest docker config

FROM node:latest

EXPOSE 80

RUN npm i -g markserv

COPY docs /srv/docs

CMD exec markserv -p 80 -a 0.0.0.0 /srv/docs/
docker build -t markserv .
docker run -p 8080:80 markserv

and then no Ctrl + C is possible; I am forced to kill docker process after with docker ps and docker kill id

Bug: error - I can't run `readme` anymore

I can't run readme anymore after updating node from v8 to v10...

node: v10.14.1
npm: v6.4.1
OS: MacOS Sierra

A@anthony:~/git/someproject (master) $ readme
Markserv boot: starting Markserv...
path.js:39
throw new ERR_INVALID_ARG_TYPE('path', 'string', path);
^

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type object
at assertPath (path.js:39:11)
at Object.resolve (path.js:1088:7)
at Command.flags.version.usage.option.option.option.option.option.option.action.pathToReadme

I will appreciate your help! Thank you

support vimwiki style links.

In vimwiki

The code [Sales](Sales) Points to the file 'Sales.md'
And [DebugInfrastructure/index](DebugInfrastructure/index) points to the file DebugInfrastructure/index.md

Markserv throws an error of:

ENOENT: no such file or directory, stat '{MarkdownDir}/Sales'

for these links as it does not automatically add an '.md' extension while searching for the file.

CLI help text broken

When running markserv, I immediately encounter this error:

 % markserv --version                                                                                                                                                                                                                                                                :(
fs.js:115
    throw err;
    ^

Error: ENOENT: no such file or directory, open '/Users/liamdawson/.nodenv/versions/10.15.0/lib/node_modules/markserv/lib/cli-help.txt'
    at Object.openSync (fs.js:439:3)
    at Object.readFileSync (fs.js:344:35)
    at Object.<anonymous> (/Users/liamdawson/.nodenv/versions/10.15.0/lib/node_modules/markserv/lib/cli.js:11:27)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)
    at startup (internal/bootstrap/node.js:283:19)
    at bootstrapNodeJSCore (internal/bootstrap/node.js:743:3)

As the error suggests, no file exists at that location.

Any plan for adding search capabilities?

markserv is a really nice project. Users of my internal documentation are complaining about no search, though. Are there plans to add it? Are there easy ways to use an internal tool to add it? Thanks for creating cool software that is useful and easy to config.

Install failing: Command failed: /usr/local/bin/git checkout 5f0b3799f50944bc4d1eb58acdef61c38883d6cf

npm install is failing due to a git dependency. It's weird because I see the commit here: LearnBoost/websocket.io@5f0b379

$ npm install markserv -g
npm ERR! code 128
npm ERR! Command failed: /usr/local/bin/git checkout 5f0b3799f50944bc4d1eb58acdef61c38883d6cf
npm ERR! fatal: reference is not a tree: 5f0b3799f50944bc4d1eb58acdef61c38883d6cf
npm ERR!

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/dan/.npm/_logs/2017-07-24T16_18_09_255Z-debug.log

Anyone else getting the same issue?

Some steps to make it "production" server

Hi,

just found your tool, it looks super!

Could you please add flag(s) to disable livereload and opening the browser? I am running this in docker, so those options are totally irrelevant to me.

Also, there (maybe) should be a way to hide PID footer

no favicon

Browser tries to get favicon.ico and 404-ed. Looking at the screenshot there seems to be a default one. How do I turn it on?

Unable to run multiple instance of markserv

Platform: MacOs

To reproduce:

  1. run 1st instance: markserv .
  2. run 2nd instance: mark serve -p 7777 .

got the following error:

events.js:187
      throw er; // Unhandled 'error' event
      ^

Error: listen EADDRINUSE: address already in use :::35729`

LiveReload is only enabled for base file

Issue description

I started markserv by running readme &> /dev/null &. My project structure looks like this:

.
├── docs
│   ├── images
│   │   └── diagram.svg
│   ├── file1.md
│   ├── file2.md
│   └── file3.md
└── README.md

Markserv starts properly and I get a view of README.md in the browser. All good.

I have the LiveReload browser extension installed. After waiting a little bit for it to warm up, I start to see changes to README.md instantly in the browser after file saves. Excellent.

README.md contains lines like this:

Go [here](docs/file1.md) for information.

Those links work properly from markserv. When I click that link, I get served file1.md rendered as HTML. The problem is, that page does not live-reload. Only the base README.md page reloads instantly. Any pages that I linked to require manual refreshes to get updated content.

Main question

Is there a way to start markserv that allows for all the files to be live-reloaded? Perhaps I just missed some setup details, or maybe this is not implemented yet.

Environment details

Markserv: version 1.17.4
System: WSL2 on Windows 10
Browser: Google Chrome

Remote branch 57/head not found in upstream origin

I could not install on Git 2.13.0.windows.1, node 8, npm v5 and got the following errors:

C:\Users\umun>npm install markserv -g
npm ERR! code 128
npm ERR! Command failed: C:\Program Files\Git\cmd\git.EXE clone --depth=1 -q -b
57/head git://github.com/LearnBoost/websocket.io.git C:\Users\umun\AppData\Roami
ng\npm-cache\_cacache\tmp\git-clone-055fb296 --config core.longpaths=true
npm ERR! warning: templates not found C:\Users\umun\AppData\Local\Temp\pacote-gi
t-template-tmp\git-clone-8a275c0f
npm ERR! warning: Could not find remote branch 57/head to clone.
npm ERR! fatal: Remote branch 57/head not found in upstream origin

Cannot access it from external network

If you can not access your instance from external network, try running markserv from 0.0.0.0. From the terminal, this:

markserv -p 8642 -a 0.0.0.0 & # & - to run it without blocking your terminal instance

This is something that helped me so sharing it as an issue.

Thanks to @F1LT3R for this amazingly simple server! We did not have a wiki at my work so started using this as one!

No Content-Type header

If I use wget -S to see the headers that come back from markserv, I see no Content-Type header. This is causing Solr post from 7.0.1 to throw an exception. Seems like that header should be present, since HTML is being served, right?

${file} in page causes failure

I have a weird issue. A page wasn't loading, and it turned out to be because of this code block:

${file}; 

More testing:

  • ${file} anywhere, inside or outside codeblocks, will cause markserv to just keep loading
  • ${fil}, ${a}, etc, doesn't give me any problems.

Does anyone have an idea why this happens? Sounds like possible code injection vulnerability perhaps?

bad links in HTML

These links appear in rendered pages:

<link rel="stylesheet" href="{markserv}templates/markserv.css">
<link rel="stylesheet" href="{markserv}templates/highlight-js-github-gist.css">

Using a link checker on them gives errors because those are not valid URIs. I'm not even sure what purpose they serve. Anyone know?

Dependencies warnings

  Markserv   boot: starting Markserv...
(node:21738) [DEP0128] DeprecationWarning: Invalid 'main' field in '/home/.../.config/yarn/global/node_modules/implant/package.json' of 'implant'. Please either fix that or report it to the module author
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:21738) [DEP0128] DeprecationWarning: Invalid 'main' field in '/home/.../.config/yarn/global/node_modules/balanced-pairs/package.json' of 'balanced-pairs'. Please either fix that or report it to the module author
(node:21738) [DEP0128] DeprecationWarning: Invalid 'main' field in '/home/.../.config/yarn/global/node_modules/super-split/package.json' of 'super-split'. Please either fix that or report it to the module author
  Markserv   address: http://localhost:8642
  Markserv   path: /home/...
  Markserv   livereload: communicating on port: 35729
  Markserv   process: your pid is: 21738
  Markserv   stop: press [Ctrl + C] or type "sudo kill -9 21738"
    GitHub   Contribute on Github - github.com/markserv
  Markserv   upgrade: checking for upgrade...
  Markserv   upgrade: no upgrade available

Markserv starts anyway and works correct. These node DepracationWarnings don't show up when I install markserv from the npm registry.

How to disable include feature

My markdown file include mustache code block.
e.g.

```html
<div>{{{html}}}</div>
```

I know {{{ html }}} that is ok, but this is a habit, I hope there is an ideal way to solve it. Thanks!!

GitBook flavor markdown

It would be nice if we could port it do understand gitbook flavored markdown..
Content like this, would be interpreted:

{% tabs %}
  {% tab title="Content" %}
    Content of tab 1 in details
  {% endtab %}

  {% tab title="Revision" %}
    Revision of tab 2 in details
  {% endtab %}
{% endtabs %}

And awesome code-tabs too:

{% code-tabs %}
  {% code-tabs-item title="Python" %}
    ```python
    some python code here
    ```
  {% endcode-tabs-item %}

  {% code-tabs-item title="Bash" %}
    ```bash
    some bash code here
    ```
  {% endcode-tabs-item %}

  {% code-tabs-item title="C" %}
    ```c
    some c code here
    ```
  {% endcode-tabs-item %}
{% endcode-tabs %}

But I don't know if this is viable. Is it possible?

Error after upgrading

Hello,

Previously running version 0.1.1 (!) on a fully updated CentOS 7.6 box. Upgraded to version 1.17.2 via npm.

Now the following output is generated when running the markserv binary:

---snip---
[root@pasta ~]# markserv
/usr/lib/node_modules/markserv/lib/server.js:578
const logActiveServerInfo = async (serveURL, httpPort, liveReloadPort, flags) => {
^

SyntaxError: Unexpected token (
at createScript (vm.js:56:10)
at Object.runInThisContext (vm.js:97:10)
at Module._compile (module.js:549:28)
at Object.Module._extensions..js (module.js:586:10)
at Module.load (module.js:494:32)
at tryModuleLoad (module.js:453:12)
at Function.Module._load (module.js:445:3)
at Module.require (module.js:504:17)
at require (internal/module.js:20:19)
at Object. (/usr/lib/node_modules/markserv/lib/cli.js:9:18)
---snip---

Any help is greatly appreciated!

j

Base URL

Possibility to setup a base URL directory useful when you serve files from another directory (/manual for instance).
By using rewrite on a proxy server the rules links are still pointing on /

URL-encode spaces in links

In markserv 1.17.4, it seems that a link like [my link](./foo/bar baz) is rendered as plain text rather than being converted into an HTML link such as <a href="./foo/bar%20baz">my link</a>. Would it be possible to change this behavior to URL-encode links/paths with spaces and render working links with them?

Support default index page

This is a useful project, thanks! Here's my issue: my repo's entrypoint is README.md. When I start markserv, I'd like http://localhost:8642/ to show the contents of README.md, so I created index.html with this content:

{markdown: ./README.md}

However, when I start markserv . and go to http://localhost:8642/, I see a directory listing of files. I expected to sees the rendered contents of README.md.

When I browse directly to http://localhost:9999/index.html, I see the contents of README.md rendered as html, but without the styling -- none of the css files are loaded.

I tried changing index.html to this content, in case this issue was related to inline markdown rendering:

<html>
  <body>
    <h1>content</h1>
  </body>
</html>

But it had the same result.

Why is LiveReload extension needed?

Hi!

I was previously using a megaold version of markserv ( 0.1.1 ) which didn't depend on Live Reload extension AFAIK.

Since I've upgraded ( to 1.12.3 ) I cannot see live reloads on Firefox 61, since linked LiveReload extension in README is kind of broken.

Why is LiveReload extension needed? Isn't it something that could be implemented through websockets?

Thanks

Too slow to open marksrv server page.

It's very slow to load the page served by markserv server. After check the Chrome developer tools, I found the root cause it that http request to http://sindresorhus.com/github-markdown-css/github-markdown.css failed.

In my network, we can't access the url becase of internet censorship.

2018-05-02 17_22_34-greenshot

howto add new language module

after receive the message "Could not find the language 'mermaid', did you forget to load/include a language module?", I did not find howto add new language module.

feature: Do not render Front Matter

Front Matter if often used to add metadata to Markdown documents, like in Jekyll, Gatsby or Hugo.

That Front Matter should not be rendered when rendering the Markdown document. Would it be possible to add this feature to markserv?

I see you are using markdown-it for rendering markdown, I have found this plugin to skip rendering the Front Matter, you may be able to use it to implement this feature.

Markdown Tables not rendering

Tables are not being rendered, using example code from GitHub https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#tables

Sample code used:

Colons can be used to align columns.

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |

There must be at least 3 dashes separating each header cell.
The outer pipes (|) are optional, and you don't need to make the
raw Markdown line up prettily. You can also use inline Markdown.

Markdown | Less | Pretty
--- | --- | ---
*Still* | `renders` | **nicely**
1 | 2 | 3

What renders:
image

Expected result: (Markdown tables rendered properly)


Colons can be used to align columns.

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

There must be at least 3 dashes separating each header cell.
The outer pipes (|) are optional, and you don't need to make the
raw Markdown line up prettily. You can also use inline Markdown.

Markdown Less Pretty
Still renders nicely
1 2 3

File and directory name containing polish diactric characters causes 404 error.

Steps to reproduce the bug: A folder containing an example directory called "zażółć gęślą jaźń" and a file named the same (but with the .md extension).

Expected behavior: I can properly open zażółć gęślą jaźń.md and the zażółć gęślą jaźń directory.

Occuring behavior: The server throws the following 404 errors:

For zażółć gęślą jaźń.md

404 :'( for /zażółć gęślą jaźń.md

For the zażółć gęślą jaźń directory

404 :'( for /zażółć gęślą jaźń/

There was a similar issue concerning Chinese characters that's been resolved - #17.

Random MathJax rendering of ordinary text

MathJax randomly selects portion of ordinary text and renders it as math. I really couldn't find any clue for what is the decision process behind this as it seems to be truly random. Is it possible to turn off MathJax globaly?

image

Serve single file

Issue description

When i type

markserv -p 8000 -a 0.0.0.0 folder/README.md

Server actually expose all the files into folder.

Images

Serve command
server

Serve command
server

Main question

Is there a way to markserv serve only single file. Perhaps I just missed some setup details, or maybe this is not implemented yet.

Environment details

Markserv: version 1.17.4
System: Ubuntu 18.04.6
Browser: Google Chrome

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.