2

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

例子:

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

4

3 回答 3

2

从 Vue 2.0 开始,支持在 Vue 组件中使用JSX

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

链接帖子中的示例:

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 ]
    );
  },
});
于 2018-02-12T17:36:32.993 回答
1

您的问题的简短回答是“不”,没有(好的)方法可以使用模板并以编程方式对其应用指令。您最终会为指令系统编写自己的替代品。

你没有解释你不喜欢指令的什么地方,但由于它们是 Vue 中模板概念的核心,我不确定说你喜欢 Vue 除了它们是否有意义。

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

于 2018-02-12T16:59:37.123 回答
0

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

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

如果我做对了,并且在 vuejs 中使用渲染函数没有重大缺点,这就是我正在寻找的。

于 2018-02-14T14:00:33.900 回答