mirror of https://github.com/webpack/webpack.git
				
				
				
			
		
			
	
	
		
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
		
		
			
		
	
	
			117 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
|  | // There are different ways to use files:
 | ||
|  | 
 | ||
|  | // 1. Using `import something from "./file.ext";`
 | ||
|  | 
 | ||
|  | // return URLs or Data URL, depends on your configuration
 | ||
|  | import png from "./images/file.png"; | ||
|  | import jpg from "./images/file.jpg"; | ||
|  | import svg from "./images/file.svg"; | ||
|  | 
 | ||
|  | // 2. Using `import something from "./file.ext"; with { type: "text" }` or `import something from "./file.ext"; with { type: "bytes" }`
 | ||
|  | // You don't need extra options in your configuration for these imports, they work out of the box
 | ||
|  | 
 | ||
|  | // returns the content as text
 | ||
|  | import text from "./content/file.text" with { type: "text" }; | ||
|  | 
 | ||
|  | // returns the content as `Uint8Array`
 | ||
|  | import bytes from "./content/bytes.svg" with { type: "bytes" }; | ||
|  | 
 | ||
|  | // 3. Using `new URL("./file.ext", import.meta.url);`
 | ||
|  | // You don't need extra options in your configuration for `new URL(...)` construction, they work out of the box
 | ||
|  | const url = new URL("./images/url.svg", import.meta.url); | ||
|  | 
 | ||
|  | const container = document.createElement("div"); | ||
|  | 
 | ||
|  | Object.assign(container.style, { | ||
|  | 	display: "flex", | ||
|  | 	flexWrap: "wrap", | ||
|  | 	justifyContent: "center" | ||
|  | }); | ||
|  | document.body.appendChild(container); | ||
|  | 
 | ||
|  | function createImageElement(div, data) { | ||
|  | 	const img = document.createElement("img"); | ||
|  | 	img.setAttribute("src", data); | ||
|  | 	img.setAttribute("width", "150"); | ||
|  | 	div.appendChild(img); | ||
|  | 
 | ||
|  | 	container.appendChild(div); | ||
|  | } | ||
|  | 
 | ||
|  | function createTextElement(div, data) { | ||
|  | 	const context = document.createElement("div"); | ||
|  | 	context.textContent = data; | ||
|  | 	div.appendChild(context); | ||
|  | 
 | ||
|  | 	container.appendChild(div); | ||
|  | } | ||
|  | 
 | ||
|  | function createBlobElement(div, data) { | ||
|  | 	const blob = new Blob([data], { type: 'image/svg+xml' }); | ||
|  | 	const blobUrl = URL.createObjectURL(blob); | ||
|  | 
 | ||
|  | 	const img = document.createElement("img"); | ||
|  | 
 | ||
|  | 	img.setAttribute("src", blobUrl); | ||
|  | 	img.setAttribute("width", "150"); | ||
|  | 	div.appendChild(img); | ||
|  | 
 | ||
|  | 	container.appendChild(div); | ||
|  | 
 | ||
|  | 	img.addEventListener( | ||
|  | 		'load', | ||
|  | 		() => { URL.revokeObjectURL(blobUrl) }, | ||
|  | 		{ once: true } | ||
|  | 	); | ||
|  | } | ||
|  | 
 | ||
|  | const files = [ | ||
|  | 	{ | ||
|  | 		title: "import png from \"./images/file.png\";", | ||
|  | 		data: png, | ||
|  | 		render: createImageElement, | ||
|  | 	}, | ||
|  | 	{ | ||
|  | 		title: "import jpg from \"./images/file.jpg\";", | ||
|  | 		data: jpg, | ||
|  | 		render: createImageElement, | ||
|  | 	}, | ||
|  | 	{ | ||
|  | 		title: "import svg from \"./images/file.svg\";", | ||
|  | 		data: svg, | ||
|  | 		render: createImageElement, | ||
|  | 	}, | ||
|  | 	{ | ||
|  | 		title: "import text from \"./content/file.text\" with { type: \"text\" };", | ||
|  | 		data: text, | ||
|  | 		render: createTextElement, | ||
|  | 	}, | ||
|  | 	{ | ||
|  | 		title: "import bytes from \"./content/file.text\" with { type: \"bytes\" };", | ||
|  | 		data: bytes, | ||
|  | 		render: createBlobElement, | ||
|  | 	}, | ||
|  | 	{ | ||
|  | 		title: "new URL(\"./url.svg\", import.meta.url);", | ||
|  | 		data: url, | ||
|  | 		render: createImageElement, | ||
|  | 	}, | ||
|  | ]; | ||
|  | 
 | ||
|  | 
 | ||
|  | function render(title, data, fn) { | ||
|  | 	const div = document.createElement("div"); | ||
|  | 	div.style.textAlign = "center"; | ||
|  | 	div.style.width = "50%"; | ||
|  | 
 | ||
|  | 	const h2 = document.createElement("h2"); | ||
|  | 	h2.textContent = title; | ||
|  | 	div.appendChild(h2); | ||
|  | 
 | ||
|  | 	fn(div, data) | ||
|  | } | ||
|  | 
 | ||
|  | files.forEach(item => { | ||
|  | 	render(item.title, item.data, item.render); | ||
|  | }); |