<legend id='m2XZn'><style id='m2XZn'><dir id='m2XZn'><q id='m2XZn'></q></dir></style></legend>

        <bdo id='m2XZn'></bdo><ul id='m2XZn'></ul>

    1. <small id='m2XZn'></small><noframes id='m2XZn'>

      <tfoot id='m2XZn'></tfoot>

      1. <i id='m2XZn'><tr id='m2XZn'><dt id='m2XZn'><q id='m2XZn'><span id='m2XZn'><b id='m2XZn'><form id='m2XZn'><ins id='m2XZn'></ins><ul id='m2XZn'></ul><sub id='m2XZn'></sub></form><legend id='m2XZn'></legend><bdo id='m2XZn'><pre id='m2XZn'><center id='m2XZn'></center></pre></bdo></b><th id='m2XZn'></th></span></q></dt></tr></i><div id='m2XZn'><tfoot id='m2XZn'></tfoot><dl id='m2XZn'><fieldset id='m2XZn'></fieldset></dl></div>

        Vue中jsx不完全应用指南小结

        时间:2023-12-13

      2. <legend id='qG9r2'><style id='qG9r2'><dir id='qG9r2'><q id='qG9r2'></q></dir></style></legend>

              <tfoot id='qG9r2'></tfoot>
            • <small id='qG9r2'></small><noframes id='qG9r2'>

              <i id='qG9r2'><tr id='qG9r2'><dt id='qG9r2'><q id='qG9r2'><span id='qG9r2'><b id='qG9r2'><form id='qG9r2'><ins id='qG9r2'></ins><ul id='qG9r2'></ul><sub id='qG9r2'></sub></form><legend id='qG9r2'></legend><bdo id='qG9r2'><pre id='qG9r2'><center id='qG9r2'></center></pre></bdo></b><th id='qG9r2'></th></span></q></dt></tr></i><div id='qG9r2'><tfoot id='qG9r2'></tfoot><dl id='qG9r2'><fieldset id='qG9r2'></fieldset></dl></div>
                  <bdo id='qG9r2'></bdo><ul id='qG9r2'></ul>
                    <tbody id='qG9r2'></tbody>
                • Vue中jsx不完全应用指南小结

                  什么是JSX?

                  JSX是JavaScript的一种语法扩展,允许我们在JavaScript中编写类似HTML的代码,使得开发者可以使用一种更直观的方式去创建UI。类似于下面的代码:

                  const element = <h1>Hello, world!</h1>;
                  

                  在Vue的官方文档中提到,Vue可以使用JSX代替原生的模板语法来进行渲染。

                  为什么要使用JSX?

                  使用JSX可以让开发者更快速、直观地编写代码。这里列举几个使用JSX的优点:

                  • 可以使用原来熟悉的HTML语法。
                  • 可以避免模板语法过长时的嵌套层级过深问题。
                  • 可以更好地刻画组件的结构。

                  Vue中使用JSX的限制

                  在Vue中使用JSX要满足以下限制:

                  • 必须有JSX解析器。
                  • 必须配合Babel的插件使用。
                  • 不能直接在JSX中使用组件,需要先进行import。

                  Vue中JSX的应用

                  第一步:创建Vue项目

                  vue create jsx-demo
                  

                  使用Vue CLI脚手架创建一个Vue项目,命名为jsx-demo。

                  第二步:安装相关依赖

                  npm install babel-plugin-transform-react-jsx babel-helper-vue-jsx-merge-props @vue/babel-preset-jsx -D
                  

                  这里需要安装Babel的一些依赖,使用JSX时需要使用到这些依赖。

                  第三步:配置Babel

                  在babel.config.js中进行配置。

                  module.exports = {
                    presets: [
                      '@vue/cli-plugin-babel/preset'
                    ],
                    plugins: [
                      [
                        'transform-react-jsx',
                        {
                          'pragma': 'createElement' // 需要使用createElement替代JSX语法的标签
                        }
                      ],
                      [
                        'babel-helper-vue-jsx-merge-props', // 添加属性到组件中
                      ]
                    ]
                  };
                  

                  这里需要使用到transform-react-jsxbabel-helper-vue-jsx-merge-props两个Babel的插件,还需要设置pragmacreateElement

                  第四步:使用JSX

                  在Vue组件中使用JSX。

                  <template>
                    <div id="app">
                      {message}
                      <comp flag={true} obj={{
                        name: 'vue',
                        version: 2
                      }}>
                        <span>{ '作为插槽的内容' }</span>
                      </comp>
                    </div>
                  </template>
                  
                  <script>
                  import Comp from './components/Comp.vue';
                  
                  export default {
                    name: 'App',
                    components: {
                      Comp
                    },
                    data() {
                      return {
                        message: 'Hello Vue!'
                      };
                    }
                  };
                  </script>
                  

                  在示例中我们引入了一个单文件组件Comp.vue,并使用其进行了jsx的渲染,组件需要先进行import。

                  <template>
                    <div>
                      <h2>{props.title}</h2>
                      {
                        props.flag && (
                          <ul>
                            {
                              Object.entries(props.obj).map(([key, val]) => (
                                <li key={key}>{key}: {val}</li>
                              ))
                            }
                          </ul>
                        )
                      }
                      {this.$slots.default}
                    </div>
                  </template>
                  
                  <script>
                  export default {
                    name: 'Comp',
                    props: {
                      title: String,
                      flag: Boolean,
                      obj: Object
                    }
                  }
                  </script>
                  

                  在组件Comp.vue中也使用了JSX实现了在组件中使用JSX。

                  总结

                  使用JSX可以让代码编写更加简介明了、模板层级更加扁平化,增加了组件的可复用性。但使用JSX也需要注意其依赖和限制,需要正确配置Babel的插件,以及导入Vue组件需要先进行import。在项目中使用JSX可以根据实际需求来尝试使用,在需要的时候引入JSX来增加代码的可读性以及可维护性。

                  上一篇:Django配置Bootstrap, js实现过程详解 下一篇:利用CSS、JavaScript及Ajax实现图片预加载的方法

                  相关文章

                    <bdo id='YQzBB'></bdo><ul id='YQzBB'></ul>

                • <tfoot id='YQzBB'></tfoot>

                  <small id='YQzBB'></small><noframes id='YQzBB'>

                • <legend id='YQzBB'><style id='YQzBB'><dir id='YQzBB'><q id='YQzBB'></q></dir></style></legend>

                  1. <i id='YQzBB'><tr id='YQzBB'><dt id='YQzBB'><q id='YQzBB'><span id='YQzBB'><b id='YQzBB'><form id='YQzBB'><ins id='YQzBB'></ins><ul id='YQzBB'></ul><sub id='YQzBB'></sub></form><legend id='YQzBB'></legend><bdo id='YQzBB'><pre id='YQzBB'><center id='YQzBB'></center></pre></bdo></b><th id='YQzBB'></th></span></q></dt></tr></i><div id='YQzBB'><tfoot id='YQzBB'></tfoot><dl id='YQzBB'><fieldset id='YQzBB'></fieldset></dl></div>