feat(compiler-sfc): transform srcset (#501)

This commit is contained in:
likui
2019-12-03 12:06:14 +08:00
committed by Evan You
parent 74fd6635ce
commit cf2a0b281f
3 changed files with 166 additions and 3 deletions

View File

@@ -0,0 +1,49 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`compiler sfc: transform srcset transform srcset 1`] = `
"import { createVNode, createBlock, Fragment, openBlock } from \\"vue\\"
import _imports_0 from './logo.png'
const _hoisted_1 = _imports_0
const _hoisted_2 = _imports_0 + '2x'
const _hoisted_3 = _imports_0 + '2x'
const _hoisted_4 = _imports_0 + ', ' + _imports_0 + '2x'
const _hoisted_5 = _imports_0 + '2x, ' + _imports_0
const _hoisted_6 = _imports_0 + '2x, ' + _imports_0 + '3x'
const _hoisted_7 = _imports_0 + ', ' + _imports_0 + '2x, ' + _imports_0 + '3x'
export default function render() {
const _ctx = this
return (openBlock(), createBlock(Fragment, null, [
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_1
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_2
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_3
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_4
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_5
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_6
}),
createVNode(\\"img\\", {
src: \\"./logo.png\\",
srcset: _hoisted_7
})
]))
}"
`;

View File

@@ -0,0 +1,31 @@
import { generate, parse, transform } from '@vue/compiler-core'
import { transformSrcset } from '../src/templateTransformSrcset'
import { transformElement } from '../../compiler-core/src/transforms/transformElement'
import { transformBind } from '../../compiler-core/src/transforms/vBind'
function compileWithSrcset(template: string) {
const ast = parse(template)
transform(ast, {
nodeTransforms: [transformSrcset, transformElement],
directiveTransforms: {
bind: transformBind
}
})
return generate(ast, { mode: 'module' })
}
describe('compiler sfc: transform srcset', () => {
test('transform srcset', () => {
const result = compileWithSrcset(`
<img src="./logo.png" srcset="./logo.png"/>
<img src="./logo.png" srcset="./logo.png 2x"/>
<img src="./logo.png" srcset="./logo.png 2x"/>
<img src="./logo.png" srcset="./logo.png, ./logo.png 2x"/>
<img src="./logo.png" srcset="./logo.png 2x, ./logo.png"/>
<img src="./logo.png" srcset="./logo.png 2x, ./logo.png 3x"/>
<img src="./logo.png" srcset="./logo.png, ./logo.png 2x, ./logo.png 3x"/>
`)
expect(result.code).toMatchSnapshot()
})
})