Comments (3)
I wouldn't be opposed to a dependency injection like API like you suggest. I think to implement it, the simplest way is to:
- move all of lib/browser.js to a new lib/dom.js file
- wrap lib/dom.js in a big closure that takes a
document
argument - update lib/browser.js to do
module.exports = require('./dom')(document)
- add a new /dom.js module that exports
./lib/dom.js
(similar to how we have/raw.js
already) - add some tests using jsdom or whatever (that would only run on node.js versions still supported by jsdom)
then it could be released as a minor version.
I don't really wanna do it myself 🙈 but would review a PR, whether it takes the above approach or a different one!
from nanohtml.
There could be a new nanohtml/dom
API that does that, but you can also do this today:
var html = require('nanohtml/lib/browser')
global.document = jsdomDocument
var el = html`
<h1>uses jsdom</h1>
`
or:
function html (document) {
var inner = require('nanohtml/lib/browser')
return function (strings, ...expressions) {
global.document = document
var result
try {
return inner(strings, ...expressions)
} finally {
delete global.document
}
}
}
from nanohtml.
The maintainer of hyperhtml suggested same thing but I don't want to pollute global scope. (And I hope there be no hack modifying and de-modifying global scope.)
from nanohtml.
Related Issues (20)
- `default` alias not defined on server.js HOT 4
- onclick Event Handlers with nanohtml/raw HOT 1
- Support custom elements V1 extension of built-in elements
- Cannot find module 'estraverse' HOT 5
- browserify transform sourcemaps only working partially HOT 1
- SyntaxError: Octal escape sequences are not allowed in template strings
- The qualified name provided ('clipPath"') contains the invalid character '"'. HOT 1
- Support array for multiple roots?
- Svgs elements not created properly HOT 2
- Browserify transform does not work for code transpiled from Typescript HOT 1
- Text node as a root ignores the following element
- Way to keep whitespaces intact? HOT 2
- Valueless attributes gets unexpected default value
- Unclosed tags insert unexpected text node
- Support for conditional attributes? HOT 6
- bundle.min.js in npm package doesn't add html to window object HOT 1
- autofocus on input HOT 2
- babel + rollup import error HOT 4
- Question on upgrading from [email protected] HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nanohtml.