Home  >  Article  >  Web Front-end  >  Detailed explanation of how Vue supports JSX syntax

Detailed explanation of how Vue supports JSX syntax

小云云
小云云Original
2017-12-22 11:15:281875browse

Usually we use template syntax to develop vue. In fact, there is the same syntax as react, that is, the render function, which also supports jsx syntax. This article mainly introduces the detailed explanation of how Vue supports JSX syntax. The editor thinks it is quite good, so I will share it with you now and give it as a reference. Let’s follow the editor to take a look, I hope it can help everyone.

Vue’s template is actually compiled into a render function.

1. The traditional createElement method


createElement(
 'anchored-heading', {
  props: {
   level: 1
  }
 }, [
  createElement('span', 'Hello'),
  ' world!'
 ]
)

is rendered as follows


<anchored-heading :level="1">
  <span>Hello</span> world!
</anchored-heading>

2. Use jsx syntax

This is why a Babel plugin is used to use JSX syntax in Vue. It allows us to return As for the syntax that is closer to the template.

1.Installation


npm install\
 babel-plugin-syntax-jsx\
 babel-plugin-transform-vue-jsx\
 babel-helper-vue-jsx-merge-props\
 babel-preset-es2015\
 --save-dev

2.Edit the .babelrc file


##

{
"presets": ["es2015"],
"plugins": ["transform-vue-jsx"]
}

The code is edited as follows


Vue.component(&#39;jsx-example&#39;, {
 render (h) { // <-- h must be in scope
  return <p id="foo">bar</p>
 }
})

Using h as an alias for createElement is a common convention in the Vue ecosystem, and is actually required by JSX. If h loses its role in the scope, in An error message will be triggered in the application.

Related recommendations:


The differences between JSX and HTML

Start using React and JSX_html/css_WEB-ITnose

Introductory Tutorial for Learning JSX Syntax in JavaScript’s React Framework_Basic Knowledge

The above is the detailed content of Detailed explanation of how Vue supports JSX syntax. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn