使用不带指定域特定语言的vuejs

时间:2018-02-12 13:33:17

标签: javascript vue.js vuejs2 vuejs-directive

我正在评估vuejs,除了在html模板中使用用于指令的域特定语言之外,我非常喜欢它。 它(至少在理论上)是否可以在没有dns的情况下使用vuejs并在javascript中以编程方式指定指令中的信息?

示例:

有没有办法在JavaScript中分别指定<a v-on:click="doSomething">...</a>这样的模板而没有指令和指令?

3 个答案:

答案 0 :(得分:2)

从Vue 2.0开始,在vue组件中使用supportJSX

如果您想完全避免使用任何DSL,可以直接使用API(Vue的JSX转换插件)目标的babel-plugin-transform-vue-jsx

来自链接帖子的示例:

new Vue({
  el: '#app',
  data: {
    msg: 'Click to see the message'
  },
  methods: {
    hello () {
      alert('This is the message')
    }
  },
  render (createElement) {
    return createElement(
      'span',
      {
        class: { 'my-class': true },
        style: { cursor: 'pointer' },
        on: {
          click: this.hello
        }
      },
      [ this.msg ]
    );
  },
});

答案 1 :(得分:1)

对你的问题的简短回答是&#34; no&#34;,没有(好的)方法来使用模板并以编程方式将指令应用于它。你最终会为指令系统编写自己的替代品。

你不能解释你对指令的不喜欢,但由于它们是Vue中模板概念的核心,我不确定说你是否有意义像Vue除了他们。

模板的作用是根据viewmodel来描述应用程序的外观和行为,它是一个API。 viewmodel代码提供API的实现。在不改变模板的情况下改变行为的愿望似乎是任意和毫无意义的,或者至少误解了模板的目的。使模板不那么具有表现力意味着它不太容易理解:任何东西都可以绑定到任何东西,如果不查看实现代码,你就不会知道。

答案 2 :(得分:0)

通过进一步深入了解vuejs文档,我似乎找到了我一直在寻找的东西。

使用vuejs 2,框架引入了render函数,允许从声明(模板/指令)切换到组件的命令式(JavaScript)定义。

如果我做对了并且在vuejs中使用渲染功能没有什么大的缺点,这就是我正在寻找的东西。