我目前正在评估 vuejs,我非常喜欢它,除了在 html 模板中使用用于指令的域特定语言。是否(至少理论上)可以在没有 dns 的情况下使用 vuejs 并在 javascript 中以编程方式指定指令中的信息?
例子:
有没有办法<a v-on:click="doSomething">...</a>
在 JavaScript 中分别指定没有指令和指令的模板?
我目前正在评估 vuejs,我非常喜欢它,除了在 html 模板中使用用于指令的域特定语言。是否(至少理论上)可以在没有 dns 的情况下使用 vuejs 并在 javascript 中以编程方式指定指令中的信息?
例子:
有没有办法<a v-on:click="doSomething">...</a>
在 JavaScript 中分别指定没有指令和指令的模板?
从 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 ]
);
},
});
您的问题的简短回答是“不”,没有(好的)方法可以使用模板并以编程方式对其应用指令。您最终会为指令系统编写自己的替代品。
你没有解释你不喜欢指令的什么地方,但由于它们是 Vue 中模板概念的核心,我不确定说你喜欢 Vue 除了它们是否有意义。
模板的作用是描述应用程序的外观和行为,在视图模型方面,它是一个 API。viewmodel 代码提供了 API 的实现。在不改变模板的情况下改变行为的愿望似乎武断且毫无意义,或者至少误解了模板的目的。使模板不那么具有表现力意味着它更难理解:任何东西都可以绑定到任何东西,如果不查看实现代码你就不会知道。
通过进一步挖掘 vuejs 文档,我似乎找到了我一直在寻找的东西。
在 vuejs 2 中,框架引入render
了允许从声明式(模板/指令)切换到组件的命令式(JavaScript)定义的功能。
如果我做对了,并且在 vuejs 中使用渲染函数没有重大缺点,这就是我正在寻找的。