Skip to content

HTML Parser for NodeJS providing a lightweight object oriented interface

License

Notifications You must be signed in to change notification settings

stfsy/node-html-light

Repository files navigation

Node HTML Light

Build Status Dependency Status DevDependency Status Npm downloads Npm Version Git tag Github issues License

HTML Parser for NodeJS providing a lightweight object oriented interface

How can I install it?

npm i node-html-light --save

Who is using it?

blauspecht.io uses node-html-light to render their whole page server-side. blauspecht.io enables you to provide rich content to your followers, schedule tweets and threads and will add AI-powered features soon.

How can I use it?

Document

Class methods

Instance methods

  • html() -> Node
  • head() -> Node
  • body() -> Node
  • toHtml() -> String

Node

Class methods

  • static fromPath(path) -> Node | Array<Node>
  • static fromString(string) -> Node | Array<Node>
  • static of(object | name, attrs) -> Node | Array<Node>

Instance properties

  • name
  • type
  • parent
  • children
  • root
  • nextSibling
  • previousSibling
  • attributes

Instance methods

  • appendChild(newChild) -> void
  • appendChildBefore(newChild, oldChild) -> void
  • appendChildAfter(newChild, oldChild) -> void
  • find(element, attrs, limit) -> Array<Node>
  • filter(callback, limit) -> Array<Node>
  • removeChild(child) -> void
  • replaceChild(newChild, oldChild) -> void
  • toHtml() -> String

Attributes

Class methods

  • static of(object) -> Array

Text

Class methods

  • static of(string) -> Text

Examples

Create a document using a file

const Document = require('node-html-light').Document
const resolve = require('path').resolve

Document.fromPath(resolve('./index.html')).then((document) => {
    // head is an instance of Node
    const head = document.head()
    // body is an instance of Node
    const body = document.body()

    // find child elements
    // append child elements
    // remove child elements
    // replace child elements

    return document.toHtml()
}).then((html) => {
    // ..
})

Create a Node using a File

const Node = require('node-html-light').Node
const resolve = require('path').resolve

Node.fromPath(resolve('partial.html')).then((node) => {})

Create a Node using a String

const Node = require('node-html-light').Node

const node = Node.fromString('<div></div>')

Create a Node with raw data

const Node = require('node-html-light').Node
const Attributes = require('node-html-light').Attributes

const node = Node.of('meta', Attributes.of({
        'name': 'viewport',
        'theme-color': '#795548'
    })
)

Find a child Node of an existing Element

const Node = require('node-html-light').Node
const Attributes = require('node-html-light').Attributes
const resolve = require('path').resolve

Node.fromPath(resolve('partial.html')).then((node) => {
    const content = node.find('div', Attributes.of({
        'name': 'viewport',
        'theme-color': '#795548'
    }))
})

License

This project is distributed under the MIT license.