https://github.com/nolimits4web/ssr-window
Better handling for window object in SSR environment
https://github.com/nolimits4web/ssr-window
server-side-rendering ssr ssr-environment ssr-window
Last synced: about 1 month ago
JSON representation
Better handling for window object in SSR environment
- Host: GitHub
- URL: https://github.com/nolimits4web/ssr-window
- Owner: nolimits4web
- License: mit
- Created: 2018-02-10T12:56:28.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2023-01-07T23:19:36.000Z (over 2 years ago)
- Last Synced: 2024-10-29T20:55:56.826Z (7 months ago)
- Topics: server-side-rendering, ssr, ssr-environment, ssr-window
- Language: JavaScript
- Homepage:
- Size: 897 KB
- Stars: 135
- Watchers: 5
- Forks: 20
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# SSR Window
Better handling for `window` and `document` object in SSR environment.
This library doesn't implement the DOM (like JSDOM), it just patches (or creates `window` and `document` objects) to avoid them to fail (throw errors) during server-side rendering.
Was created for use in:
- [Dom7](https://github.com/nolimits4web/dom7)
- [Swiper](https://github.com/nolimits4web/swiper)
- [Framework7](https://github.com/framework7io/framework7)## Installation
Library available on NPM:
```
npm i ssr-window
```## Usage
```js
import { getWindow, getDocument } from 'ssr-window';const window = getWindow();
const document = getDocument();window.addEventListener('resize', () => {});
const div = document.querySelectorAll('div');
```## Extending
If you rely on some window/document properties which are not included here, you can use `extend` helper to add them:
```js
import { ssrWindow, ssrDocument, extend } from 'ssr-window';// add window.navigator.language
extend(ssrWindow, {
navigator: {
language: 'en',
},
});// add document.body
extend(ssrDocument, {
body: {
/* ... */
},
});
```## Contribution
Yes please! See the [contributing guidelines](https://github.com/nolimits4web/ssr-window/blob/master/CONTRIBUTING.md) for details.
## Licence
This project is licensed under the terms of the [MIT license](https://github.com/nolimits4web/ssr-window/blob/master/LICENSE).