我正在评估vuejs,除了在html模板中使用用于指令的域特定语言之外,我非常喜欢它。 它(至少在理论上)是否可以在没有dns的情况下使用vuejs并在javascript中以编程方式指定指令中的信息?
示例:
有没有办法在JavaScript中分别指定<a v-on:click="doSomething">...</a>
这样的模板而没有指令和指令?
答案 0 :(得分:2)
从Vue 2.0开始,在vue组件中使用support有JSX。
如果您想完全避免使用任何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中使用渲染功能没有什么大的缺点,这就是我正在寻找的东西。